diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-09-12 11:46:06 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-09-12 13:50:39 +0300 |
commit | 18138ffc6b063e94b792ef61cbe310f90ea21287 (patch) | |
tree | eb1fea60012f254a4d10ca947eeef3a4d74aff8e | |
parent | 82574e7d6317898600958c356053cfdaa7321c32 (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.cpp | 15 |
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(); |