Hello,

I am trying to represent a trackball view with a cube, with each face of the 
cube labelled "front", "top",
"right", etc. I'd like the cube to be positioned in the window corner and 
follow the trackball view. I 
assume that the initial home position corresponds to the front view. Now I've 
been playing with this for
a while and I am getting confused with transformations :(

I create the cube as follows:

m_pFaceFront  = osg::createTexturedQuadGeometry(osg::Vec3(-0.5, -0.5, 
-0.5),osg::Vec3(1,0,0),osg::Vec3(0,0,1));
m_pFaceBack   = osg::createTexturedQuadGeometry(osg::Vec3(0.5, 0.5, 
-0.5),osg::Vec3(-1,0,0),osg::Vec3(0,0,1));
m_pFaceLeft   = osg::createTexturedQuadGeometry(osg::Vec3(-0.5, 0.5, 
-0.5),osg::Vec3(0,-1,0),osg::Vec3(0,0,1));
m_pFaceRight  = osg::createTexturedQuadGeometry(osg::Vec3(0.5, -0.5, 
-0.5),osg::Vec3(0,1,0),osg::Vec3(0,0,1));
m_pFaceTop    = osg::createTexturedQuadGeometry(osg::Vec3(-0.5, -0.5, 
0.5),osg::Vec3(1,0,0),osg::Vec3(0,1,0));
m_pFaceBottom = osg::createTexturedQuadGeometry(osg::Vec3(-0.5, 0.5, 
-0.5),osg::Vec3(1,0,0),osg::Vec3(0,-1,0));

So I believe that the "front" is facing -Y, "top" +Z, and "right" +X.

I place the cube under a camera with absolute reference frame and set the view 
to identity. I am thinking the 
view frame has +X to the right, +Y up, and +Z out of the screen. What I see is 
the bottom face upside down.
I would have expected to see the top face so I am not entirely sure what is 
going on...

My second question is how to make the cube follow the trackball view. The cube 
has a matrix transform as a parent
and I set its rotation in an update callback as follows:

osg::Matrixd invMat;
invMat = m_pViewCube->GetView()->getCameraManipulator()->getInverseMatrix();
osg::Matrixd rotMat;
rotMat.setRotate(invMat.getRotate());
m_pViewCube->GetTransform()->setMatrix(rotMat);

The cube rotation is "inverted" wrt to the trackball when using the inverse 
matrix. Using the manipulator matrix 
instead of its inverse, the cube follows correctly on drag vertically but has 
the wrong rotation axis on drag horizontally...

Any help with this would be greatly appreciated !


bill
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to