[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:
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
preTrans.setTrans(-m_rotationPoint);
postTrans.setTrans(m_rotationPoint);
viewMatrix = viewMatrix * (preTrans * rotationX * rotationY * postTrans);
viewer->getCamera()->setViewMatrix(viewMatrix);
// 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!
Cheers
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
>
>
>
>
Code:
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=67128#67128
More information about the osg-users
mailing list