BeaVR Unity Project
September 29, 2025 Β· View on GitHub
Unity 6.2 | OpenXR | XR Hands
π Project Structure
Assets/
βββ Scripts/
β βββ Gesture Detection/
β β βββ GestureDetectorXR.cs # Hand tracking & pinch detection
β βββ Network/
β β βββ NetMQController.cs # NetMQ messaging
β βββ NetworkManager.cs # Network config
β βββ UI/ # IP input, canvas switching
β βββ Camera Stream Scripts/
β β βββ CameraOneStreamer.cs # Receive camera feed
β βββ GraphStream.cs # Receive graph data
β
βββ Resources/Configurations/
βββ Network.json # IP addresses & ports
π Data Flow
XR Hands Subsystem
β
GestureDetectorXR (26 joints/hand)
β
NetMQController.SendMessage()
β
[Network] βββββββββββββββ
β β
Server CameraOneStreamer
GraphStream
Message Format: "x,y,z,x,y,z,..." (78 floats per hand)
Core Components
| Component | Purpose |
|---|---|
GestureDetectorXR.cs | XR Hands tracking β NetMQ |
NetMQController.cs | ZeroMQ pub/sub messaging |
NetworkManager.cs | Load Network.json config |
CameraOneStreamer.cs | Receive & display camera |
GraphStream.cs | Receive & display graphs |
Hand Joint Order (XR Hands)
0:Wrist 1:Palm
2-6: Thumb (MetacarpalβTip)
7-11: Index
12-16: Middle
17-21: Ring
22-26: Little
βοΈ Unity Setup
Required Packages
- XR Plugin Management
- XR Hands (v1.6.1)
- XR Interaction Toolkit
- NetMQ 4.0.2.1 (NuGet)
Project Settings
XR Plug-in Management β OpenXR
β OpenXR provider
β Meta XR Hand Tracking Aim
Scene Requirements
XR Origin (XR Rig)
βββ Camera Offset
β βββ Main Camera
βββ [Controllers/Hands]
EventSystem
βββ XR UI Input Module
Canvas (World Space)
βββ Tracked Device Graphic Raycaster
Building for Quest
| Setting | Value |
|---|---|
| Platform | Android |
| Scripting Backend | IL2CPP |
| Target API Level | 32+ |
| Texture Compression | ASTC |
| XR Provider | OpenXR (Android tab) |
Build: File β Build Settings β Build and Run
Troubleshooting
Common Issues:
- NuGet packages not loading: Reinstall NuGet packages (NetMQ, AsyncIO, NaCl.Net)
- Hand tracking not working: Enable OpenXR Hand Tracking Subsystem in Project Settings
- Build settings: Platform (Android) and Target API Level (32+) are already configured
π¦ Dependencies
NuGet (in Assets/Packages/):
- NetMQ 4.0.2.1
- AsyncIO 0.1.69
- NaCl.Net 0.1.13
Unity:
- XR Hands (1.6.1)
- XR Interaction Toolkit
- TextMesh Pro
OVR vs OpenXR
This project uses OpenXR with Meta XR Interaction building blocks instead of the legacy Oculus Integration SDK.
Key Differences:
- Hand Tracking: XR Hands provides 26 joints per hand vs OVR's bone structure
- Joint Order: Different ordering - ensure receiver code matches XR Hands format (see above)
- Scene Setup: Uses Meta XR Interaction building blocks for camera rig and UI interaction
License
MIT License