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 movements | controller.left.stickHorizontal, .stickVertical |
Touchpad touch | controller.left.stickTouch |
Stick movements | controller.left.stickHorizontal, .stickVertical |
Stick press | controller.left.stickButton |
Trigger | controller.left.trigger1 |
Grip | controller.left.trigger2 |
Menu button | controller.left.option |
Right Controller
Touchpad movements | controller.right.stickHorizontal, .stickVertical |
Touchpad touch | controller.right.stickTouch |
Stick movements | controller.right.stickHorizontal, .stickVertical |
Stick press | controller.right.stickButton |
Trigger | controller.right.trigger1 |
Grip | controller.right.trigger2 |
Menu button | controller.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.