diff --git a/Source/DisplayCluster/Private/Render/Devices/DisplayClusterDeviceBase.cpp b/Source/DisplayCluster/Private/Render/Devices/DisplayClusterDeviceBase.cpp index f3aca2994954e9b6f283a9ac5dfffeea86c70962..7fef463327ef7328810dedc77e9761c4b02ba0c5 100644 --- a/Source/DisplayCluster/Private/Render/Devices/DisplayClusterDeviceBase.cpp +++ b/Source/DisplayCluster/Private/Render/Devices/DisplayClusterDeviceBase.cpp @@ -154,7 +154,7 @@ void FDisplayClusterDeviceBase::CalculateStereoViewOffset(const enum EStereoscop const float ScaledEyeDist = EyeDist * CurrentWorldToMeters; const float EyeOffset = ScaledEyeDist / 2.f; - const float PassOffset = (StereoPassType == EStereoscopicPass::eSSP_LEFT_EYE ? -EyeOffset : EyeOffset); + const float PassOffset = ((StereoPassType == EStereoscopicPass::eSSP_LEFT_EYE || GDisplayCluster->GetPrivateClusterMgr()->GetNodeId().Contains("left_eye")) ? -EyeOffset : EyeOffset); const float PassOffsetSwap = (bEyeSwap == true ? -PassOffset : PassOffset); // offset eye position along Y (right) axis of camera @@ -163,7 +163,7 @@ void FDisplayClusterDeviceBase::CalculateStereoViewOffset(const enum EStereoscop { const FString nodeId = GDisplayCluster->GetPrivateClusterMgr()->GetNodeId(); const FQuat eyeQuat = pCamera->GetComponentQuat(); - ViewLocation += eyeQuat.RotateVector(FVector(0.0f, nodeId.Contains("LE") ? -EyeOffset : EyeOffset, 0.0f)); + ViewLocation += eyeQuat.RotateVector(FVector(0.0f, PassOffsetSwap, 0.0f)); } const int eyeIdx = (StereoPassType == EStereoscopicPass::eSSP_LEFT_EYE ? 0 : 1);