Download

HMD ResetOrientationAndPosition not working correctly in 4.24.2

Hi, just noticed that


UHeadMountedDisplayFunctionLibrary::ResetOrientationAndPosition()

(called Reset Orientation And Position in blueprints) works differently than in 4.24.1.

Before, calling this would “rotate the whole scene” (i.e. change tracking origin), so that the current angle where the HMD is looking is the world X axis in unreal and HMD position is set to world (0,0,0).
That’s still the case, but now, controllers stay where they were before the call, thus becoming disconnected from the actual HMD. They still track, but they’re not in correct relative position to the HMD.

To reproduce - create VR template project in 4.24.1, set an action to fire off the Reset Orientation And Position blueprint node and observe results.
Then do the same in 4.24.2, you’ll see the controllers move with the HMD when the action fires in 4.24.1, but not in .2.

Is this intentional? Any tips on how to get the desired behavior back?

We have the same Problem with the HTC Vive regarding that after calling ResetOrientationAndPosition the Controllers are not on their correct position anymore. Have you created an UDN Ticket or Bugreport ?

This was what I got from epic…

We’ve found a fix for the bug that you should be able to cherry-pick onto a source build of the engine:

Open the source file Engine\Plugins\Runtime\Steam\SteamVR\Source\SteamVRInputDevice\Private\SteamVRInputDevice.cpp

In the function FSteamVRInputDevice::Tick look for the following two lines at the end of the function:

  1. CachedBaseOrientation = FQuat::Identity;
  2. CachedBasePosition = FVector::ZeroVector;

Change those lines to:

  1. else
  2. {
  3. CachedBaseOrientation = FQuat::Identity;
  4. CachedBasePosition = FVector::ZeroVector;
  5. }

That should resolve the issue.

Thanks a bunch. Looking at 4.25 branch of the Epic repo, they integrated this fix with the next release, so no need to report it.

https://github.com/EpicGames/UnrealEngine/blob/4.25/Engine/Plugins/Runtime/Steam/SteamVR/Source/SteamVRInputDevice/Private/SteamVRInputDevice.cpp