Use Wide Motion Mode
Wide Motion Mode (WMM) allows you to track hands and display plausible hand poses even when the hands are outside the headset’s field of view, improving social presence and wide motion tracking. This is achieved by running Inside Out Body Tracking (IOBT) under the hood and using the estimated hand position when hand tracking is lost.
- Improved social and self presence by providing plausible hand poses even when your hands are outside your FOV.
- More reliable wide motion interactions (arm swings, backpacks, throws, etc.)
- Reduced gesture and interaction failures due to tracking loss when the user turns their head.
- Arm swing based locomotion, where users use their arms to move around the game, such as Echo VR.
- While the system will always provide a hand pose, it will not be accurate when hand tracking is lost- the system uses body tracking data for approximate position and last hand pose as the pose itself.
- You may also see a slight regression in position accuracy due to smoothing when transitioning from body tracking based hand pose to hand tracking based hand pose as hand tracking is reestablished.
- WMM can be less robust in extremely low light. In case of low light conditions, the system will revert to standard hand tracking.
- Supported devices: Quest 3 and all future devices.
- Unity 2022.3.15f1+ (Unity 6+ is recommended)
- Meta XR Core SDK v62+
- IOBT/ WMM will not run when passthrough and full body (FBS) are running along with FMM or Multimodal.
- When using Inside Out Body Tracking, the hands pose exposed via MSDK already includes WMM like fused hands. If you plan to use MSDK and consume hands from ISDK/ hands API, turn on WMM to reduce hand pose mismatch between MSDK and hands API.
The OpenXR API for WMM is called XR_META_hand_tracking_wide_motion_mode
. It’s a simple API that declares a new structure type of XrHandTrackingWideMotionModeInfoMETA
. That struct contains an enum
value named XrHandTrackingWideMotionModeMETA
, which currently only has one available value: XR_HAND_TRACKING_WIDE_MOTION_MODE_HIGH_FIDELITY_BODY_TRACKING_META
.
To enable WMM, create a XrHandTrackingWideMotionModeInfoMETA
struct.
Assign the next pointer argument of xrCreateHandTracker
to that struct.
In the AndroidManifest.xml file, set the body tracking manifest values as follows.
<!-- Body extension requirements -->
<uses-feature android:name="com.oculus.software.body_tracking" />
<uses-permission android:name="com.oculus.permission.BODY_TRACKING" />
How can I confirm WMM is running on my headset?
In your headset, you should see improved tracking of hands outside of your headset’s field of view.
Can I evaluate the feature on my headset without changing my code?
Yes, you can test WMM via adb commands to try the feature without changing your code.