Hi Paul,

I'm considering making a Drawable a Node, and would still need to be a
leaf node, but this would make it possible to add it to add Group node
in the scene graph.  There are quite a few knock effects to this
change, especially on backwards compatibility so it's not a trivial
change to make.  It's one of these changes that outwardly looks like
it might be straight forward, but once you start digging it ends up
being rather more involved.

The Drawable and Geode relationship was original inspired by
Performer's pfGeode and pfGeoSet.  I think it makes sense for Drawable
to be a special leaf on the scene graph, but in hinsight it would have
been better to not mirror's Peformer in this particular way. In fact
there were more similarities to Performer naming of classes that
existed in Don's earliest incarnation of the SG, before became the
OSG, as time went on I replaced more and more elements that mirror
Performer, replacing them with extensible classes and making them far
more C++ aware and friendly.  However, the sgGeode and sgGeoSet didn't
change too much other than sg->osg:: and sgGeoSet becoming
osg::Geometry, with a Geode aggregating the new osg::Drawable base
class that made the rendering side extensible.  This relationship
stuck and while not ideal has never been such a painful restriction
that I haven't yet been forced to rewrite it.

Robert.

On Tue, Jul 26, 2011 at 6:46 PM, Paul Martz <[email protected]> wrote:
> Hi Robert (and all) --
>
> Robert, back when we met face-to-face some 5 years back, I recall a brief
> discussion about possibly enhancing OSG so that Drawables did not need to be
> attached only to the Geode container node, but instead could be attached to
> any Group or Group-derived node.
>
> I'm currently working out an improved occlusion query system that could
> benefit from such a feature. During cull, a cull callback attached to a
> Group executes as follows:
>
>  if we think we should do a query:
>    add a Drawable that performs a query on its geometry
>    return without traversing the Group's children
>  else
>    traverse the Group's children
>
> When the Group cull callback adds the Drawable (to do the query), it does so
> just as if the CullVisitor had encountered the Drawable attached to a Geode
> (by calling addDrawableAndDepth). This seems to work fine, and in essence,
> my code is supporting Drawables attached to a Group (via a Group cull
> callback).
>
> If you have a few minutes, I'd love to get your input on this. I wondered
> what your current thoughts were with regards to such functionality, why it
> was never pursued, what was the thinking behind the original Geode concept
> (restricting Drawables to leaf nodes), any other thoughts you might have on
> this topic, warnings, etc.
>
> Thanks for any info,
>
> --
>  -Paul Martz      Skew Matrix Software
>                   http://www.skew-matrix.com/
> _______________________________________________
> 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

Reply via email to