Inspiration

Luna Yoga was inspired by the growing need for calming, accessible meditation tools in a high-stress world. Our goal was to merge ancient mindfulness practices with immersive VR so users could see, hear, and feel meditation not just listen passively.

Research suggests 528 Hz (โ€œLove Frequencyโ€) may reduce cortisol, while 432 Hz promotes deep relaxation. We drew inspiration from:

  • Solfeggio frequencies and sound healing
  • Chakra energy systems
  • Hand mudras as tactile meditation cues
  • Controlled breathing cycles for nervous system regulation

Vision: a fully immersive, controller-free meditation space powered only by natural hand interaction.


What It Does

Luna Yoga is an immersive WebXR meditation experience featuring:

๐Ÿง˜ Breathing 3D Model

  • Virtual figure synced to a 4โ€“2โ€“6โ€“2 breath cycle
  • ~15% vertical and 4.5% horizontal expansion
  • Smooth easing: [ \text{easeInOut}(t)= \begin{cases} 2t^2 & t<0.5\ -1+(4-2t)t & t \ge 0.5 \end{cases} ]

๐ŸŽต Healing Soundscape

Procedurally generated tones:

  • 432 Hz, 528 Hz, 136.1 Hz, 396 Hz, 639 Hz, 108 Hz
  • Breathing modulation at 0.08 Hz
  • Shimmer effect at 0.05 Hz

๐ŸŒˆ Mudra Interaction

Four hand gestures trigger visual effects:

  • Gyan (Blue), Anjali (Pink), Raised (Gold), Open Palms (Green)
    Each includes:
  • 2.0ร— flash (200 ms)
  • Sustained glow
  • Emissive material update

โœจ Visual Enhancements

  • Breath-synced energy rings
  • Dynamic breathing light
  • Proximity glow: [ \text{intensity} = 1 - \frac{d}{r} ]

๐ŸŽฎ Controller-Free Hand Tracking

  • WebXR Hand Tracking API
  • Two-hand scaling (0.3ร—โ€“2.0ร—)
  • Single-hand repositioning via lerp: [ \text{lerp}(a,b,t)=a+t(b-a) ]

๐ŸŽจ Themes

11 ambient environments (Ocean, Forest, Aurora, Zen, etc.)


How We Built It

Tech Stack

  • Three.js โ€“ 3D rendering
  • IWSDK / WebXR โ€“ VR + hand tracking
  • TypeScript โ€“ architecture
  • Web Audio API โ€“ procedural sound
  • GLTFLoader โ€“ 3D model handling

Key Systems

  • Dynamic breathing animation
  • Audio oscillators + LFO modulation
  • Procedural mudra glows
  • Inverse-distance proximity detection

Challenges

Breathing vs. Repositioning

Breathing animations conflicted with user scaling. Solution: dynamic base scale tracking: [ \text{scale}_{final}=\text{baseScale}\times(1+0.15\,\text{breathProgress}) ]

No Built-In Animations

The model lacked animations, so we built procedural glow effects instead.

Browser Audio Blocking

Browsers blocked autoplay, so we used delayed AudioContext initialization + user-triggered fallback.


Accomplishments

  • Smooth, elegant breathing visuals
  • Science-informed healing audio
  • Natural, controller-free interaction
  • Maintained ~60 FPS with only ~1โ€“2 FPS overhead

Whatโ€™s Next

  • Holographic visual modes
  • Advanced gestures (pinch, swipe, levitation)
  • Biometric integration (heart rate, breath sensing)
  • AI-guided & multi-user meditation

Built With

Share this project:

Updates