Hi Farshid, Changes look good to me. Changes now merged and submitted to svn/trunk.
One optimization one could do with the LIMIT_NEAREST would traverse the children of a group so that the children are traversed in a intersection depth order. I would expect such an approach on a well balanced scene graph to result in earlier termination of the traversal. Robert. On Thu, Mar 10, 2011 at 11:09 PM, Farshid Lashkari <[email protected]> wrote: > Hi Robert, > Another update. I added a LIMIT_NEAREST enum which implements your previous > suggestion of rejecting bounding volumes further from the nearest existing > intersection. I only implemented this for LineSegmentIntersector. I'd > appreciate it if you could double check the math I added > to LineSegmentIntersector::intersects() for checking if the bounding sphere > is further away. The results of this are promising. I'm getting noticeable > performance increase for line intersections with scenes containing many > drawables. > Cheers, > Farshid > > On Thu, Mar 10, 2011 at 12:14 PM, Farshid Lashkari <[email protected]> wrote: >> >> Hi Robert, >> I've attached an implementation of the intersection limit feature. This >> patch does not implement the limit for kd tree intersections. Hopefully I >> can get around to that soon. >> Cheers, >> Farshid >> >> On Thu, Mar 10, 2011 at 10:10 AM, Robert Osfield >> <[email protected]> wrote: >>> >>> Hi Farshid, >>> >>> On Thu, Mar 10, 2011 at 5:59 PM, Farshid Lashkari <[email protected]> >>> wrote: >>> > On second thought, I think this option should be an enum. I can also >>> > think >>> > of a scenario where a user just wants to know whether the line or >>> > polytope >>> > has any intersections, regardless of which drawable it is. So maybe the >>> > option should be something like this: >>> > typedef enum IntersectionLimit {NoLimit, LimitOnePerDrawable, >>> > LimitOne}; >>> > void setIntersectionLimit(IntersectionLimit limit); >>> > IntersectionLimit getIntersectionLimit(); >>> > What do you think? >>> >>> Yes, an enum might be the best route. Another variation would be >>> NearestIntersection, which would just return one intersection per >>> Drawable, but would search for the nearest one. This could allow code >>> to reject inersections with bounding volumes that are further away >>> than the nearest intersection so far found. >>> >>> All these options will add complexity though... >>> >>> Robert. >>> _______________________________________________ >>> osg-submissions mailing list >>> [email protected] >>> >>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org >> > > > _______________________________________________ > osg-submissions mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org > > _______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
