Hi Paul, I did that as well. Instead of drawing the line from the eye I draw it from the center (the result from getViewMatrixAsLookAt).
when the scene is "static", means no camera move, it draws from the centar, when I move the scene it jums all around. Please give it a try and let me know if that is a bug somewhere or I am doing something wrong Thanks! Nick http://www.linkedin.com/in/tnick Sent from Ünalan, İstanbul, Turkey On Sat, Dec 19, 2009 at 8:42 PM, Paul Martz <[email protected]> wrote: > You appear to be drawing it from the eye to a hardcoded point. I think you > need to compute the location of a point directly in front of the eye, and > draw the line from there to the hardcoded point (if I am understanding what > you are trying to do correctly). > > If I remember correctly, getViewMatrixAsLookAt takes an implicit parameter > to define the distance from the eye to the "center" point that it returns. > So, if you supply that distance, the you should be able to draw a line from > "center" to a hardcoded value. > > Paul Martz > Skew Matrix Software LLC > _http://www.skew-matrix.com_ <http://www.skew-matrix.com/> > +1 303 859 9466 > > > > Trajce Nikolov wrote: > >> Hi, >> >> with the following setup I expect to have a line from the center of the >> screeen to the point hard coded. It not that case. Any ideas? >> >> Thanks >> >> this is geode update callback >> >> >> class UpdateCallback : public osg::NodeCallback >> { >> public: >> UpdateCallback(osgViewer::Viewer* viewer) >> : mViewer(viewer) >> { >> } >> >> virtual void operator()(osg::Node* node, osg::NodeVisitor* nv) >> { >> osg::Geode* geode = dynamic_cast<osg::Geode*>(node); >> if (!geode) return; >> >> geode->removeDrawables(0,geode->getNumDrawables()); >> >> osg::Geometry* geometry = new osg::Geometry; >> geode->addDrawable(geometry); >> >> osg::Vec3 eye; >> osg::Vec3 center; >> osg::Vec3 up; >> mViewer->getCamera()->getViewMatrixAsLookAt(eye,center,up); >> >> osg::Vec3Array* verts = new osg::Vec3Array; >> verts->push_back(eye); >> verts->push_back(osg::Vec3(20,20,20)); >> geometry->setVertexArray(verts); >> >> osg::Vec4Array* colors = new osg::Vec4Array; >> colors->push_back(osg::Vec4(0,1,0,1)); >> geometry->setColorArray(colors); >> geometry->setColorBinding(osg::Geometry::BIND_OVERALL); >> >> geometry->addPrimitiveSet(new >> osg::DrawArrays(osg::PrimitiveSet::LINES,0,verts->size())); >> >> float radius = 0.8f; >> float height = 1.0f; >> >> osg::TessellationHints* hints = new osg::TessellationHints; >> hints->setDetailRatio(0.5f); >> >> geode->addDrawable(new osg::ShapeDrawable(new >> osg::Sphere(osg::Vec3(20.0f,20.0f,20.0f),radius),hints)); >> >> geode->dirtyBound(); >> >> } >> protected: >> osgViewer::Viewer* mViewer; >> }; >> >> Nick >> >> http://www.linkedin.com/in/tnick >> Sent from Devlet, Ankara, Turkey >> >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

