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

Reply via email to