From 60fe01dafa758cef0665cee1dc97dbf4184b8073 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 7 May 2002 11:44:24 +0000 Subject: [PATCH] Fixed osg::Camera::getModelViewMatrix() so that it handles the EYE_TO_MODEL transform correctly. Fixed warning in ClipNode.cpp. --- src/osg/Camera.cpp | 25 +++++++++++++++---------- src/osg/ClipNode.cpp | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/osg/Camera.cpp b/src/osg/Camera.cpp index 24321011b..9756fd1a2 100644 --- a/src/osg/Camera.cpp +++ b/src/osg/Camera.cpp @@ -443,26 +443,31 @@ const Matrix Camera::getModelViewMatrix() const switch(_lookAtType) { case(USE_HOME_POSITON): - if (_modelToEyeTransform.valid()) { - modelViewMatrix = *_modelToEyeTransform; - } - else - { - modelViewMatrix.makeIdentity(); + if (_eyeToModelTransform.valid()) + modelViewMatrix.invert(*_eyeToModelTransform); + else if (_modelToEyeTransform.valid()) + modelViewMatrix = *_modelToEyeTransform; + else + modelViewMatrix.makeIdentity(); } break; case(USE_EYE_AND_QUATERNION): // not implemented yet, default to eye,center,up. case(USE_EYE_CENTER_AND_UP): default: { - - modelViewMatrix.makeLookAt(_eye,_center,_up); - - if (_modelToEyeTransform.valid()) + if (_eyeToModelTransform.valid()) { + modelViewMatrix.invert(*_eyeToModelTransform); + modelViewMatrix.postMult(Matrix::lookAt(_eye,_center,_up)); + } + else if (_modelToEyeTransform.valid()) + { + modelViewMatrix.makeLookAt(_eye,_center,_up); modelViewMatrix.preMult(*_modelToEyeTransform); } + else + modelViewMatrix.makeLookAt(_eye,_center,_up); } break; diff --git a/src/osg/ClipNode.cpp b/src/osg/ClipNode.cpp index f935b555c..c478f078a 100644 --- a/src/osg/ClipNode.cpp +++ b/src/osg/ClipNode.cpp @@ -91,7 +91,7 @@ const bool ClipNode::removeClipPlane(unsigned int pos) } else { - return NULL; + return false; } }