Hi OpenFlight users,

I had a support email this morning that led me to investigate problems
with the way the OSG's present OpenFlight plugin handles subsurfaces.
The particular problem observed was that a road that had been modelled
in creator was clipping out vehicles on top of the road.  I
investigated and found out that the OpenFlight loaded was created used
code from src/osgPlugins/OpenFlight/GeometryRecords.cpp:

386              static osg::ref_ptr<osg::PolygonOffset> polygonOffset
= new osg::PolygonOffset(-10.0f, -40.0f);
387                 stateset->setAttributeAndModes(polygonOffset.get(),
osg::StateAttribute::ON);
388     
389                 static osg::ref_ptr<osg::Depth> depth = new
osg::Depth(osg::Depth::LESS, 0.0, 1.0,false);
390                 stateset->setAttribute(depth.get());

The use of static vars was a bit dodgy so I replaced these with
variables stored in Document, but this is really just an side show to
the real problem - the excessive PolygonOffset settings, a factor of
-10, and units -40 is very aggressive a setting pushing out the
subsurfaces way further than is either necessary or safe.   Scaling
these values back to -1, -1 resulted in my better results on the
models I have without causing problems with the subsurfaces having z
fighting. -1, -1 may be too conservative though.

I'd like to get feedback from the community on what works for your
OpenFlight models.  I've checked in my changes into svn/trunk and the
OSG-2.8 branch.  It'd be useful to import OpenFlight models and
convert to .osg or .ive and then update the OSG version + compile it,
then redo the conversion, then compare the before and after results.

As an another little aside, in testing on my ATI card I found that the
original hack that was introduced into osg::PolygonOffset, to try and
cope with implementations differences of glPolygonOffset between ATI
and NVidia, now is doing more harm than good.  Commenting out this
hack so that glPolygonOffset values are passed identically produces
the best results for me.  I never got to try out the hack first hand
before I got this ATI card, and I never got really definitive feedback
on how the previous settings were working.  It does seem appropriate
to now revert this old hack though, looks like ATI cards/drivers are
behaving much more similar to NVidia now which is a good thing.

On all these counts I really like feedback.  Was sub surfaces working
OK for you prior to my changes today, or do todays changes improve
things?

Robert.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to