Simhub
  • WELCOME
  • Motion Addon
    • Getting started
    • Addon licence activation
    • OpenXR Motion compensation
    • OpenVR Motion compensation
    • WitMotion sensor for Motion compensation
    • Supported controllers
      • Generic serial controller
  • Standard Firmware Builder
    • Firmware introduction
    • Getting started
    • Manual compilation and customization
    • Testing and maintenance utility
    • References and troubleshooting
  • Others
    • Other simhub features
Powered by GitBook
On this page
  • Introduction
  • SimHub and Open XR MC roles
  • Open XR what is it ?
  • COR ? COR ? COR ?
  • Getting Started
  • Dimensions and speed input
  • Open XR setup
  • Enabling motion compensation in SimHub
  • Initial in-game setup
  • Fine COR tuning
  • Actuator Speed Matching & Motion Smoothing
  1. Motion Addon

OpenXR Motion compensation

PreviousAddon licence activationNextOpenVR Motion compensation

Last updated 15 days ago

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

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). Those computations can be mixed with a physical sensor (see WitMotion sensor for Motion compensation)

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.

A simple pitch angle considered from your seating position makes you move in the up and front direction in addition to the pitch rotation.

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-MotionCompensationand 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).

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.

  • 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 SPACEor DEL... Please refer to your game controls for the actual view centering control)

  • Press CTRL + DEL to calibrate the motion compensation

  • Press 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 "VR MC Monitor"

    • Click on start roll test

  • 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 (Start pitch test) 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

Actuator Speed Matching & Motion Smoothing

In motion compensation, timing and realism go hand-in-hand. If the compensation signal moves faster or with more detail than the rig can physically reproduce, it may lead to incorrect corrections—making you feel motion in the wrong direction or at the wrong intensity.

This is especially true for actuators with large deadbands or limited high-frequency response.

SimHub includes two key tools to address this:

  • A compensation speed limiter to cap correction speed.

  • A motion detail smoother to remove unrealistic high-frequency components from the compensation signal

You can access them in the VR MC monitor

Compensation Speed Limiter

  • Caps the maximum rate of change (°/s or mm/s) of the compensation position.

  • Prevents the compensation signal from running ahead of the rig’s actual movement.

  • Ensures the correction "waits" for slow actuators to catch up.

🔧 Tip: Start by matching your rig's real-world maximum speed. Lower slightly if you still feel mismatch or overshoot.

Motion Detail Smoothing

  • Applies a low-pass filter to remove small, sharp movements from the compensation signal.

  • Especially useful for rigs that cannot reproduce fine details (due to deadband, mechanical damping, or PID tuning).

  • Helps prevent the compensation from reacting to motion that was never physically "felt" in the first place.

🧠 Think of it as matching not just the speed, but also the details and fidelity of your compensation signal to what your hardware can actually reproduce.

Tuning Guide

  • Enable smoothing and set it to a moderate value.

  • Gradually increase it until the compensation feels calm and tracks the rig motion naturally.

  • If smoothing is too high, compensation may feel delayed or sluggish.

  • Combine with the speed limiter for best results.

Summary

Feature
Purpose

Compensation Speed Limiter

Prevents correction from moving faster than the rig

Target value smoothing

Filters out unrealistic high-frequency motion

Goal

Match compensation behavior to what the rig can actually do

Happy race/flight !

Download and install the Open XR MC latest version :

The keyboard shortcuts shown below are the default OpenXR MC bindings. To change them please refer to the documentation :

in any way you can!
https://github.com/BuzzteeBear/OpenXR-MotionCompensation/releases/latest
https://github.com/BuzzteeBear/OpenXR-MotionCompensation