Exercise-powered VR media player: Move2See is a WebXR-based VR application that combines media playback with physical activity tracking. Keep moving to keep watching. Your exertion level controls playback speed, encouraging you to stay active during your entertainment time. It has been tested on the Meta Quest 3 and includes built-in support for body tracking.
-
Configuration Management
- Allowed IP address ranges (supports wildcards like
192.168.*) - Password protection for Play Mode
- Passthrough dimming (0-100% opacity)
- Server port configuration
- Player weight (for calorie estimation)
- Allowed IP address ranges (supports wildcards like
-
Playlist Management
- Create, rename, and delete playlists
- Drag-and-drop media file uploads
- Support for:
.mp4,.webm,.mp3,.ogg,.wav - Rename media display names
-
VR Interface
- WebXR immersive-vr experience
- Passthrough dimming for reduced distraction
- Floating media player screen
-
Playback Controls
- Play/Pause
- Skip forward/backward 30 seconds
- Previous/Next media in playlist
- Screen position and scale adjustment
-
Exertion Tracking
- Real-time movement analysis using controller and headset tracking
- Rewards arm movement over wrist wiggling
- Bonus points for vertical movement (squats, jumps)
- Bonus points for head/body translation
-
Adaptive Playback
- Playback speed scales with exertion level
- No movement = video pauses
- Red warning border when exertion is too low
- Passthrough dimming reduces when not exercising
-
Difficulty Levels
- Off: No exertion required
- Easy: ~2 METs (light activity)
- Normal: ~4 METs (moderate activity)
- Hard: ~6 METs (vigorous activity)
- Extreme: ~8 METs (very vigorous)
-
Session Statistics
- Calories burned estimation
- Progress tracking
- Go 1.21 or later — Download from https://go.dev/dl/
- A WebXR-compatible VR headset (Meta Quest, etc.)
- Modern web browser with WebXR support
Run build.py with Python. This will build executables for all platforms and place them in the build/ folder.
Run the executable from the build/ folder.
- Admin Mode:
http://localhost:33333/admin(local access only) - Play Mode:
http://[server-ip]:33333/(any allowed client)
For VR, you'll need to access the Play Mode URL from your VR headset's browser.
Note that
- Warm up first — Start with Easy difficulty and work up
- Use full arm movements — Wrist movements don't count as much
- Include vertical motion — Squats and jumps earn bonus calories
- Move your whole body — Head/body translation is rewarded
- Stay in the zone — Maintain the target MET level for smooth playback
MIT License - Use freely for personal and commercial projects.