[4.8.1] VR: 'EnablePlayerCameraManagerFollowHmd' doesn't affect camera position

It seems, that the HMD position/rotation isn’t translated back to the pawn’s camera in VR, regardless of the settings.

Here’s what I did:

  • Created a first person test project.

  • Player controller: Configured player camera manager from ‘none’ to ‘playerCameraManager’

http://i.imgur.com/NH0IAMH.png

  • Made sure that ‘Enable Player Camera Manager Follow Hmd’ is set for both orientation and position:

http://i.imgur.com/BINRWYU.png

  • To check this, I simply attached a arrowComponent and some text directly to the players’ camera as you can see here:

http://i.imgur.com/6GNwJq1.png

  • Here you can see what this looks like in-game:

Non-VR:

http://i.imgur.com/11Yltcs.png

VR:

http://i.imgur.com/eYWgEZi.png

As you can see, the arrow and the text don’t follow the head movements but stay fixed in space instead.

For test purposes, I blueprinted PlayerCameraManager and searched for ‘hmd’:

http://i.imgur.com/ac5VDKY.png

It seems, that there simply is no followHmdPosition exposed which could be set.

It’s also not possible to set this on the camera component directly:

http://i.imgur.com/oUDYiqz.png

I uploaded the project here:
https://dl.dropboxusercontent.com/u/24358204/UE4/UE4.8.1_VR_cameraProblem.zip

Hello spyro,

I am investigating your issue with the node that you have mentioned. However, I wanted go ahead and provide a workaround that I have found that may be viable depending on you needs. I hope that this helps.

Here I added a short spring arm so that I would only have to set the location of the spring arm and in turn this would handle the other components.

Then I found the middle of the screen and projected outward from there. I Then used this location to set the spring arm location. I believe that this will give you the effect that you are looking for.

Make it a great day

Many thanks, I will try this out as soon as I can. But it’s not only about this isolated case, I have a whole of issues with the pawn’s camera not really being the ‘real’ camera position (the same with the playerCameraManager).

But thanks for this particular workaround, might be handy sometimes.

Hello spyro,

I spoke with a developer and you were correct in that the node is not functioning as well as we would like but this is a known issue and is being looked into. Until such time as a solution can be implemented as far as this case goes, I hope that the workaround given will suffice.

Make it a great day

This is what worked for me. I’ve also used the SpringArm component as Rudy suggested, but the rest of the logic is different:

Besides using EnablePlayerCameraManagerFollowHmd of OculusLibrary you also must Enable FollowHmdOrientation on CameraManager (these two actions are different, one modifies the PlayerCameraManager and another one sets flags for the Oculus plugin; I know, ugly, but it was a temporary solution until the proper one is introduced by Epic).

After all of this done, you can use GetActorLocation/Rotation from the PlayerCameraManager to set the location/rotation on the SpringArm component.

The text for the blueprint:

Begin Object Class=K2Node_Event Name="K2Node_Event_255"
   Begin Object Class=EdGraphPin Name="EdGraphPin_912"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_913"
   End Object
   Begin Object Name="EdGraphPin_912"
      PinName="OutputDelegate"
      Direction=EGPD_Output
      PinType=(PinCategory="delegate",PinSubCategoryMemberReference=(MemberParent=Class'/Script/Engine.Actor',MemberName="ReceiveBeginPlay"))
   End Object
   Begin Object Name="EdGraphPin_913"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3224.EdGraphPin_918'
   End Object
   EventReference=(MemberParent=Class'/Script/Engine.Actor',MemberName="ReceiveBeginPlay")
   bOverrideFunction=True
   Pins(0)=EdGraphPin'EdGraphPin_912'
   Pins(1)=EdGraphPin'EdGraphPin_913'
   NodePosX=368
   NodePosY=-2016
   NodeGuid=B837783E41394CD92756D485295CF53D
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_3224"
   Begin Object Class=EdGraphPin Name="EdGraphPin_918"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_919"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_920"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_921"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_922"
   End Object
   Begin Object Name="EdGraphPin_918"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_Event_255.EdGraphPin_913'
   End Object
   Begin Object Name="EdGraphPin_919"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2268.EdGraphPin_933'
   End Object
   Begin Object Name="EdGraphPin_920"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nOculus Function Library Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/OculusRift.OculusFunctionLibrary')
      DefaultObject=Default__OculusFunctionLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_921"
      PinName="bFollowHmdOrientation"
      PinToolTip="Follow Hmd Orientation\nBoolean\n\n(in) True if camera\'s orientation should be updated by most recent HMD orientation."
      PinType=(PinCategory="bool")
      DefaultValue="true"
      AutogeneratedDefaultValue="false"
   End Object
   Begin Object Name="EdGraphPin_922"
      PinName="bFollowHmdPosition"
      PinToolTip="Follow Hmd Position\nBoolean\n\n(in) Whether the camera\'s position should be updated by most recent HMD orientation or not."
      PinType=(PinCategory="bool")
      DefaultValue="true"
      AutogeneratedDefaultValue="false"
   End Object
   FunctionReference=(MemberParent=Class'/Script/OculusRift.OculusFunctionLibrary',MemberName="EnablePlayerCameraManagerFollowHmd")
   Pins(0)=EdGraphPin'EdGraphPin_918'
   Pins(1)=EdGraphPin'EdGraphPin_919'
   Pins(2)=EdGraphPin'EdGraphPin_920'
   Pins(3)=EdGraphPin'EdGraphPin_921'
   Pins(4)=EdGraphPin'EdGraphPin_922'
   NodePosX=640
   NodePosY=-2016
   NodeGuid=FD8126CD49F2DE30234051AE6382A888
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2268"
   Begin Object Class=EdGraphPin Name="EdGraphPin_933"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_934"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_935"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_936"
   End Object
   Begin Object Name="EdGraphPin_933"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3224.EdGraphPin_919'
   End Object
   Begin Object Name="EdGraphPin_934"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_VariableSet_24.EdGraphPin_957'
   End Object
   Begin Object Name="EdGraphPin_935"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nOculus Function Library Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/OculusRift.OculusFunctionLibrary')
      DefaultObject=Default__OculusFunctionLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_936"
      PinName="bEnable"
      PinToolTip="Enable\nBoolean"
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   FunctionReference=(MemberParent=Class'/Script/OculusRift.OculusFunctionLibrary',MemberName="EnablePlayerControllerFollowHmd")
   Pins(0)=EdGraphPin'EdGraphPin_933'
   Pins(1)=EdGraphPin'EdGraphPin_934'
   Pins(2)=EdGraphPin'EdGraphPin_935'
   Pins(3)=EdGraphPin'EdGraphPin_936'
   NodePosX=992
   NodePosY=-2016
   NodeGuid=6806006E461C1F5CBB48B1A41AC02952
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2913"
   Begin Object Class=EdGraphPin Name="EdGraphPin_945"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_946"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_947"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_948"
   End Object
   Begin Object Name="EdGraphPin_945"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nGameplay Statics Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.GameplayStatics')
      DefaultObject=Default__GameplayStatics
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_946"
      PinName="WorldContextObject"
      PinToolTip="World Context Object\nObject Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/CoreUObject.Object')
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_947"
      PinName="PlayerIndex"
      PinToolTip="Player Index\nInteger"
      PinType=(PinCategory="int")
      DefaultValue="0"
      AutogeneratedDefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_948"
      PinName="ReturnValue"
      PinToolTip="Return Value\nPlayer Camera Manager Reference"
      Direction=EGPD_Output
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.PlayerCameraManager')
      LinkedTo(0)=EdGraphPin'K2Node_VariableSet_24.EdGraphPin_961'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.GameplayStatics',MemberName="GetPlayerCameraManager")
   Pins(0)=EdGraphPin'EdGraphPin_945'
   Pins(1)=EdGraphPin'EdGraphPin_946'
   Pins(2)=EdGraphPin'EdGraphPin_947'
   Pins(3)=EdGraphPin'EdGraphPin_948'
   NodePosX=1008
   NodePosY=-1904
   NodeGuid=DAA078314446BE4069F7C8A08D7D096C
End Object
Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_24"
   Begin Object Class=EdGraphPin Name="EdGraphPin_957"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_958"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_959"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_960"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_961"
   End Object
   Begin Object Name="EdGraphPin_957"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2268.EdGraphPin_934'
   End Object
   Begin Object Name="EdGraphPin_958"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
   End Object
   Begin Object Name="EdGraphPin_959"
      PinName="bFollowHmdOrientation"
      PinType=(PinCategory="bool")
      DefaultValue="true"
      AutogeneratedDefaultValue="false"
   End Object
   Begin Object Name="EdGraphPin_960"
      PinName="Output_Get"
      PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   Begin Object Name="EdGraphPin_961"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.PlayerCameraManager')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2913.EdGraphPin_948'
   End Object
   VariableReference=(MemberParent=Class'/Script/Engine.PlayerCameraManager',MemberName="bFollowHmdOrientation")
   SelfContextInfo=NotSelfContext
   Pins(0)=EdGraphPin'EdGraphPin_957'
   Pins(1)=EdGraphPin'EdGraphPin_958'
   Pins(2)=EdGraphPin'EdGraphPin_959'
   Pins(3)=EdGraphPin'EdGraphPin_960'
   Pins(4)=EdGraphPin'EdGraphPin_961'
   NodePosX=1328
   NodePosY=-2000
   NodeGuid=FBF20D0443C00AD5E7BA2DA07425A6D5
End Object
Begin Object Class=K2Node_Event Name="K2Node_Event_154"
   Begin Object Class=EdGraphPin Name="EdGraphPin_972"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_973"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_974"
   End Object
   Begin Object Name="EdGraphPin_972"
      PinName="OutputDelegate"
      Direction=EGPD_Output
      PinType=(PinCategory="delegate",PinSubCategoryMemberReference=(MemberParent=Class'/Script/Engine.Actor',MemberName="ReceiveTick"))
   End Object
   Begin Object Name="EdGraphPin_973"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2386.EdGraphPin_1005'
   End Object
   Begin Object Name="EdGraphPin_974"
      PinName="DeltaSeconds"
      PinToolTip="Delta Seconds\nFloat"
      Direction=EGPD_Output
      PinType=(PinCategory="float")
      DefaultValue="0.0"
      AutogeneratedDefaultValue="0.0"
   End Object
   EventReference=(MemberParent=Class'/Script/Engine.Actor',MemberName="ReceiveTick")
   bOverrideFunction=True
   Pins(0)=EdGraphPin'EdGraphPin_972'
   Pins(1)=EdGraphPin'EdGraphPin_973'
   Pins(2)=EdGraphPin'EdGraphPin_974'
   NodePosX=368
   NodePosY=-1792
   NodeGuid=BD224880438450CCC4EFEBA5A0230DFC
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2386"
   Begin Object Class=EdGraphPin Name="EdGraphPin_1005"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1006"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1007"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1008"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1009"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1010"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_1011"
   End Object
   Begin Object Name="EdGraphPin_1005"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_Event_154.EdGraphPin_973'
   End Object
   Begin Object Name="EdGraphPin_1006"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
   End Object
   Begin Object Name="EdGraphPin_1007"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nScene Component Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.SceneComponent')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_37.EdGraphPin_20860'
   End Object
   Begin Object Name="EdGraphPin_1008"
      PinName="NewLocation"
      PinToolTip="New Location\nVector "
      PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
      DefaultValue="0, 0, 0"
      AutogeneratedDefaultValue="0, 0, 0"
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2775.EdGraphPin_22243'
   End Object
   Begin Object Name="EdGraphPin_1009"
      PinName="NewRotation"
      PinToolTip="New Rotation\nRotator "
      PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Rotator')
      DefaultValue="0, 0, 0"
      AutogeneratedDefaultValue="0, 0, 0"
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2843.EdGraphPin_22472'
   End Object
   Begin Object Name="EdGraphPin_1010"
      PinName="bSweep"
      PinToolTip="Sweep\nBoolean"
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   Begin Object Name="EdGraphPin_1011"
      PinName="SweepHitResult"
      PinToolTip="Sweep Hit Result\nHit Result Structure"
      Direction=EGPD_Output
      PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/Engine.HitResult')
   End Object
   FunctionReference=(MemberParent=Class'/Script/Engine.SceneComponent',MemberName="K2_SetWorldLocationAndRotation")
   Pins(0)=EdGraphPin'EdGraphPin_1005'
   Pins(1)=EdGraphPin'EdGraphPin_1006'
   Pins(2)=EdGraphPin'EdGraphPin_1007'
   Pins(3)=EdGraphPin'EdGraphPin_1008'
   Pins(4)=EdGraphPin'EdGraphPin_1009'
   Pins(5)=EdGraphPin'EdGraphPin_1010'
   Pins(6)=EdGraphPin'EdGraphPin_1011'
   NodePosX=1328
   NodePosY=-1808
   ErrorType=1
   ErrorMsg="Error This blueprint (self) is not a SceneComponent, therefore \' Target \' must have a connection."
   NodeGuid=358E2A754971536D0161CC86ABC8D44A
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_37"
   Begin Object Class=EdGraphPin Name="EdGraphPin_20860"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_20861"
   End Object
   Begin Object Name="EdGraphPin_20860"
      PinName="SpringArm"
      Direction=EGPD_Output
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.SpringArmComponent')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2386.EdGraphPin_1007'
   End Object
   Begin Object Name="EdGraphPin_20861"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/FirstPersonBP/Blueprints/FirstPersonCharacter.FirstPersonCharacter_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="SpringArm",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_20860'
   Pins(1)=EdGraphPin'EdGraphPin_20861'
   NodePosX=1024
   NodePosY=-1744
   NodeGuid=6A49421A471645AA51198D98E02A0CF3
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2775"
   Begin Object Class=EdGraphPin Name="EdGraphPin_22243"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_22242"
   End Object
   Begin Object Name="EdGraphPin_22243"
      PinName="ReturnValue"
      PinToolTip="Return Value\nVector "
      Direction=EGPD_Output
      PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
      AutogeneratedDefaultValue="0, 0, 0"
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2386.EdGraphPin_1008'
   End Object
   Begin Object Name="EdGraphPin_22242"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nActor Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.Actor')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2385.EdGraphPin_22703'
   End Object
   bIsPureFunc=True
   bIsConstFunc=True
   FunctionReference=(MemberName="K2_GetActorLocation",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_22242'
   Pins(1)=EdGraphPin'EdGraphPin_22243'
   NodePosX=720
   NodePosY=-1712
   NodeGuid=F2381FAE476B371B4B84A086698EE7BB
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2843"
   Begin Object Class=EdGraphPin Name="EdGraphPin_22472"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_22471"
   End Object
   Begin Object Name="EdGraphPin_22472"
      PinName="ReturnValue"
      PinToolTip="Return Value\nRotator "
      Direction=EGPD_Output
      PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Rotator')
      AutogeneratedDefaultValue="0, 0, 0"
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2386.EdGraphPin_1009'
   End Object
   Begin Object Name="EdGraphPin_22471"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nActor Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.Actor')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2385.EdGraphPin_22703'
   End Object
   bIsPureFunc=True
   bIsConstFunc=True
   FunctionReference=(MemberName="K2_GetActorRotation",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_22471'
   Pins(1)=EdGraphPin'EdGraphPin_22472'
   NodePosX=720
   NodePosY=-1616
   NodeGuid=3CDB860846FD02FF8777CCABEAC336BA
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_2385"
   Begin Object Class=EdGraphPin Name="EdGraphPin_22703"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_22702"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_22701"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_22700"
   End Object
   Begin Object Name="EdGraphPin_22703"
      PinName="ReturnValue"
      PinToolTip="Return Value\nPlayer Camera Manager Reference"
      Direction=EGPD_Output
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.PlayerCameraManager')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_2775.EdGraphPin_22242'
      LinkedTo(1)=EdGraphPin'K2Node_CallFunction_2843.EdGraphPin_22471'
   End Object
   Begin Object Name="EdGraphPin_22702"
      PinName="PlayerIndex"
      PinToolTip="Player Index\nInteger"
      PinType=(PinCategory="int")
      DefaultValue="0"
      AutogeneratedDefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_22701"
      PinName="WorldContextObject"
      PinToolTip="World Context Object\nObject Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/CoreUObject.Object')
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_22700"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target\nGameplay Statics Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.GameplayStatics')
      DefaultObject=Default__GameplayStatics
      bHidden=True
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.GameplayStatics',MemberName="GetPlayerCameraManager")
   Pins(0)=EdGraphPin'EdGraphPin_22700'
   Pins(1)=EdGraphPin'EdGraphPin_22701'
   Pins(2)=EdGraphPin'EdGraphPin_22702'
   Pins(3)=EdGraphPin'EdGraphPin_22703'
   NodePosX=368
   NodePosY=-1664
   NodeGuid=6916B75045804A505718089CE5D6D649
End Object

Fantastic, many, many thanks for making this clear!

I am having the same issue (trying to maintain something in a static position relative to the player’s vision while using a VR headset) and I’m afraid neither workaround has worked for me. (4.8.3)

Starting with the First Person template, and just modifying the FirstPersonCharacter to make sure that nothing in my project is unusual, anything that I attach to the SpringArm lags behind the headset movement.

However, with this workaround, the SpringArm lags even with the mouse controlling the camera. Does Event Tick not tick every render frame?

Would someone have a barebones FirstPersonCharacter with a working workaround that I could look at, to make sure there aren’t any settings that I might be ignoring?

Here’s what I end up seeing, when I have a SpringArm with a Sphere child.

Hello Omichron,

To address the question about the event tick. Event tick is frame dependent and does fire off every frame. However, when you are setting the position of an object. The position will always be one frame behind. The lag that you are seeing is the difference in distance that was traveled between frames. If you would like something that’s “stuck” the screen you could try using UMG depending on what it is that you are trying to accomplish. I hope that this information helps.

Make it a great day