Robert, That sounds like a plausible explanation for the performance hit. I'll investigate further and try the basic ones as you suggest.
On a related note, I have a couple of questions... 1) Is there a quick way to obtain the closest intersection for a given LOS? I noticed that for a LOS, all intersections with the terrain are returned which can be large when my ownship gets close to the ground. Right now, I'm searching the returned intersection list and extracting the closest one. 2) Does the LOS technique check for occlusion along a given ray or does it compute every intersection regardless? Are hits with backfaces (as defined relative to the ownship) computed as well? I'm assuming that the computed intersection list is random (i.e. not sorted from closest to farthest from the start point)? Thanks, -Shayne -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Robert Osfield Sent: Friday, August 20, 2010 8:48 AM To: OpenSceneGraph Users Subject: Re: [osg-users] osgSim HeightAboveTerrain performance... Hi Shayne, The LOS and HAT techniques use the osgUtil::IntersectionVisitor and LineSegmentIntersector to the intersection work, and by default add a special callback DatabaseCacheReadCallback that enables the intersection traversal to load external tiles when tiles aren't already in memory. This load is synchronous so it may well be that this is causing the performance hit. You could you try using the basic osgUtil::IntersectionVisitor and LineSegmentIntersector, this won't automatically load higher levels of details, making do with just what is loaded into memory already, but it will at least not require an IO. Robert. On Fri, Aug 20, 2010 at 3:35 PM, Tueller, Shayne R Civ USAF AFMC 519 SMXS/MXDEC <[email protected]> wrote: > Robert, > > If I'm using this KdTree feature correctly then perhaps the next step is > digging down deeper with a debugger. > > In my app, I'm collecting both HAT and LOS data on a per frame basis on the > terrain. I've narrowed it down to where the intersections are calculated for > the LOS set. It appears I get a significant performance hit when I invoke > the call: > > los.computeIntersections(terrain.get()); > > where "terrain" is a pagedLOD VPB database and "los" is an > osgSim:LineOfSight class. Once I comment this call out, performance is where > it should be. This would seem to suggest that there's no bottleneck outside > the ray/triangle intersection but that there are issues with the > intersection calculations themselves for LOS... > > -Shayne > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Robert > Osfield > Sent: Friday, August 20, 2010 2:30 AM > To: OpenSceneGraph Users > Subject: Re: [osg-users] osgSim HeightAboveTerrain performance... > > Hi Shayne, > > If KdTree aren't helping performance then you either have a bottleneck > outside the actual ray to triangle intersection, or perhaps the > KdTree's aren't being assigned correctly. > > Might I suggest you walk through the code in a debugger to see what is going > on. > > Robert. > > On Thu, Aug 19, 2010 at 10:41 PM, Tueller, Shayne R Civ USAF AFMC 519 > SMXS/MXDEC <[email protected]> wrote: >> Robert, >> >> Sorry it has been long giving feedback on this. I've been working other >> issues. >> >> I did try the KdTrees stuff you suggested without any improvement in >> performance. I called >> >> > osgDB::Registry::instance()->setBuildKdTreesHint(osgDB::ReaderWriter::Option >> s::BUILDKDTREES); >> >> before I load my terrain database. Is this the correct way to do this? Is >> there anything else I need to do to enable this or get this to work? In > some >> respects things got even slower than before when I try LOS intersection >> calculations via the osgSim::LineOfSight class... >> >> -Shayne >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Robert >> Osfield >> Sent: Wednesday, July 28, 2010 2:47 AM >> To: OpenSceneGraph Users >> Subject: Re: [osg-users] osgSim HeightAboveTerrain performance... >> >> Hi Shyane, >> >> I've not been at my desk too consistently this last few weeks due to >> school holidays, so not able to dig down into all threads. >> >> A couple of general comments. If intersections are slow then consider >> enabling the building KdTree's on your scene graph, this will greatly >> improve performance. In osgDB::Options and osgDB::Registry there is a >> setBuildKdTreesHint(..) method that you can use. >> >> Robert. >> >> On Tue, Jul 27, 2010 at 7:25 PM, Tueller, Shayne R Civ USAF AFMC 519 >> SMXS/MXDEC <[email protected]> wrote: >>> Since I didn't receive any input or feedback on my previous inquiry, I'm >>> assuming no one has used osgSim very much in an extensive setting.?.? >>> >>> At any rate, I've done some further investigation. It appears that >>> performance is very poor when HAT inquiries are randomly called in >> different >>> portions of the code via the >>> osgSim::HeightAboveTerrain::computeHeightAboveTerrain(.) method. On the >>> other hand, if HAT points via hat.addPoint() are collected up and then >>> computed (intersections) in one place, performance improves. I'm assuming >>> that this is the correct usage for OSG? If this is true, I must say that >>> this is a major problem since HAT inquiries need to be done at different >>> times throughout the application due to dependencies on HAT for other >>> calculations. >>> >>> I would like some feedback from someone in the know on osgSim so I know >> what >>> the proper usage is for maximum performance. If it is true that all HAT >>> points in OSG need to be consolidated for intersection calculation, then > I >>> will attempt to refactor the code to support what OSG wants. >>> >>> Thanks, >>> -Shayne >>> >>> -----Original Message----- >>> From: [email protected] >>> [mailto:[email protected]] On Behalf Of >>> Tueller,Shayne R Civ USAF AFMC 519 SMXS/MXDEC >>> Sent: Friday, July 23, 2010 10:57 AM >>> To: OpenSceneGraph Users >>> Subject: [osg-users] osgSim HeightAboveTerrain performance... >>> >>> All, >>> >>> >>> >>> I was wanting some feedback for those who have used osgSim in querying > VPB >>> database info such has HAT, LOS, etc., during runtime. >>> >>> >>> >>> I'm seeing some performance issues when using >>> osgSim::HeightAboveTerrain::computeHeightAboveTerrain(.) to get the HAT >>> value for a particular location in the database. At times, we need >> multiple >>> HAT values per frame which seems to bog the performance down. I would >>> surmise that LOS calculations are probably worse since multiple >>> intersections are computed. >>> >>> >>> >>> My question is, is how efficient is the osgSim HAT function? Is the >> process >>> of retrieving HAT a slow one? If so, is there a way to improve > performance >>> if one or more HAT requests are issued on a per frame basis? >>> >>> >>> >>> Thanks in advance, >>> >>> -Shayne >>> >>> >>> _______________________________________________ >>> 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 >> >> > _______________________________________________ > 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
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

