Hi Cary

That makes sense. And I understand it for switches and transforms. Would I need to do deep_copy_nodes if it only contained geometry under LODs?

I think the nodes make sense, since it is everything forming the structure (i.e. without the geodes containing the drawables)

As for the arrays, we ran some tests and determined it better to flatten transforms out and do that for positioning some objects and then just put them under a single transform to move them around as a group. It was on the order of 1000+ objects. I am going to modify that code to allow me to switch methods so we can retest it.

*From:*[email protected] [mailto:[email protected]] *On Behalf Of *Sebastian Messerschmidt
*Sent:* Wednesday, April 16, 2014 9:43 AM
*To:* OpenSceneGraph Users
*Subject:* Re: [osg-users] Understanding Node Clone Options

Hi Cary,

I usually use

the combination DEEP_COPY_NODES | DEEP_COPY_CALLBACKS.
It works in my use case, where I need to instance dynamic objects (such as cars) which need to keep their individual DoF, Switches and Animations. I intentionally left out the flatten-static transform optimizations, but It might work if you visit your models transforms before optimizing and tag them as Dynamic. As far as I remember, nodes tagged DYNAMIC wont be touched by the Optimizer.

Regarding the vertices: With the options above the arrays will be shared I guess, which is exactly what I want, since I only want to duplicate the "structure" but not the geometry. If you clone the arrays each instance will have its own geometry, which might have a big impact on performance.

cheers
Sebastian

    As our simulation runs we can add and remove models and many times
    the same model repeatedly. We only load the physical model once
    and then clone it for each instance we need. Each model can
    contain matrix transforms, switches, LODs, and update callbacks
    that all need to be unique. I am trying to limit how much we are
    actually cloning now since we don't necessarily have all of these
    things in every model. For example if we have a light pole that is
    use 100 times, we don't even need to clone, we can just add the
    child directly to the scene under different matrix transforms. The
    problem is in understanding when I actually need to clone and what
    type of options I need.

    I know I need to use the DEEP_COPY_ARRAYS when I need the actual
    vertices to be different, which does happen sometimes when I add a
    matrix that gets flattened on to the model. However, for switches,
    dynamic matrixTransforms, LODS, and callbacks, when do I use the
    different options? So far I have only gotten everything to work
    for those when I do a DEEP_COPY_NODES. Do I really need this, or
    would some subset of other options work?

    I guess my main question is when are each of the various
    DEEP_COPY_ options needed?




    _______________________________________________

    osg-users mailing list

    [email protected]  
<mailto:[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

Reply via email to