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

Reply via email to