[osg-users] osgUtil::IntersectionVisitor eats all the memory
Trajce Nikolov NICK
trajce.nikolov.nick at gmail.com
Tue Jan 9 04:12:17 PST 2018
hi Robert, Community,
I have the following code in a loop against very large quadtree based
database. And this code is eating all the memory, progressively and then
the system kills it . Any clue?
Thanks a lot
osg::ref_ptr<osgUtil::LineSegmentIntersector> picker;
osg::ref_ptr<osgUtil::IntersectionVisitor> iv;
osg::Vec3d getHOT(const osg::Vec3d& position, osgViewer::CompositeViewer&
viewer, osg::Vec3& normal, bool& valid)
{
osg::Vec3d result;
osg::EllipsoidModel em;
osg::Vec3d up = em.computeLocalUpVector(position.x(), position.y(),
position.z());
up.normalize();
osg::Vec3d s = position + up * 100;
osg::Vec3d e = osg::Vec3d(0, 0, 0);
if (viewer.getView(0)->getSceneData())
{
#if 1
if (!picker.valid())
{
picker = new osgUtil::LineSegmentIntersector(s,e);
iv = new MyIntersectionVisitor(RANGE);
}
picker->setStart(s);
picker->setEnd(e);
picker->getIntersections().clear();
iv->setIntersector(picker);
iv->reset();
iv->setUseKdTreeWhenAvailable(false);
//iv->setLODSelectionMode(osgUtil::IntersectionVisitor::USE_EYE_POINT_FOR_LOD_LEVEL_SELECTION);
viewer.getView(0)->getSceneData()->accept(*iv);
if (picker->containsIntersections())
{
osgUtil::LineSegmentIntersector::Intersections hitList =
picker->getIntersections();
osgUtil::LineSegmentIntersector::Intersections::iterator hit =
hitList.begin();
result = hit->getWorldIntersectPoint();
normal = hit->getWorldIntersectNormal();
valid = true;
return result;
}
#endif
}
valid = false;
return result;
}
--
trajce nikolov nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20180109/f085dc02/attachment.html>
More information about the osg-users
mailing list