Hi all,
Using osgManipulator, I use 2 draggers (translation and rotation) to
move/rotate an element in the scene.
Everything is fine when I dragg using the draggers... BUT (of course) when I
decide to move the dragger without mouse action, things become difficult.
My dragger are like that :
Group
|_____________________
| |
Translate dragger Translate Selection
_____________________|
| |
Rotate Dragger Rotate Selection
|
MyGeode
The Selection are osgManipulator::Selection elements (matrix)
I get a move vector, and a rotate vector (3 angles).
I set the matrices of the Selection with the move vector (the translate
selection matrix, and the Translate dragger matrix to put the dragger
graphical representation at the same place)
Same thing for the rotation... I set the matrices with a good (verified)
matrix or rotation.
But, there is problem : even if my rotation matrix is identity, the geode
and the rotate dragger rotate a little (or more depending on original
rotation) ??!!
I use this code (for test):
>
> RotateSelection->setMatrix(osg::Matrix::identity() /*rot*/);
> TranslateSelection->setMatrix(osg::Matrixd::translate(position));
>
>
> float scale =
> getPlaneGizmo()->getBound().radius()*getPlaneGizmo()->getWorldMatrices()[0].getScale()[0]
> * 1.2;//dragger size
>
> //move the translation dragger
> _TranslateDragger->setMatrix(osg::Matrix::scale(scale*2.0, scale*2.0,
> scale*2.0) *
> osg::Matrix::translate(getPlaneGizmo()->getBound().center()*getPlaneGizmo()->getWorldMatrices()[0]));
> //move dragger
>
> //rotate the rotation drager
> _RotateDragger->setMatrix(osg::Matrix::scale(scale, scale, scale) /**
> rot*/); //rotate dragger
>
No rotations ... but rotation on the result...
Maybe there is something I don't understand in the Dragger/Manipulator
elements ?
Any idea or suggestion would be very nice for me :-)
Thanks.
Regards,
Vincent.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org