Windows Mixed Reality

The Windows Mixed Reality platform supports various Headsets and Motion Controllers based on the Microsoft Mixed Reality platform.

Prerequisites

InstantVR

Windows Mixed Reality is not supported in InstantVR.

Humanoid Control

Windows Mixed Reality is supported in Humanoid Control VR, Plus and Pro packages.

Hardware

All Mixed Reality Headsets and Motion Controllers are supported

Operating System

Windows Mixed Reality is only supported on Microsoft Windows Fall Creators Editor or newer.

Unity

Unity versions 2017.4 up to 2019.4 are supported.

Unity version 2020.1 and higher are supported using Unity XR.

Setup

Ensure Universal Windows Platform is selected as platform in the Unity Build settings found in the File Menu.

Virtual Reality Supported needs to be enabled in Edit Menu->Project Settings->Player->XR Settings. Windows Mixed Reality needs to be added to the Virtual Reality SDKs.

For full Windows Mixed Reality support you needs to ensure Windows MR Support is enabled in Edit Menu->Preferences->Humanoid.

Disabling Windows MR Support ensures that no code related to Windows Mixed Reality is included in the build.

Targets

To enable Windows Mixed Reality tracking for an avatar, First Person Camera and Windows MR need to be enabled in the Humanoid Control component.

Head Target

Full positional and rotational tracking is supported.

Hand Targets

Full positional and rotational tracking is supported. Full positional tracking is only working when the controllers are visible by the cameras in the headset.

Controller input

The buttons of the Motion Controllers can be accessed using the Game Controller Input. The buttons are mapped as follows:

Left Controller

Touchpad movementscontroller.left.stickHorizontal, .stickVertical
Touchpad touchcontroller.left.stickTouch
Stick movementscontroller.left.stickHorizontal, .stickVertical
Stick presscontroller.left.stickButton
Triggercontroller.left.trigger1
Gripcontroller.left.trigger2
Menu buttoncontroller.left.option

Right Controller

Touchpad movementscontroller.right.stickHorizontal, .stickVertical
Touchpad touchcontroller.right.stickTouch
Stick movementscontroller.right.stickHorizontal, .stickVertical
Stick presscontroller.right.stickButton
Triggercontroller.right.trigger1
Gripcontroller.right.trigger2
Menu buttoncontroller.right.option

Calibration

The tracking position and orientation can be calibrated during gameplay by calling the Calibrate() function on the HumanoidControl object. This is often implemented using the Controller Input component.