summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2019-09-12 11:46:06 +0300
committerKaj Grönholm <kaj.gronholm@qt.io>2019-09-12 13:50:39 +0300
commit18138ffc6b063e94b792ef61cbe310f90ea21287 (patch)
treeeb1fea60012f254a4d10ca947eeef3a4d74aff8e
parent82574e7d6317898600958c356053cfdaa7321c32 (diff)
Improve stereo camera positioning
Simplify stereo cameras separation while also fixing camera rotation bug. Task-number: QT3DS-3899 Change-Id: Ic62afeea8410164664e6dd0ba9db0aad81f4fa63 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp
index 79e2185..4dae3f9 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderHelper.cpp
@@ -382,17 +382,10 @@ void SLayerRenderHelper::adjustCameraStereoSeparation()
copyCameraProperties(m_Camera, m_CameraRightEye);
// Adjust left & right camera positions by eye separation
- QT3DSMat44 mat = QT3DSMat44::createIdentity();
- mat.rotate(m_Camera->GetDirection());
- QT3DSVec3 camPos = m_Camera->m_Position;
- camPos.x = m_Camera->m_Position.x - m_StereoEyeSeparation;
- mat.scale(QT3DSVec4(m_Camera->m_Scale, 1.0f));
- mat.setPosition(camPos);
- m_CameraLeftEye->SetLocalTransformFromMatrix(mat);
- camPos.x = m_Camera->m_Position.x + m_StereoEyeSeparation;
- mat.scale(QT3DSVec4(m_Camera->m_Scale, 1.0f));
- mat.setPosition(camPos);
- m_CameraRightEye->SetLocalTransformFromMatrix(mat);
+ m_CameraLeftEye->m_Position.x -= m_StereoEyeSeparation;
+ m_CameraLeftEye->m_Flags.SetTransformDirty(true);
+ m_CameraRightEye->m_Position.x += m_StereoEyeSeparation;
+ m_CameraRightEye->m_Flags.SetTransformDirty(true);
m_CameraLeftEye->MarkDirty();
m_CameraRightEye->MarkDirty();