[osg-users] my current position
--- On Wed, 12/17/08, olfat ibrahim olfat_ibra...@yahoo.com wrote: From: olfat ibrahim olfat_ibra...@yahoo.com Subject: my current position To: OSG osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:01 AM i am using keyswitchManipulator : i need to print my current location while iam driving in the scene : i tried the functions : keyswitchManipulatorL-getMatrix() viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up) cameraL-getViewMatrixAsLookAt(eye, center, up) all of those does not get me my moving statuse . i need my x,y,z and h,p,r current position ; is there a function should i call to get me what i need ? thanks ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] my current position
Hi, 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com --- On Wed, 12/17/08, olfat ibrahim olfat_ibra...@yahoo.com wrote: From: olfat ibrahim olfat_ibra...@yahoo.com Subject: my current position To: OSG osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:01 AM i am using keyswitchManipulator : i need to print my current location while iam driving in the scene : i tried the functions : keyswitchManipulatorL-getMatrix() viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up) eye is camera position. cameraL-getViewMatrixAsLookAt(eye, center, up) all of those does not get me my moving statuse . i need my x,y,z and h,p,r current position ; Are you sure you get the position each frame ? because theses functions will give you vector copy, so if you don't get them each frame, they will not change. What do you meen by h,r,p ? second camera position ? Vincent. is there a function should i call to get me what i need ? thanks ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] my current position
thanks again for your help : but i have another problem : while( !viewer.done() || !viewer1.done() ) { viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up); cout eye2 eye.x() eye.y() eye.z() endl; cout center center.x() center.y() center.z() endl; cout up up.x() up.y() up.z() endl; osg::Matrixd m(viewer.getCamera()-getViewMatrix()); mt-setMatrix(osg::Matrix::translate(eye.x(),eye.y(),eye.z())* osg::Matrix::rotate(m.getRotate().inverse())); i tried m.getRotate().inverse() and m.getRotate() they rotate the object but i the wrong way they flip it does any one have recomendations ?? --- On Wed, 12/17/08, Vincent Bourdier vincent.bourd...@gmail.com wrote: From: Vincent Bourdier vincent.bourd...@gmail.com Subject: Re: [osg-users] my current position To: olfat_ibra...@yahoo.com Date: Wednesday, December 17, 2008, 9:58 AM You can do it using different things: * You get eye, center, up . With theses vector, you can compute the front, up, side vectors of the camera, an so compute the rotation. (eye is camera position, center is the point the camera look at) * You can get the matrix from the manipulator, and getRotation from it. You will have the quaternion representing the rotation. (or rotation inverse, I don't remember) * you can get the matrix from manipulator, and use getFrontVector(...), getSidevector() and getUpVector() from it. After that, just compute the rotation. Vincent. 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com you were right thank you very much now i need to get the H P R by H P R i mean the rotation arround x ,y , z axis . i tried the three functions in the following mannare : osg::Vec3f eye; osg::Vec3f center; osg::Vec3f up; osg::Vec3f eye1; osg::Vec3f center1; osg::Vec3f up1; osg::Vec3f position; osg::Matrixd m(keyswitchManipulatorL-getCoordinateFrame(position)); while( !viewer.done() || !viewer1.done() ) { cameraL-getViewMatrixAsLookAt(eye1, center1, up1); viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up); osg::Matrixd m(keyswitchManipulatorL-getCoordinateFrame(position)); // cout position.x position.y position.z endl; cout eye position.x() position.y() position.z() endl; cout eye eye.x() eye.y() eye.z() endl; cout center center.x() center.y() center.z() endl; cout up up.x() up.y() up.z() endl; cout eye eye1.x() eye1.y() eye1.z() endl; cout center center1.x() center1.y() center1.z() endl; cout up up1.x() up1.y() up1.z() endl; // fire off the cull and draw traversals of the scene. viewer.frame(); } can any ong give me ideas ?? --- On Wed, 12/17/08, Vincent Bourdier vincent.bourd...@gmail.com wrote: From: Vincent Bourdier vincent.bourd...@gmail.com Subject: Re: [osg-users] my current position To: olfat_ibra...@yahoo.com, OpenSceneGraph Users osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:37 AM Hi, 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com --- On Wed, 12/17/08, olfat ibrahim olfat_ibra...@yahoo.com wrote: From: olfat ibrahim olfat_ibra...@yahoo.com Subject: my current position To: OSG osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:01 AM i am using keyswitchManipulator : i need to print my current location while iam driving in the scene : i tried the functions : keyswitchManipulatorL-getMatrix() viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up) eye is camera position. cameraL-getViewMatrixAsLookAt(eye, center, up) all of those does not get me my moving statuse . i need my x,y,z and h,p,r current position ; Are you sure you get the position each frame ? because theses functions will give you vector copy, so if you don't get them each frame, they will not change. What do you meen by h,r,p ? second camera position ? Vincent. is there a function should i call to get me what i need ? thanks ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http
Re: [osg-users] my current position
Hi, Try manipulator-getMatrix() instead of camera view matrix... Next, it is possible to have a rotation of the matrix along X of +/- PI/2... don't know exactly when or why, but this can help... Vincent. 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com thanks again for your help : but i have another problem : while( !viewer.done() || !viewer1.done() ) { viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up); cout eye2 eye.x() eye.y() eye.z() endl; cout center center.x() center.y() center.z() endl; cout up up.x() up.y() up.z() endl; osg::Matrixd m(viewer.getCamera()-getViewMatrix()); mt-setMatrix(osg::Matrix::translate(eye.x(),eye.y(),eye.z())* osg::Matrix::rotate(m.getRotate().inverse())); i tried m.getRotate().inverse() and m.getRotate() they rotate the object but i the wrong way they flip it does any one have recomendations ?? --- On Wed, 12/17/08, Vincent Bourdier vincent.bourd...@gmail.com wrote: From: Vincent Bourdier vincent.bourd...@gmail.com Subject: Re: [osg-users] my current position To: olfat_ibra...@yahoo.com Date: Wednesday, December 17, 2008, 9:58 AM You can do it using different things: * You get eye, center, up . With theses vector, you can compute the front, up, side vectors of the camera, an so compute the rotation. (eye is camera position, center is the point the camera look at) * You can get the matrix from the manipulator, and getRotation from it. You will have the quaternion representing the rotation. (or rotation inverse, I don't remember) * you can get the matrix from manipulator, and use getFrontVector(...), getSidevector() and getUpVector() from it. After that, just compute the rotation. Vincent. 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com you were right thank you very much now i need to get the H P R by H P R i mean the rotation arround x ,y , z axis . i tried the three functions in the following mannare : osg::Vec3f eye; osg::Vec3f center; osg::Vec3f up; osg::Vec3f eye1; osg::Vec3f center1; osg::Vec3f up1; osg::Vec3f position; osg::Matrixd m(keyswitchManipulatorL-getCoordinateFrame(position)); while( !viewer.done() || !viewer1.done() ) { cameraL-getViewMatrixAsLookAt(eye1, center1, up1); viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up); osg::Matrixd m(keyswitchManipulatorL-getCoordinateFrame(position)); // cout position.x position.y position.z endl; cout eye position.x() position.y() position.z() endl; cout eye eye.x() eye.y() eye.z() endl; cout center center.x() center.y() center.z() endl; cout up up.x() up.y() up.z() endl; cout eye eye1.x() eye1.y() eye1.z() endl; cout center center1.x() center1.y() center1.z() endl; cout up up1.x() up1.y() up1.z() endl; // fire off the cull and draw traversals of the scene. viewer.frame(); } can any ong give me ideas ?? --- On Wed, 12/17/08, Vincent Bourdier vincent.bourd...@gmail.com wrote: From: Vincent Bourdier vincent.bourd...@gmail.com Subject: Re: [osg-users] my current position To: olfat_ibra...@yahoo.com, OpenSceneGraph Users osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:37 AM Hi, 2008/12/17 olfat ibrahim olfat_ibra...@yahoo.com --- On Wed, 12/17/08, olfat ibrahim olfat_ibra...@yahoo.com wrote: From: olfat ibrahim olfat_ibra...@yahoo.com Subject: my current position To: OSG osg-users@lists.openscenegraph.org Date: Wednesday, December 17, 2008, 9:01 AM i am using keyswitchManipulator : i need to print my current location while iam driving in the scene : i tried the functions : keyswitchManipulatorL-getMatrix() viewer.getCamera()-getViewMatrixAsLookAt(eye, center, up) eye is camera position. cameraL-getViewMatrixAsLookAt(eye, center, up) all of those does not get me my moving statuse . i need my x,y,z and h,p,r current position ; Are you sure you get the position each frame ? because theses functions will give you vector copy, so if you don't get them each frame, they will not change. What do you meen by h,r,p ? second camera position ? Vincent. is there a function