Hey Sebastian,

I've been looking at this off-and-on for a while now, though I have no clean 
solution. From my investigation it looks like the osg::CullVisitor tweaks the 
_computed_znear and _computed_zfar values to their needed settings during the 
handlle_cull_callbacks_and_traversal() call in the apply(osg::Camera&) method. 
Once the traversal call is complete, the znear and zfar values are correct for 
all the geometry under that camera. The problem is that between that point and 
the code a few lines down where the z-values are reset for the next camera 
there is no mechanism to install a callback to retrieve the computed values.

The two solutions I was going to try were:

1) Attach a custom node to the scenegraph in a way that assures it is the last 
node traversed, is always visited, yet doesn't influence the scene bounds, and 
then cache off the znear and zfar values from the CullVisitor using a cull 
callback on that node (seems tricky to manage)
Or:
2) Subclass the osg::CullVisitor (which we've already done anyway in our 
project), copy/paste the virtual apply(osg::Camera&) method body, and insert 
the code that I needed to cache / broadcast the z-values after the traversal.

In either case the callback or broadcast mechanism could update the projections 
for any other cameras down the pipeline before they're hit by the CullVisitor.

What I really want is the ability to give one camera references to other 
cameras as sort of "projection slaves" and have the osg::CullVisitor set the 
slave projections after the traversal. I haven't dug through the osg code 
enough to see if that paradigm is valid or if there's a more obvious solution 
I'm overlooking.

Note that this is all in theory. I haven't been tasked to fix this issue yet in 
our code, we've just been using hard-coded fixed near/far values in the interim.

- Andy

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=50742#50742





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to