Inspiration

VibeStep started as a mobile dance maker: you pose a 2D figure joint by joint, lay music on the same grid, and post it to a shared feed. It reached Google Play in September 2026.

On a phone, though, you make a dance with your thumb. Dancing is something your body already knows how to do. A headset that tracks your hands could let people make a dance by moving, then share it with friends on their phones.

What it does

VibeStep VR is a hands-only companion to the mobile app. It uses the same accounts, the same feed, and the same dances.

  • Watch. Scroll a spatial feed of real danc

VibeStep VR is a hands-only companion to the mo accounts, the same feed, and the same dances.

  • Watch. Scroll a spatial feed of real dances posted from phones and headsets. Music is synthesized on-device from each post's instrument loop, and the dancer moves in time with it.
  • Record a move. A figure faces you like a mirror. After a countdown it copies your head and hands and captures eight keyframes, which are saved to your motion library in the same format the mobile app uses.
  • Hum a melody. Hum for eight beats. On-device pitch tracking turns the take into an instrument loop that you can preview, save, and later edit in the mobile sequencer.
  • Post. Combine a motion, a song, and a backdrop. Type a title on an in-world keyboard (English or Korean) and publish it publicly or privately.
  • React. Leave emoji reactions, read comments, and try outfits on the figure in a fitting room.

Sign-in works without a phone: create an email account inside the headset, or link an existing mobile account with a short code or QR.

How I built it

Unity 6 with URP and OpenXR, using XR Hands for hand tracking. I wrote a small interaction layer instead of using a full interaction toolkit. Thumb–index pinch presses nearby buttons, and an index-finger ray reaches distant panels. Every screen works without controllers.

The motion code (skeleton, codec, body-pose mapping, humming analysis) lives in an assembly that cannot reference XR, so it is tested without a headset. The VR client talks to the existing Go backend throirectory, so mobile and VR never disagree about the data.

Challenges I ran into

  • No elbows, no legs. Tracking gives me a hure is built so arm direction alone reads as a pose,ouches and jumps.
  • Sign-in without Google Play services. Queso I added email accounts and phone-to-headset linking that land on the same user.
  • Pinch precision. Jitter right before a pinch made buttons misfire until I stabilized the pointer at that moment.

Accomplishments that I'm proud of

A dance recorded with your body in VR shows up in a friend's phone feed, and a hummed melody opens in the mobile sequencer. It's one community, not a port.

What I learned

Hands-only input rewards fewer, larger targets. Most of my early buttons were sized for a phone, not a fingertip. And testing the motion code without a headset kept the slow device loop for feel, not

What's next for VibeStep VR

Grabbing the figure's joints directly to fine-tgs, and performance profiling for a public Horizon Store launch.

Built With

  • c#
  • dart
  • firebase-auth
  • firestore
  • flutter
  • gcp
  • go
  • meta-quest
  • metaquest
  • openxr
  • quest3
  • unity
  • urp
  • xr-hands
Share this project:

Updates

Submission history