Context
Problem had shape before code did.
A B2B site for a white-label crypto casino platform. A roulette world shows the craft; the scroll then walks operators through product, payments, games, brands, launch, and compliance.
- Built the roulette table and casino world procedurally in Three.js, so light, materials, and camera stay editable in code.
- Tied the camera to the site's single Lenis scroll signal. No second animation loop, no ScrollTrigger.
- Added a full fallback ladder: client-only hydration, desktop and phone poses, quality tiers, reduced motion, and poster frames.
- Synthesized the lounge ambience and wheel strikes with the Web Audio API, behind a sound toggle.
- Rendering
- Content, navigation, and the demo form work before or without WebGL.
- Motion
- The scene follows the page's scroll signal. It never owns scrolling.
- Audio
- Sound is opt-in and never needed to understand the page.