Inspiration
Virtual try-on is a $10B+ industry, but the experience is flat - 2D overlays on phone screens. We asked: what if you could step INTO a fashion showroom, see garments on life-size mannequins, and try them on yourself using AI?
What it does
VR Try-On is an immersive WebXR shopping experience for Meta Quest. Users enter a virtual showroom featuring real fashion brands (4psy.com shop), browse garments displayed on 3D mannequins, and generate AI-powered virtual try-ons by uploading a selfie. The result appears in a VR mirror frame - see yourself wearing the clothes before buying.
User Flow:
- Enter VR → Choose shop → Browse mannequin displays
- Point at garment → See details (price, materials, sizes)
- Upload selfie → AI generates try-on image (25-35s)
- View result in VR mirror → Save, share, or buy
How we built it
Pure WebXR + Three.js - No Unity, no Unreal. Just 164KB of vanilla JavaScript delivering 95+ FPS on Quest 3S.
Key Technical Achievements:
- Discovered and solved critical WebXR preloading bug (GLB models loaded during VR won't render)
- Body-directed locomotion system (reduces motion sickness)
- Custom procedural UI (Instagram-style frames, frosted glass panels) without GLTF bloat
- ECS architecture supporting 1000+ interactive objects
- Memory budget system preventing Quest heap exhaustion
Challenges we ran into
The biggest: models loaded during VR sessions don't render until you exit and re-enter. We tried 12+ workarounds (forcing material updates, texture re-uploads, scene graph manipulation) before discovering the solution: preload ALL assets before VR, toggle visibility during session.
What we learned
WebXR on Quest requires a completely different mental model than desktop Three.js. The XR render loop isn't requestAnimationFrame. Textures need re-uploading. DRACO decoders must be local. Among others :)
Built With
- cloudflare
- replicateapi
- supabase
- three.js
- vanillajs
- vite
- webxr
Log in or sign up for Devpost to join the conversation.