[osg-users] Distance to camera

Peter osgforum at tevs.eu
Tue Mar 10 12:17:25 PDT 2009


Hi Vincent,

Thanks for your advice, but node doesn't have the method getWorldMatrix(), it has only getWorldMatrices().
I tried this:
osg::Vec3 position = node->getBound()->center() * node->getWorldMatrices()[0];
but it returned same value like this:
osg::Vec3 position = node->getBound()->center();
and I am sure it's not the right value, because when I'm above my node, position of camera is totally different then position of node.

Peter


Vincent.B wrote:
> Hi,
> 
> I use the manipulator->gtInverseMatrix().getTrans() to have camera position
> node->getBound->center() * node->getWorldMatrix() to have node center, and then you just have to compute the difference.
> 
> Vincent.
> 
> 2009/3/9 Peter <>
> 
> >  Hi all,
> > 
> > I'd like to make callback which compute the distance from LOD object to camera.
> > I tried this:
> > 
> > 
> > Code:
> > 
> > class DistanceCallback : public osg::NodeCallback
> > {
> > public:
> >   virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
> >   {
> >      osg::LOD *lod = dynamic_cast<osg::LOD *> (node);
> >      nv->setVisitorType(osg::NodeVisitor::CULL_VISITOR);
> >      if (lod != NULL)
> >      {
> >         float distance = nv->getDistanceToEyePoint(lod->getCenter(),true);
> >         std::cout << distance << std::endl;
> >      }
> >      traverse(node, nv);
> >   }
> > };
> > 
> > 
> > 
> > 
> > but 0 is returned.
> > 
> > I also tried this:
> > 
> > 
> > Code:
> > 
> > class DistanceCallback : public osg::NodeCallback
> > {
> > public:
> >   virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
> >   {
> >      osg::LOD *lod = dynamic_cast<osg::LOD *> (node);
> >      if (lod != NULL)
> >      {
> >         osgUtil::CullVisitor* visitor = new osgUtil::CullVisitor();
> >         float distance = visitor->getDistanceToEyePoint(lod->getCenter(),true);
> >         std::cout << distance << std::endl;
> >      }
> >      traverse(node, nv);
> >   }
> > };
> > 
> > 
> > 
> > 
> > but the value is constant.
> > Can anyone help?
> > 
> > Thanks,
> > Peter
> > 
> > ------------------
> > Read this topic online here:
> > http://forum.openscenegraph.org/viewtopic.php?p=8108#8108 (http://forum.openscenegraph.org/viewtopic.php?p=8108#8108)
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > osg-users mailing list
> >  ()
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > 
> 
> 
>  ------------------
> Post generated by Mail2Forum


------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=8189#8189








More information about the osg-users mailing list