Hi, Ok.. I tried to make the example simple.. but perhaps I made it more confusing. I'll try to explain what my end result shoud have been.
I'm trying to create a grid that is always visible from the viewer. The grid needs to scale at certain points when the user zooms in/out. The basic idea was to use an updatecallback on the PositionAttitudeTransform so I can position and scale it accordinaly. The grid is currently being tested on a plane XY and Z=0 To calculate the correct scaling of the grid to the current view, I need the camera. To calculate where the grid should be located I used the osgManipulator::PlaneProjector to project a point from the center of the view to our plane. This gives a position in the world where I can place the grid (of course I will need to align the grid to an interval). This is what I want to end up with. So the first step was to position the grid and already something went wrong there.. to me it looks like the camera update and my updatecall back are out of sync. Does this help? Peter On Mon, Jun 2, 2008 at 10:53 AM, Robert Osfield <[EMAIL PROTECTED]> wrote: > Hi Peter, > > You callback is pretty odd, while I don't exactly know what you are > trying to do and why, whatever it is the callback you've written is > almost certainly not the way to do. > > Could you take half a dozen steps back and then explain from a high > level what you are trying to do in your app then perhaps others can > spot the right way for you to do this. > > Robert. > > On Mon, Jun 2, 2008 at 9:47 AM, Peter Wraae Marino <[EMAIL PROTECTED]> > wrote: > > Hi users, > > > > I have a problem with my scene shaking. I have simplied the problem to > the > > code below. A short description- the code find the position in the scene > > where the center of screen is projected onto a plane. This position is > given > > to a PositionAttitudeTransform so the "box" is transformed to that > position. > > > > You will notice when the application starts it shakes. (why?) > > You will also notice when panning the camera the scene shakes (why?) > > > > anyone?, > > Peter Wraae Marino > > > > > > #include <osgViewer/Viewer> > > #include <osg/ShapeDrawable> > > #include <osgManipulator/Projector> > > > > class CMyCallback : public osg::NodeCallback > > { > > public: > > void operator()( osg::Node* node, osg::NodeVisitor* nv ) > > { > > osg::Camera* pCam = 0; > > osg::Node* p = node; > > while ( p ) > > { > > pCam = dynamic_cast<osg::Camera*>(p); > > if ( pCam ) > > { > > osg::PositionAttitudeTransform* pPat = > > dynamic_cast<osg::PositionAttitudeTransform*>(node); > > osg::Plane plane( osg::Vec3(0,0,1), osg::Vec3(0,0,0) ); > > osg::ref_ptr<osgManipulator::PlaneProjector> rPlaneProj = new > > osgManipulator::PlaneProjector; > > rPlaneProj->setPlane( plane ); > > osg::Vec3 v; > > osgManipulator::PointerInfo pi; > > > > pi.reset(); > > pi.setCamera( pCam ); > > pi.setMousePosition( 256, 256 ); // center of 512x512 window > > rPlaneProj->project( pi, v ); > > pPat->setPosition( v ); > > break; > > } > > p = p->getParent( 0 ); > > } > > NodeCallback::traverse(node,nv); > > } > > }; > > > > osg::Node* CreateScene() > > { > > osg::PositionAttitudeTransform* pPat = new > osg::PositionAttitudeTransform; > > osg::Geode* pGeode = new osg::Geode(); > > pGeode->addDrawable( new osg::ShapeDrawable( new > > osg::Box(osg::Vec3(0.0f,0.0f,0.0f),2.0f) ) ); > > pPat->addChild( pGeode ); > > pPat->setUpdateCallback( new CMyCallback ); > > return pPat; > > } > > > > int _tmain(int argc, _TCHAR* argv[]) > > { > > // construct the viewer > > osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; > > // make the viewer create a 512x512 window and position it at 32, 32 > > viewer->setUpViewInWindow( 32, 32, 512, 512 ); > > // set the scene-graph data the viewer will render > > viewer->setSceneData( CreateScene() ); > > // execute main loop > > return viewer->run(); > > } > > > > _______________________________________________ > > 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 >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org