[osg-users] Arcball Camera without unexpecting 'roll' of the camera

Daniel Neos daniel.rd at hotmail.de
Tue May 17 05:35:23 PDT 2016

Unfortunalety there is no feature "throw" feature. My class inherits from osgGA::GUIEventHandler and there is no setAllowThrow implemented, as far as I know.

Here is (part of) my actual mouse dragging code:


bool CameraHandler::handle(const osgGA::GUIEventAdapter & ea, osgGA::GUIActionAdapter & us)
                osgViewer::View* viewer = dynamic_cast<osgViewer::View*>(&us);
                osg::Matrixd viewMatrix = viewer->getCamera()->getViewMatrix();
                osg::Vec3d translation = viewMatrix.getTrans();

                osg::Matrixd rotationX = osg::Matrix::rotate(deltaX  * 0.5, osg::Y_AXIS);
                osg::Matrixd rotationY = osg::Matrix::rotate(-deltaY * 0.5, osg::X_AXIS);
                osg::Matrixd preTrans = osg::Matrix::identity();
                osg::Matrixd postTrans = osg::Matrix::identity();

                osg::Vec3d bsCenter = osg::Vec3d(137.69, 284.17, 3305.0); // scene is (almost) static
                m_rotationPoint = osg::Vec3(0.0, 0.0 , 0.0); // good rotation point for 
                m_rotationPoint = translation - bsCenter; // good rotation point for 

                viewMatrix = viewMatrix * (preTrans * rotationX * rotationY * postTrans);
                // ensure fixed point to look at
                osg::Vec3d eye, center, up;
                viewer->getCamera()->getViewMatrixAsLookAt(eye, center, up);
                if (focusPointFlag)
                    viewer->getCamera()->setViewMatrixAsLookAt(eye, bsCenter , up);

                return true;

And if I am zooming in, sometimes the effect gets worse and the camera is hardly to control. Maybe there is an error in my rotation setup?

Thank you!

Daniel Neos

cbuchner1 wrote:
> Could it be that the "throw" feature of the camera manipulator is responsible for the roll?
> If so, try disabling it.
> Also, post source code if you want specific help with a specific issue in your implementation.
> Christian


Read this topic online here:

More information about the osg-users mailing list