HMD Motion Emulation

Important

All Oculus Quest developers MUST PASS the concept review prior to gaining publishing access to the Quest Store and additional resources. Submit a concept document for review as early in your Quest application development cycle as possible. For additional information and context, please see Submitting Your App to the Oculus Quest Store.


We're no longer accepting submission of 32-bit Oculus Quest apps. Any new or updated Oculus Quest application needs to be 64-bit. Please contact Oculus if you are unable to comply with this policy. Oculus Go and Gear VR apps will not be affected by this change.

Use HMD Motion Emulation to simulate the movement of a user directly in the Unity Editor.

Any app that uses OVRCameraRig or OVRPlayerController prefabs will enable the emulator. Otherwise, you can attach the OVRHeadsetEmulator to a game object.

To use the emulator, play/preview the scene in the editor and use your mouse and keyboard to:

InputAction
Ctrl (hold) + mouse movementUpdate headset pitch and yaw
Ctrl (hold) + alt + mouse movementUpdate headset roll
Ctrl (hold) + mouse wheelUpdate headset height/elevation
Ctrl (hold) + middle mouse buttonReset the pose to scene default

All in-editor manipulation is done while holding the Ctrl button on Windows. HMD Motion Emulation is not supported on Mac at this time.

By default, OVRHeadsetEmulator.opMode is set to EditorOnly, which make it effective only in the Unity Editor preview window. Set to AlwaysOn to activate the function in standalone builds.

By changing OVRHeadsetEmulator.activateKeys and OVRHeadsetEmulator.pitchKeys, you can change the default key-bindings.

Any updates/translation made in the Editor will also be reflected in the HMD.

If the HMD Motion Emulation is not working, check if OVRHeadsetEmulator is properly attached, and try stopping the scene and restarting.

How it Works

OVRHeadsetEmulator modifies OVRManager.headPoseRelativeOffsetRotation and OVRManager.headPoseRelativeOffsetTranslation. You can also write your own script or use Unity animation clips to modify those properties to automatically change the HMD pose.