1. Do not share user accounts! Any account that is shared by another person will be blocked and closed. This means: we will close not only the account that is shared, but also the main account of the user who uses another person's account. We have the ability to detect account sharing, so please do not try to cheat the system. This action will take place on 04/18/2023. Read all forum rules.
    Dismiss Notice
  2. For downloading SimTools plugins you need a Download Package. Get it with virtual coins that you receive for forum activity or Buy Download Package - We have a zero Spam tolerance so read our forum rules first.

    Buy Now a Download Plan!
  3. Do not try to cheat our system and do not post an unnecessary amount of useless posts only to earn credits here. We have a zero spam tolerance policy and this will cause a ban of your user account. Otherwise we wish you a pleasant stay here! Read the forum rules
  4. We have a few rules which you need to read and accept before posting anything here! Following these rules will keep the forum clean and your stay pleasant. Do not follow these rules can lead to permanent exclusion from this website: Read the forum rules.
    Are you a company? Read our company rules

OpenXR Motion Compensation

Discussion in 'VR Headsets and Sim Gaming - Virtual Reality' started by SilentChill, Aug 6, 2022.

  1. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Honestly I don’t know…. with quest 3 controller i just activate it and it works, i install opencomposite to force openxr. Anyway I see that in many things ChatGPT can help, so if you give him the error u are getting maybe u get a possible solution
  2. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    this is the error:

    XR_APILAYER_NOVENDOR_motion_compensation layer (beta - 0.3.9.0 [x64]) is active
    Using layer: XR_APILAYER_NOVENDOR_motion_compensation
    Cannot satisfy implicit extension request: XR_HTCX_vive_tracker_interaction
    Requesting extension: XR_KHR_win32_convert_performance_counter_time
    xrCreateInstance
    Application: OpenComposite_AMS2AVX
    Using OpenXR runtime: Pimax OpenXR 0.1.0


    vive tracker (waist) is used as reference tracker
    recording of samples is off
    error - tracker::ViveTrackerInfo::Init: runtime does not support Vive tracker OpenXR extension: XR_HTCX_vive_tracker_interaction

    Using OpenXR system: Pimax Crystal Light
    xrDestroyInstance
    Using layer: XR_APILAYER_NOVENDOR_motion_compensation
    Cannot satisfy implicit extension request: XR_HTCX_vive_tracker_interaction
    Cannot satisfy implicit extension request: XR_HTCX_vive_tracker_interaction

    log attached

    Attached Files:

  3. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    This means:


    • The OpenXR Motion Compensation layer (XR_APILAYER_NOVENDOR_motion_compensation) requires the XR_HTCX_vive_tracker_interaction extension to properly detect and use VIVE Trackers.
    • However, the Pimax OpenXR runtime (v0.1.0) currently does not support this extension.
    • As a result, the motion compensation layer cannot access the VIVE Tracker, even though it’s physically connected and tracked via SteamVR.





    ✅ Solution




    1.

    Switch to the SteamVR OpenXR runtime (Recommended)



    SteamVR’s OpenXR runtime supports the VIVE Tracker extension and works perfectly with the motion compensation layer.



    How to do it:



    1. Open SteamVR
    2. Go to Settings → Developer
    3. Click on “Set SteamVR as OpenXR Runtime”


    After this:


    • The Motion Compensation layer will work correctly.
    • The VIVE Tracker will be properly detected.
    • You can continue using your Pimax headset — SteamVR will still handle the tracking and rendering.


    ✅ This is the most stable and tested setup for motion compensation with VIVE Trackers.


    This is what ChatGPT reply …
  4. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    thats the issue, when " Click on “Set SteamVR as OpenXR Runtime”

    it gives this:
    current openxr runtime' steam vr; then when running automobilsta through steamvr there is no 10..9... countdown.
    I am even using opencompsite to force openXR in steam.
    xsim.jpg
  5. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Can u send the screen of opencomposite? And with Pimax play can you launch games?
  6. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    i now got this error:
    : XR_APILAYER_NOVENDOR_motion_compensation layer (beta - 0.3.9.0 [x64]) is active
    : Using layer: XR_APILAYER_NOVENDOR_motion_compensation
    : xrCreateApiLayerInstance failed with XR_ERROR_RUNTIME_FAILURE

    Sure photo of opencomppsite below' it forces both steamvr and AMS2 game;
    also i can launch through pimaxplay but i have been launching it through stream; have not tried launching it through pimax play.

    xsim2.png
  7. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Try with Pimax as openxr runtime and launch trough Pimax play
  8. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    as soon as i switched to pimax xr in the pimplay software and then started the game through there i got a countdown; 5...4... then error sound following by game crash;

    the error code was : error - tracker::ViveTrackerInfo::Init: runtime does not support Vive tracker OpenXR extension: XR_HTCX_vive_tracker_interaction

    What i then noticed when going into steamvr; the run time was pimax XR; Open composite was still switched to OPEN XR.

    upload_2025-6-23_23-41-40.png
  9. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
  10. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
  11. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    thanks for helping me getting it running. i do get two errors though which mean I have to take the headset off and press return to remove them, then motion compensation and the game starts.
    chatgp says the "
    OpenComposite DllMain ERROR: unknown/unsupported interface IVRCompositor_005
    This means the game you're launching (e.g., AMS2 or another sim) is trying to access an older version of the SteamVR compositor interface (IVRCompositor_005), which is not supported by the version of OpenComposite you're using."

    but the link it gives me for the FORK version is broken;
    Recommended build:
    https://github.com/ezio84/OpenComposite (OpenXR Fork)

    Download the latest “OpenComposite OpenXR” binaries from the Releases section (not the original GitLab version unless you're sure it's OpenXR-compatible).

    IMG_3505.JPG IMG_3506.JPG
  12. afrobbizz

    afrobbizz New Member

    Joined:
    May 25, 2025
    Messages:
    27
    Balance:
    102Coins
    Ratings:
    +1 / 0 / -0
    My Motion Simulator:
    3DOF, 6DOF
    Did you try this:

    1. Remove or rename the original openvr_api.dll in your game folder (e.g. openvr_api.bak).
    2. Copy the new openvr_api.dll from the release to the same folder.
  13. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    Yes but i did not change the old file to.bak, i Just put it into a new folder called "older version" which I created.
    I thought only the new one would be used. Not both together.
  14. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    I might try the 32bit version for the automobilsta 2 and see what happens.

    I will also try to launch euro truck sim and flight simulator 2024 and see what happens with those.
    Last edited: Jun 25, 2025 at 08:51
  15. Fahim

    Fahim Member

    Joined:
    Dec 11, 2008
    Messages:
    472
    Balance:
    523Coins
    Ratings:
    +3 / 0 / -0
    Please note the vive tracker is securely mounted with no vibration.

    The image is swimming forward when I brake. The CTRL + - filter do nothing to help it so I rule out smoothing and lag. It is not drifting but like swimming up then forward when braking . And swimming back and down a little when accelerating.

    Lol feels like SEESAW at the playground.
    And this is what is causing the sickness. Even though I am not using a virtual tracker like witmotion I assume I must have to change the COR (centre of rotation) in relation to the headset.

    I see this in the config file that can be used with a reference tracker?

    ; offset for center of rotation (cor) of motion rig in relation to hmd position
    ; used for virtual tracker position (yaw, srs, flypt) values in cm
    ; oriented in relation to hmd's forward direction (gravity-aligned)
    ; positive yaw angle value (in degrees) is rotating the forward vector to the left (counterclockwise), after positioning
    offset_forward = 0.0
    offset_down = 0.0
    offset_right = 0.0
    offset_yaw_angle = 0.0
    ; incorporate current virtual tracker pose into cor calibration (hmd + offset)
    non_neutral_calibration = 1



    I also see this adjustment that can be made in the PITCH (same as Surge)?

    ; compensate for a constant offset (in degrees) on the pitch axis in virtual tracker input data
    constant_pitch_angle = 0.0


    ; KEYS STARTING WITH cor_ ARE NOT SUITED FOR MANUAL MODIFICATION!
    ; saved cor position for native OpenXR
    cor_x = 0.0
    cor_y = 0.0
    cor_z = 0.0
    cor_a = 0.0
    cor_b = 0.0
    cor_c = 0.0
    cor_d = 0.0
    ; saved cor position for OpenComposite
    cor_x_oc = 0.0
    cor_y_oc = 0.0
    cor_z_oc = 0.0
    cor_a_oc = 0.0
    cor_b_oc = 0.0
    cor_c_oc = 0.0
    cor_d_oc = 0.0



    [translation_filter]
    ; value between 0.0 (filter off) and 1.0 (initial location is never changed), higher value increases smoothing and latency
    strength = 0.50
    ; single (1), double (2) or triple (3) exponential moving average filter
    order = 2
    ; factor for modifying filtering in vertical direction (>= 0.0)
    vertical_factor = 1.0

    [rotation_filter]
    ; value between 0.0 (filter off) and 1.0 (initial rotation is never changed), higher value increases smoothing and latency
    strength = 0.50
    ; single (1), double (2) or triple (3) slerp filter
    order = 2


    Now I take it the above only APPLIES to virtual trackers such as witmotion so There is no point me in messing with these settings?

    So it is my understanding that I need to modify the below?

    [pose_modifier]
    ; factors for pose modifier to increase/decrease compensation effect for defined axis/direction
    ; orientation is gravity aligned and based on:
    ; - hmd position on calibration for physical tracker (controller, vive)
    ; - current reference pose for virtual tracker (srs, flypt, yaw)
    ; respective factors are applied on tracker first and afterwards on hmd, their effects are stacking

    ; enable modification of motion compensation pose
    enabled = 0
    ; modify rotational compensation at tracker position
    tracker_roll = 1.0
    tracker_pitch = 1.0
    tracker_yaw = 1.0
    ; modify translational compensation at tracker position
    tracker_surge = 1.0
    tracker_sway = 1.0
    tracker_heave = 1.0
    ; modify rotational compensation at hmd position
    hmd_roll = 1.0
    hmd_pitch = 1.0
    hmd_yaw = 1.0
    ; modify translational compensation at hmd position
    hmd_surge = 1.0
    hmd_sway = 1.0
    hmd_heave = 1.0



    What does the 1.0 represent? degrees or steps