OpenXR Motion compensation
Introduction
Motion compensation is designed to cancel out the VR headset movements caused by your motion platform. For example, if the platform rolls to the left, motion compensation will apply a virtual roll to the right, keeping your viewpoint stable in VR. As of now, no official method for motion compensation is provided by VR frameworks. For Open XR BuzzteeBear aka Sebastian Veith does provide us a motion compensation layer.
Motion compensation on OpenXR wouldn’t exist without his work. Don’t hesitate to support BuzzteeBear’s efforts in any way you can!
As with any unofficial feature, it may not work with every game or headset.
For simplicity, in this guide we will use the following abbreviations:
"Open XR motion compensation" to "MC" or "MC layer"
"Open XR motion compensation center or rotation" to "COR"
SimHub and Open XR MC roles
SimHub provides the "computations": based on your dimension inputs and the current motion target position, it estimates the required compensation (Heave, Sway, Surge, Yaw, Pitch, Roll).
This estimation is based on your seat base position and sent to the OpenXR Motion Compensation layer.
The OpenXR Motion Compensation layer performs the key compensation step: it applies the received values to the VR view, using the "COR" as the reference point (see COR ? COR ? COR ? below).
Open XR what is it ?
OpenXR is a modern, open standard for Virtual Reality that works across all major headsets. It replaces older systems like OpenVR and offers better performance, smoother visuals, and more advanced features like motion compensation. Keep in mind: for OpenXR to work, the game you’re playing must support it. iRacing and EA WRC are examples of games that support OpenXR, among many others.
COR ? COR ? COR ?
Accurate motion compensation relies heavily on the COR .... COR stands for "center of rotation". It’s a reference point in space that must align between your VR view and your motion software’s computations.
Since complex platforms often don't have a single center of rotation, SimHub uses the seat base as the COR and computes all compensation around it.
Don't assume the COR must be set at the same location as the other softwares in the game. In SimHub the in-game COR must be set to the seat base.
Getting Started
Dimensions and speed input
In SimHub: make sure to enter the correct dimensions in the geometry settings.
Every dimensions matters, both for accurately calculating your platform’s real-world motion and for estimating your sitting position for compensation.
For all axes (Surge, TL, 2 DOF, 3 DOF), adjust your speed limiters to match your real actuators' capabilities as closely as possible. If the capabilities are overestimated, SimHub will assume the platform moves faster than it actually does, which can lead to inaccurate compensation.
Open XR setup
If you were using Open XR with another software, or custom settings
Make sure to back up your settings (Go into
%localappdata%\OpenXR-MotionCompensation
and copy all the files)Uninstall Open XR and check "delete user settings" during the uninstallation process
Then go into
%localappdata%\OpenXR-MotionCompensation
and ensure the folder is empty or no longer exists (there should be no remaining files).
Download and install the Open XR MC latest version : https://github.com/BuzzteeBear/OpenXR-MotionCompensation/releases/latest
Enabling motion compensation in SimHub
Go into Motion compensation settings
Enable motion compensation
Click on configure OpenXR MC to set all the required settings
Initial in-game setup
As explained earlier, Open XR motion compensation will exclusively work with Open XR compliant games. If your game allows you to choose which VR mode to use (like Iracing), make sure to choose Open XR
As with any unofficial feature, it might not work with all games or headsets, even if they support OpenXR.
The keyboard shortcuts shown below are the default OpenXR MC bindings. To change them please refer to the documentation : https://github.com/BuzzteeBear/OpenXR-MotionCompensation
Start your game and enter a session
If your game includes automatic camera movements (like lock to horizon), disable or reduce them as much as possible to avoid conflicts with motion compensation.
Calibrate your VR view using the typical in-game control (usually
SPACE
orDEL
... Please refer to your game controls for the actual view centering control)Press
CTRL + DEL
to calibrate the motion compensationPress
CTRL + D
to show the COR overlay : this will show a "triple" arrow (Front, up, right)Align the cor overlay position so it roughly matches your seat base position. It must point correctly to the front.
To adjust the MC "COR" you have several shortcuts available to move it forward, sideways, or rotate it. The shortcuts from the MC configuration are listed in the SimHub MC dialog:
Save the MC COR location : Press
CTRL + SHIFT + S
Enable motion compensation : Press
CTRL + INS
Fine COR tuning
At this stage, even if the COR was set with care, motion platform movements might not be completely cancelled. This is again an effect of the COR position.
To match the COR accurately between the VR view and SimHub’s expected location, we only need to adjust it using movements along two axes: pitch and roll.
During the next steps, be aware of “gravity”: pitching forward/backward or rolling left/right may cause your head to tilt and distort the feeling of compensation. Try to stay as still as possible.
Enter the game and enable motion compensation (see Getting Started)
Start an automatic roll animation
Go into "Manual control"
Click on enable test cycling
Check only the Roll axis and click “Start automatic cycle”
At this stage your platform will automatically roll from left to right.
With this rolling movement running, adjust the height of the MC COR in game (move up or down) until you can't see any movements in game.
Next, switch the automatic test to Pitch and disable Roll.
With the pitch movement running, adjust the MC COR forward or backward in-game (move it front or rear) until there's no visible movement. Don’t move it left or right, or change its rotation, if you do, please restart this process.
You’ve now adjusted your COR in two intersecting directions, allowing you to accurately position it in space. You’re done!
Save the MC COR location : Press
CTRL + SHIFT + S
Happy race/flight !
Last updated