Hi Axel, In the step where you're calculating m, it looks like you're applying the rotation to the original matrix, which includes a translation already.
Code: osg::Matrix m = amtRod->getMatrix() * osg::Matrix::rotate(rotation, osg::Vec3(0,1,0)); It sounds like what you want to do is rotate then translate - so you can create a rotation matrix, post-multiply it by a translation matrix (the translation of the original), and set the product as your overall matrix. Something like: Code: osg::Matrix rotation = osg::Matrix::rotate(rotation_amount, rotation_axis); osg::Matrix translation = osg::Matrix::translate(original_translation); amtRod->setMatrix(rotation*translation); I'm not sure why you say that the rotation and translation is formally right - the final translation should be equal to the original translation if you're rotating about a local axis, but it isn't. Cheers, Tom ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=35591#35591 _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

