Lock to HMD = false still results in the camera following HMD orientation (VIVE)

Hi there,

I am currently attempting to get a camera to ignore the HMD rotation and location.

As a part of this, I have set Lock to HMD as false to attempt to get the HMD to stop following the rotation and location although it does not seem to have the desired effect.

In order to ignore the location, I have set the World To Meters VR world setting as 0. This seems to work pretty well as a work around.

However, the orientation is still being updated to the HMD orientation despite setting lock to HMD to false and setting Enable Player Camera Manager Follow HMD settings to false.

Is this just inconsistent functionality that works for other headsets and not HTC Vive/Steam VR, or am I doing something wrong?

Thanks.

P.S. I know that removing this orientation and position tracking can cause motion sickness, however this is for something that needs them to be removed for reasons (In before the VR devs moan).

Can confirm… Disabling Lock to HMD seems to be nonfunctional, at least with the Vive. In 4.11 and 4.12 it only locks the camera position, but orientation still follows HMD rotation. In 4.13 it doesn’t even lock the position anymore.

Same problem here. The camera with ‘Lock to Hmd’ in the camera settings not checked is still tracking the position and rotation. Just the start position moves back to its parent (in my case DefaultSceneRoot). I am working with Unreal Engine 4.13.0 and a HTC Vive.

moved this since it was better as a comment:

Been fighting this today. There is a BP node “Enable Player Controller follow HMD” that is also causing the camera to follow the headset. Using this node to disable controller following will stop the position from changing w.r.t. to the VR system. It also seems to disable any control of the character at all using VR however. I’ve also been playing with the “Enable Player Camera Manager Follow HMD” node… with no positive results

Have you tried checking “use pawn control rotation” on your camera component ?
It lets the view static while you move the head… Not really cumfortable though, but it can do the trick.
Note that as you unchecked the “lock to HMD” box, the camera dont really move (the view does) : if you get i.e. the forward vector of the camera, you get a static value.

Bp Node Enable HMD Can Control Rotation

For those who can compile their own engine, in UE 4.18, you can fix this in the following function in DefaultXRCamera.cpp:

void FDefaultXRCamera::PreRenderView_RenderThread(FRHICommandListImmediate& RHICmdList, FSceneView& View)
{
	check(IsInRenderingThread());

	// Disable late update for day dream, their compositor doesn't support it.
	const bool bDoLateUpdate = (TrackingSystem->GetSystemName() != DayDreamHMD);

… by setting bDoLateUpdate to false when the active Camera component “bLockToHMD” is set to false. In order to do that, I added a bUseLateUpdate in the FDefaultXRCamera class, and I set it in the ULocalPlayer::GetProjectionData(…) function, the same way UseImplicitHMDPosition is set.

i had to set world to meters scale to 1.0 on begin play to stop the headset’s physical world position from adding any offset to the player view, a value of 0 made the world seem like it was inside out literally…(so i can walk around the room and it wont affect my view location in the game, only rotation [which is what i actually wanted])

HOWEVER, this method seems to break hands tracking position…

@Imagine-Games

I think that you’re doing something totally different here. I can provide you some information that will help you with what it sounds like you’re trying to do.

Setting world to meters scale is not what you want to do - this is for (for instance) making the player small or large compared to the game world. You could imagine walking around in VR and then setting their world to meters scale to something like 0.2, all of a sudden they are a Borrower!

As for locking the HMD so there are no offsets. Perhaps try something like “Reset Orientation and Position” on tick, and then only resetting Location from the drop down list. This should stop the HMD from drifting from the original location.

Alternatively, just set the camera relative location X and Y to 0, this should allow the player to move up and down with their HMD but not side-to-side or forward and backwards.

You would then need to add some offset compensation to the hands so they stay relative to the HMD.

Milkshake, I was following what another forum thread was saying to do but really it did not work. I did find my own solution after all similar to what you said but with the vr origin, using reset orientation and position and just the location was something I had tried with no success.