4.26 VR Reset Orientation and Position causes out-of-sync controllers

This issue has been bugging me and my players for years now with no solution in sight.

I have a VR character with the following hierarchy:

  • DefaultScene
  • Mesh
  • VRRoot
    • Camera
    • Motion Controller R
    • Motion Controller L

Calling “Reset Orientation and Position” does work for the HMD. But if I’m not facing the same directions as my arms, they will become out-of-sync with the actual location/rotation.

I’ve tried to separate the Motion Controllers from the VRRoot inside of their own scene component.

  • VRRoot
    • Camera
  • Scene_R
    • Motion Controller R

This had different results. The motion controller was closer to the actual location this time but there was still a center position offset it seems?

Also might I add that “Reset Orientation and Position” causes floor tracking issues on any device other than Meta Quest headsets. So it’s not very helpful in the first place for auto calibrating the trackers properly…

Currently players have to hold down the right thumbstick and manually rotate their body until their arms match up properly (VRRoot SetWorldRotation to Control Rotation). This works but for new users or seasoned VR players, this is a bit hacky and not ideal. Ideally the calibration should happen on beginplay.

Okay so this version of “Reset Orientation and Position” works with the “Actor Rotation (Pawn Control Rotation)”. But it’s not ideal for anything but Meta devices. It also resets the entire capsule position causing the world to be a bit wobbly.

The “Reset Relative Transform” with “SetRelativeLocation” seems to be the fix I was looking for. The -97 Z is a personal choice for VRRoot height. I’m not entirely sure if this is the best way to go about it. and would like more suggestions.

EDIT: It seems that rotating the capsule and “Controllers ControlRotation” with the Right Thumbstick causes it to be out-of-sync when changing levels.