A correction, my earlier proposed fix also solves this problem if the
cull callback is changed to also modify the culling mode of the cull
visitor, so that the callback reads something like this:
...
osg::CullSettings::CullingMode cullVisitorCullingMode =
cv->getCullingMode();
osg::CullingSet &cs = cv->getCurrentCullingSet();
osg::CullingSet::Mask cullingSetMask = cs.getCullingMask();
cv->setCullingMode(cullVisitorCullingMode |
osg::CullSettings::SMALL_FEATURE_CULLING);
cs.setCullingMask(cullingSetMask |
osg::CullSettings::SMALL_FEATURE_CULLING);
traverse(node,nv);
cs.setCullingMask(cullingSetMask);
cv->setCullingMode(cullVisitorCullingMode);
...
I'm a bit confused about all the culling masks/modes and which ones to
modify and how they are propagated when the cull visitor traverses the
scenegraph.
Regards,
Per
Per Fahlberg wrote:
Hi Robert,
I've been busy with other work and only now been able to try your
proposed change and found that it doesn't quite work as expected. When
I run the attached modified osgscribe example with the attached
box-sphere.osg model the small feature culling only culls the entire
model, i.e. both the box and the sphere together not separately as I
was expecting. If small feature culling is turned on on the camera the
box and sphere is culled by the small feature culling individually. I
would like to enable small feature culling on quite large subgraphs
and it seams that it only turns on small feature culling on the node
with the callback not on the nodes bellow it. This feels very similar
to the problem I was originally trying to solve, where the disabling
of small feature culling wasn't propagated downwards but the fix I
submitted then didn't fix this problem. Do I need to add the callback
to all nodes that I wish to be culled by small feature culling or is
this a problem in osg?
Regards,
Per
Robert Osfield wrote:
Hi Per,
On Wed, Jan 28, 2009 at 8:55 PM, Per Fahlberg <[email protected]>
wrote:
I don't really understand how this is not a bug since it is possible to
switch small feature culling on for a subgraph but not switch it off?
The scene graph itself doesn't support switching off small feature
culling in a subgraph. The way you tried to add this back in was
inappropriate, so didn't work.
My proposed change to just enable small feature culling for subgraphs
that needn't it didn't require disabling culling for subgraphs so
would be more efficient as culling would never be complete disabled.
Disabling culling for a deeply embedded subgraph causes all the
parents culling to be disabled as well, which prevents early
termination of traversal that would otherwise be done so I wouldn't
recommend it.
I will however scratch my head and try to figure out if I can
somehow easily
invert the enabling and disabling of small feature culling in my
program.
You could just use LOD's, this is effectively all that small feature
culling simulates.
Alternatively you could just set the bounding box of the drawables of
interest to an artificially large size to prevent the small feature
culling from effecting them.
Robert.
_______________________________________________
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