OpenVR (SteamVR) can be used to support a wide range of HMDs, controllers and trackers.

Note: Humanoid Control does not need the SteamVR SDK installed in the project because it uses the low-level OpenVR APII.

The Vive Trackers are documented separately.

Information about the use of VRTK with Humanoid Control is found here.


Humanoid Control

OpenVR is supported in the Humanoid Control VR, Plus and Pro packages


Humanoid Control v2 supports Unity 5.6 up to Unity 2019.3.

Humanoid Control v3 supports Unity 2017.4 LTS up to Unity 2019.3

Unity versions 2020.1 and higher are supported through Unity XR.


HTC Vive, Valve Index, Oculus and Mixed Reality are supported through OpenVR .

Operating System

OpenVR is supported on Windows 10.


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

Note: if both Oculus and SteamVR need to be supported in one build, make sure Oculus is listed higher than OpenVR in the Virtual Reality SDKs:

Humanoid Control v2.1 and earlier

In Humanoid Control v2.1 and earlier, OpenVR needs to be enabled in the Edit Menu->Preferences->Humanoid->SteamVR Support.

Humanoid Control v2.2

In Humanoid Control v2.2 and higher, three options are available:

  • Disabled: OpenVR is not supported
  • Open VR 1: legacy OpenVR support as in Humanoid Control v2.1 and earlier
  • Open VR 2: OpenVR support using action manifests and support for Skeletal Input. The action manifests are found in Assets/Humanoid/Scripts/Extensions/OpenVR/.

Humanoid Control v3

In Humanoid Control v3 and higher, OpenVR needs to be enabled in the Edit Menu->Preferences->Humanoid->SteamVR Support. Legacy OpenVR is no longer supported.

For all Humanoid Control versions: Disabling SteamVR Support ensures that no code related to SteamVR is included in the build.


To enable body tracking with OpenVR for an avatar, SteamVR or OpenVR needs to be enabled in the Humanoid Control component.

This option will be enabled automatically when OpenVR is added to the Unity Virtual Reality SDKs.

Head Target

First Person Camera needs to be supported for the OpenVR HMD. For convenience, this option is also found on the Humanoid Control script.

The SteamVR or OpenVR HMD option is added with a reference to the Real World HMD:

Hand Target

The Steam VR Controller needs to be enabled on the Hand Targets for controller support.

Controller models are shown in the scene when Humanoid Control->Settings->Show Real Objects is enabled. These models can be moved in the scene to place the controllers to the right position relative to the hands of the avatar. A reference to these transforms is found in the Tracker Transform field.

Only when using OpenVR 2, an additional option will be available to enable the SteamVR Skeletal Input.

Controller Input

The buttons of the Steam VR controller can be accessed using the Game Controller Input. The buttons are mapped as follows:

Left Controller

Menu Buttoncontroller.left.option, .button[0]
Touchpad touchcontroller.left.stickTouch
Touchpad presscontroller.left.stickButton
Touchpad movementscontroller.left.stickHorizontal .stickVertical

Right Controller

Menu Buttoncontroller.right.option, .button[0]
Touchpad touchcontroller.right.stickTouch
Touchpad presscontroller.right.stickButton
Touchpad movementscontroller.right.stickHorizontal, stickVertical


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.