[osg-users] getDistanceToViewPoint not implemented in osgUtil::IntersectionVisitor

Jason Beverage jasonbeverage at gmail.com
Thu Mar 19 06:30:18 PDT 2009

Hi Robert,

I was looking through CullVisitor and trying to get my head around the
difference between the eye point and the viewpoint.  Is the viewpoint stack
is used to deal with internal camera nodes then?  Then the "eye" point is
the main camera's position while the "view" point would be used for
currently executing camera node.  If you don't have any internal camera
nodes, then would the eye point and the viewpoint be equivalent?

Do you think it would make sense to just copy the implemention from
CullVisitor for the viewpoint/eyepoint stack into IntersectionVisitor?



2009/3/19 Robert Osfield <robert.osfield at gmail.com>

> Hi Jason,
> This change would be appropriate.  Although we might want to review the eye
> point management, and perhaps eye + view points as potentially they aren't
> the same.  An stack for eye/viewpoint point might be need as well to cope
> with internal camera nodes.
> Robert.
> 2009/3/18 Jason Beverage <jasonbeverage at gmail.com>
>> Hi Robert,
>> I'm using LOD's in one of my apps to control the distance at which models
>> first begin to appear and noticed that the IntersectionVisitor will still
>> hit these nodes even if they are not visible.
>> I tried setting the LODSelectionMode to
>> USE_EYE_POINT_FOR_LOD_LEVEL_SELECTION but it still selected invisible
>> nodes.  After looking through the code I noticed that the
>> getDistanceToViewPoint function is used by the LOD class but is not
>> implemented by the IntersectionVisitor, so will always have the value of 0.
>> I made a small class deriving from IntersectionVisitor that just returned
>> getDistanceToEyePoint (which is overriden by IntersectionVisitor) and things
>> seemed to behave more appropriately.
>> class MyIntersectionVisitor : public osgUtil::IntersectionVisitor
>> {
>> public:
>>     MyIntersectionVisitor(osgUtil::Intersector* intersector=0,
>> osgUtil::IntersectionVisitor::ReadCallback* readCallback=0)
>>         :IntersectionVisitor(intersector, readCallback)
>>     {
>>     }
>>     virtual float getDistanceToViewPoint(const osg::Vec3& pos, bool
>> useLODScale) const
>>     {
>>        return getDistanceToEyePoint(pos, useLODScale);
>>     }
>> };
>> Would this change, or something similar, be appropriate for inclusions in
>> OSG?
>> Thanks!
>> Jason
>> _______________________________________________
>> osg-users mailing list
>> osg-users at lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20090319/9e55a754/attachment-0003.htm>

More information about the osg-users mailing list