[4.8.2] VR: Positional camera has offset to the right

Hi there,

it seems that the reported position of the tracking camera has a offset to the right (about 25 cm at a distance of 40 cm). This leads also to errors when trying to get the angle (yaw) between the headset and the tracker (about 25° at the same distance).

Reproduction:

  • Create project
  • Start VR preview (if it’s working)
  • Open console, enter ‘hmddbg showcamera on’
  • Hold HMD exactly in front of camera at a distance of about 40-50 cm

As you can see, the reported camera position isn’t the true one (which is more on the left side).

It’s the same when you draw a debug sphere in the engine (which is actually surprisingly complicated right now):


Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2155”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15789”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15790”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15791”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15792”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15793”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15794”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15795”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15796”
End Object
Begin Object Name=“EdGraphPin_15789”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nHead Mounted Display Function Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.HeadMountedDisplayFunctionLibrary’)
DefaultObject=Default__HeadMountedDisplayFunctionLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15790”
PinName=“CameraOrigin”
PinToolTip=“Camera Origin\nVector \n\n(out) Origin, in world-space, of the tracking camera”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2202.EdGraphPin_15859’
End Object
Begin Object Name=“EdGraphPin_15791”
PinName=“CameraRotation”
PinToolTip=“Camera Rotation\nRotator \n\n(out) Rotation, in world-space, of the tracking camera”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2558.EdGraphPin_15926’
End Object
Begin Object Name=“EdGraphPin_15792”
PinName=“HFOV”
PinToolTip=“HFOV\nFloat\n\n(out) Field-of-view, horizontal, in degrees, of the valid tracking zone of the camera”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15793”
PinName=“VFOV”
PinToolTip=“VFOV\nFloat\n\n(out) Field-of-view, vertical, in degrees, of the valid tracking zone of the camera”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15794”
PinName=“CameraDistance”
PinToolTip=“Camera Distance\nFloat\n\n(out) Nominal distance to camera, in world-space”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15795”
PinName=“NearPlane”
PinToolTip=“Near Plane\nFloat\n\n(out) Near plane distance of the tracking volume, in world-space”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15796”
PinName=“FarPlane”
PinToolTip=“Far Plane\nFloat\n\n(out) Far plane distance of the tracking volume, in world-space”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.HeadMountedDisplayFunctionLibrary’,MemberName=“GetPositionalTrackingCameraParameters”)
Pins(0)=EdGraphPin’EdGraphPin_15789’
Pins(1)=EdGraphPin’EdGraphPin_15790’
Pins(2)=EdGraphPin’EdGraphPin_15791’
Pins(3)=EdGraphPin’EdGraphPin_15792’
Pins(4)=EdGraphPin’EdGraphPin_15793’
Pins(5)=EdGraphPin’EdGraphPin_15794’
Pins(6)=EdGraphPin’EdGraphPin_15795’
Pins(7)=EdGraphPin’EdGraphPin_15796’
NodePosX=432
NodePosY=256
NodeGuid=7DC465E64F8C3B19ADD713AE66605B1E
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15170”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15813”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15814”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15815”
End Object
Begin Object Name=“EdGraphPin_15813”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nHead Mounted Display Function Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.HeadMountedDisplayFunctionLibrary’)
DefaultObject=Default__HeadMountedDisplayFunctionLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15814”
PinName=“DeviceRotation”
PinToolTip=“Device Rotation\nRotator \n\n(out) The device's current rotation”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15174.EdGraphPin_15871’
End Object
Begin Object Name=“EdGraphPin_15815”
PinName=“DevicePosition”
PinToolTip=“Device Position\nVector \n\n(out) The device's current position, in its own tracking space”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.HeadMountedDisplayFunctionLibrary’,MemberName=“GetOrientationAndPosition”)
Pins(0)=EdGraphPin’EdGraphPin_15813’
Pins(1)=EdGraphPin’EdGraphPin_15814’
Pins(2)=EdGraphPin’EdGraphPin_15815’
NodePosX=368
NodePosY=544
NodeGuid=0E5E83DC456FA26F12DA7D8969118B0F
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name=“K2Node_CommutativeAssociativeBinaryOperator_19”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15822”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15823”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15824”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15825”
End Object
Begin Object Name=“EdGraphPin_15822”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15823”
PinName=“A”
PinToolTip="A\nVector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2202.EdGraphPin_15861’
End Object
Begin Object Name=“EdGraphPin_15824”
PinName=“B”
PinToolTip="B\nVector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15173.EdGraphPin_15853’
End Object
Begin Object Name=“EdGraphPin_15825”
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_2280.EdGraphPin_20003’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“Add_VectorVector”)
Pins(0)=EdGraphPin’EdGraphPin_15822’
Pins(1)=EdGraphPin’EdGraphPin_15823’
Pins(2)=EdGraphPin’EdGraphPin_15824’
Pins(3)=EdGraphPin’EdGraphPin_15825’
NodePosX=1360
NodePosY=816
NodeGuid=9CA0FBEE42190E32F3E2E1ABDB6BEE81
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15171”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15834”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15835”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15836”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15837”
End Object
Begin Object Name=“EdGraphPin_15834”
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_15835”
PinName=“WorldContextObject”
PinToolTip=“World Context Object\nObject Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/CoreUObject.Object’)
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15836”
PinName=“PlayerIndex”
PinToolTip=“Player Index\nInteger”
PinType=(PinCategory=“int”)
DefaultValue=“0”
AutogeneratedDefaultValue=“0”
End Object
Begin Object Name=“EdGraphPin_15837”
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_15172.EdGraphPin_15846’
LinkedTo(1)=EdGraphPin’K2Node_CallFunction_15173.EdGraphPin_15852’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.GameplayStatics’,MemberName=“GetPlayerCameraManager”)
Pins(0)=EdGraphPin’EdGraphPin_15834’
Pins(1)=EdGraphPin’EdGraphPin_15835’
Pins(2)=EdGraphPin’EdGraphPin_15836’
Pins(3)=EdGraphPin’EdGraphPin_15837’
NodePosX=240
NodePosY=704
NodeGuid=2A455DC94D7B30A41C45D88210447CBD
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15172”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15846”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15847”
End Object
Begin Object Name=“EdGraphPin_15846”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nPlayer Camera Manager Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.PlayerCameraManager’)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15171.EdGraphPin_15837’
End Object
Begin Object Name=“EdGraphPin_15847”
PinName=“ReturnValue”
PinToolTip=“Return Value\nRotator \n\nReturns camera's current rotation.”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15175.EdGraphPin_15881’
End Object
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.PlayerCameraManager’,MemberName=“GetCameraRotation”)
Pins(0)=EdGraphPin’EdGraphPin_15846’
Pins(1)=EdGraphPin’EdGraphPin_15847’
NodePosX=544
NodePosY=704
NodeGuid=637FA9E34D68B0E17A28A1B45C259706
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15173”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15852”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15853”
End Object
Begin Object Name=“EdGraphPin_15852”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nPlayer Camera Manager Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.PlayerCameraManager’)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15171.EdGraphPin_15837’
End Object
Begin Object Name=“EdGraphPin_15853”
PinName=“ReturnValue”
PinToolTip=“Return Value\nVector \n\nReturns camera's current location.”
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CommutativeAssociativeBinaryOperator_19.EdGraphPin_15824’
End Object
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.PlayerCameraManager’,MemberName=“GetCameraLocation”)
Pins(0)=EdGraphPin’EdGraphPin_15852’
Pins(1)=EdGraphPin’EdGraphPin_15853’
NodePosX=544
NodePosY=800
NodeGuid=3B28BFA04B29F51FA1AAD6974E0A8E88
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2202”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15858”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15859”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15860”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15861”
End Object
Begin Object Name=“EdGraphPin_15858”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15859”
PinName=“A”
PinToolTip="A\nVector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2155.EdGraphPin_15790’
End Object
Begin Object Name=“EdGraphPin_15860”
PinName=“B”
PinToolTip="B\nRotator "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15175.EdGraphPin_15882’
End Object
Begin Object Name=“EdGraphPin_15861”
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_CommutativeAssociativeBinaryOperator_19.EdGraphPin_15823’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“GreaterGreater_VectorRotator”)
Pins(0)=EdGraphPin’EdGraphPin_15858’
Pins(1)=EdGraphPin’EdGraphPin_15859’
Pins(2)=EdGraphPin’EdGraphPin_15860’
Pins(3)=EdGraphPin’EdGraphPin_15861’
NodePosX=1088
NodePosY=512
NodeGuid=7B01058441C4827C669DD9B8AD9F7690
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15174”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15870”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15871”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15872”
End Object
Begin Object Name=“EdGraphPin_15870”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15871”
PinName=“A”
PinToolTip="A\nRotator "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15170.EdGraphPin_15814’
End Object
Begin Object Name=“EdGraphPin_15872”
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_15175.EdGraphPin_15880’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“NegateRotator”)
Pins(0)=EdGraphPin’EdGraphPin_15870’
Pins(1)=EdGraphPin’EdGraphPin_15871’
Pins(2)=EdGraphPin’EdGraphPin_15872’
NodePosX=608
NodePosY=544
NodeGuid=B3B6FE8D43A1BE4DC15F73A1C469D829
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_15175”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15879”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15880”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15881”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15882”
End Object
Begin Object Name=“EdGraphPin_15879”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15880”
PinName=“A”
PinToolTip="A\nRotator "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15174.EdGraphPin_15872’
End Object
Begin Object Name=“EdGraphPin_15881”
PinName=“B”
PinToolTip=“B\nRotator "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_15172.EdGraphPin_15847’
End Object
Begin Object Name=“EdGraphPin_15882”
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_2202.EdGraphPin_15860’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“ComposeRotators”)
Pins(0)=EdGraphPin’EdGraphPin_15879’
Pins(1)=EdGraphPin’EdGraphPin_15880’
Pins(2)=EdGraphPin’EdGraphPin_15881’
Pins(3)=EdGraphPin’EdGraphPin_15882’
NodePosX=816
NodePosY=544
NodeGuid=E0726AAA4F22F729224C88AB161530CF
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2557”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15909”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15910”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15911”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15912”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15913”
End Object
Begin Object Name=“EdGraphPin_15909”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15910”
PinName=“X”
PinToolTip=“X\nFloat”
PinType=(PinCategory=“float”)
DefaultValue=”-1”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15911”
PinName=“Y”
PinToolTip=“Y\nFloat”
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15912”
PinName=“Z”
PinToolTip=“Z\nFloat”
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
End Object
Begin Object Name=“EdGraphPin_15913”
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_2558.EdGraphPin_15925’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“MakeVector”)
Pins(0)=EdGraphPin’EdGraphPin_15909’
Pins(1)=EdGraphPin’EdGraphPin_15910’
Pins(2)=EdGraphPin’EdGraphPin_15911’
Pins(3)=EdGraphPin’EdGraphPin_15912’
Pins(4)=EdGraphPin’EdGraphPin_15913’
NodePosX=784
NodePosY=160
NodeGuid=95F9D2934F04308F8E74E5B54489B8DA
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2558”
Begin Object Class=EdGraphPin Name=“EdGraphPin_15924”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15925”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15926”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_15927”
End Object
Begin Object Name=“EdGraphPin_15924”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet Math Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetMathLibrary’)
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_15925”
PinName=“A”
PinToolTip=“A\nVector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2557.EdGraphPin_15913’
End Object
Begin Object Name=“EdGraphPin_15926”
PinName=“B”
PinToolTip=“B\nRotator "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Rotator’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2155.EdGraphPin_15791’
End Object
Begin Object Name=“EdGraphPin_15927”
PinName=“ReturnValue”
PinToolTip=“Return Value\nVector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“GreaterGreater_VectorRotator”)
Pins(0)=EdGraphPin’EdGraphPin_15924’
Pins(1)=EdGraphPin’EdGraphPin_15925’
Pins(2)=EdGraphPin’EdGraphPin_15926’
Pins(3)=EdGraphPin’EdGraphPin_15927’
NodePosX=1040
NodePosY=256
NodeGuid=362E50C74AF1AE5E8AC38DA7FFD7850B
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2280”
Begin Object Class=EdGraphPin Name=“EdGraphPin_19999”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20000”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20001”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20002”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20003”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20004”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20005”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20006”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20007”
End Object
Begin Object Name=“EdGraphPin_19999”
PinName=“execute”
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_Event_144.EdGraphPin_20009’
End Object
Begin Object Name=“EdGraphPin_20000”
PinName=“then”
Direction=EGPD_Output
PinType=(PinCategory=“exec”)
End Object
Begin Object Name=“EdGraphPin_20001”
PinName=“self”
PinFriendlyName=“Target”
PinToolTip=“Target\nKismet System Library Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.KismetSystemLibrary’)
DefaultObject=Default__KismetSystemLibrary
bHidden=True
End Object
Begin Object Name=“EdGraphPin_20002”
PinName=“WorldContextObject”
PinToolTip=“World Context Object\nObject Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/CoreUObject.Object’)
bHidden=True
End Object
Begin Object Name=“EdGraphPin_20003”
PinName=“Center”
PinToolTip=“Center\nVector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’,bIsConst=True)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CommutativeAssociativeBinaryOperator_19.EdGraphPin_15825’
End Object
Begin Object Name=“EdGraphPin_20004”
PinName=“Radius”
PinToolTip=“Radius\nFloat”
PinType=(PinCategory=“float”)
DefaultValue=“5”
AutogeneratedDefaultValue=“100.000000”
End Object
Begin Object Name=“EdGraphPin_20005”
PinName=“Segments”
PinToolTip=“Segments\nInteger”
PinType=(PinCategory=“int”)
DefaultValue=“32”
AutogeneratedDefaultValue=“12”
End Object
Begin Object Name=“EdGraphPin_20006”
PinName=“LineColor”
PinToolTip=“Line Color\nLinear Color Structure”
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.LinearColor’)
DefaultValue=”(R=1.000000,G=0.010669,B=0.000000,A=1.000000)”
AutogeneratedDefaultValue=”(R=1.000000,G=1.000000,B=1.000000,A=1.000000)”
End Object
Begin Object Name=“EdGraphPin_20007”
PinName=“Duration”
PinToolTip=“Duration\nFloat”
PinType=(PinCategory=“float”)
DefaultValue=“0.000000”
AutogeneratedDefaultValue=“0.000000”
End Object
FunctionReference=(MemberParent=Class’/Script/Engine.KismetSystemLibrary’,MemberName=“DrawDebugSphere”)
Pins(0)=EdGraphPin’EdGraphPin_19999’
Pins(1)=EdGraphPin’EdGraphPin_20000’
Pins(2)=EdGraphPin’EdGraphPin_20001’
Pins(3)=EdGraphPin’EdGraphPin_20002’
Pins(4)=EdGraphPin’EdGraphPin_20003’
Pins(5)=EdGraphPin’EdGraphPin_20004’
Pins(6)=EdGraphPin’EdGraphPin_20005’
Pins(7)=EdGraphPin’EdGraphPin_20006’
Pins(8)=EdGraphPin’EdGraphPin_20007’
NodePosX=1568
NodePosY=768
NodeGuid=1A3D1A2449F6C7756E5A74881EBA017E
End Object
Begin Object Class=K2Node_Event Name=“K2Node_Event_144”
Begin Object Class=EdGraphPin Name=“EdGraphPin_20008”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20009”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_20010”
End Object
Begin Object Name=“EdGraphPin_20008”
PinName=“OutputDelegate”
Direction=EGPD_Output
PinType=(PinCategory=“delegate”,PinSubCategoryMemberReference=(MemberParent=Class’/Script/Engine.Actor’,MemberName=“ReceiveTick”))
End Object
Begin Object Name=“EdGraphPin_20009”
PinName=“then”
Direction=EGPD_Output
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2280.EdGraphPin_19999’
End Object
Begin Object Name=“EdGraphPin_20010”
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_20008’
Pins(1)=EdGraphPin’EdGraphPin_20009’
Pins(2)=EdGraphPin’EdGraphPin_20010’
NodePosX=1456
NodePosY=640
NodeGuid=99AA0FCE49C0B38A52A5FA9681E513B2
End Object

I’ve also noticed that sometimes “hmddbg showcamera on” and the “Get Positonal Tracking Camera” call don’t line up with the actual camera. However, restarting the Oculus runtime service seems to rectify the problem. I haven’t figured out a sequence of events that first leads to the error. The offset amount seems to vary, both vertical and horizontal, but it does seem to mostly be represented too far to the right and often too high.

Have you tried restarting the service?

Yes, it really seems, that the runtime itself may be the problem. After restarting the server, the camera offset was gone. But why is that? Isn’t that supposed to be an absolute tracking space?

Yes, there’s got to be a bug in there somewhere. I think many people won’t notice, but if you are trying to show indicators when the user gets close to the tracking boundary it becomes more of a problem. Certainly worth raising with Oculus. I’ll add my comment to your post on Oculus forums so they know it’s not just affecting you.

Thank you. :slight_smile:

Ok I’m having the same problem, except offset to the left and forward of where it should be. Restarting the service does not fix it. I went into the oculus demo and showing bounds there shows the camera in the correct position, so I guess that is correct in the SDK?

I’d like to get this fixed as I setup a system to allow users to set their view and it saves for the next time the program is launched. I spent one night tweaking the view setup and saved it so my room layout was aligned perfectly, then when I started the next day everything is off. I couldn’t figure out why until I noticed the camera bounds are in the wrong place. Until I can get this fixed correctly I cannot test this software anymore.

Can anyone from Epic please confirm this? Rudy?

Hello ,

I am seeing a little bit of an offset when compared to the cross hairs in the FPS template. I was wondering what bench mark you are using to determine the offset that you are seeing. Could you post a screen shot of your results (I would just like to have a comparison that shows that we are seeing the same issue).

I was referring to the location of camera in shown with camera bounds compared to the real world not the game crosshair. A screenshot won’t be able to show that.

To determine the offset you can peek out the bottom of your rift at the camera and compare what you are seeing with the bounds shown with ‘hmddbg showcamera on’. Sometimes mine is a couple feet offset from where the camera really is.

You can also test by pointing while in VR and having a friend verify where you are pointing.

Hi Rudy,

thanks for your answer. It’s very hard to document with a screenshot. It looks like UE4 uses only one eye as the position of the HMD.

I made a photo with the horrible cam of my smartphone:


As you can see, the camera is placed a fair amount to the right side. You can see it actually way better if you just look through the HMD and compare the position.

The offset is not the same always. Sometimes more, something less.

The reason this is a problem for my project is it isn’t consistent and since initial position is based on where the camera last was users might have to reset their camera every time they play instead of being able to set it once and save that setting. As long as they don’t move their camera around that is.

Update for OVR Runtime 0.7:

Now there seems to be very high latency regarding getPositionalTrackerParameters(). Don’t really know why.

Reproduction:

  • Open project
  • Copy & Paste Blueprint code from above (debug sphere)
  • Open console, enter ‘hmddbg showcamera’
  • Move your head (e. g. in a small circle) and compare the camera positions of the Oculus debug layer and the debug sphere drawn by UE 4. It takes about 0.5 - 1s to settle down to the same position. That didn’t happen before…

Hello ,

After setting up project to match that, that is in the screen shot provided. I did see an off set for the debug sphere. It appears to be lined up with the right eye of the oculus. Is this the offset that you are talking about?

Yes, that would make sense. But shouldn’t the virtual camera not perfectly align with the real one?

Please wait a sec, you wrote:

“I did see an off set for the debug sphere. It appears to be lined up with the right eye of the oculus.”

So the reported camera position is not intended to be perfectly aligned with the real one? Is it correct, that the reported position of the HMD is the right eye (and not a point exactly between the left and the right eye as expected)?

Hello ,

From what I have gathered about this issue, I believe that this is currently working as intended. I will provide updates for this if things change.

Make it a great day

Hello ,

I wanted to give you an update. I am still looking into this issue. I want to make sure that I can give you an official answer on your last comment. I want to pop in here an let you know that this is still being looked into.

After doing a bit of digging I found that there was a report that had been filled out for this issue (UE-17546). This was reported to be working as intended. I hope that this information helps.

Make it a great day