Hi Paul,

Hi J-S -- I recently wrote my own visitor to flatten transforms. To do this,
I use osg::computeLocalToWorld(osg::NodePath&) to get the local-to-world
matrix, and transform all vertices by that matrix.

Yes, I've done that in the past too, and after fiddling for a while with the order of operations and how to transform vectors properly (as opposed to points/vertices) I got it to work too.

This works great for me,
and what you are doing sounds like an equivalent operation, so I'm not sure
why it's not working for you. Can you provide more details on the failure?

Well, say I have this (pseudo code)

osg::BoundingBox combinedWorldBB;
foreach node in selectedNodes
    add node's BB (world-space) to combinedWorldBB
end

The result I get is that when the root transform of my group of nodes is identity, I get a bounding box of:

_min = ( -1.4047172 , -0.94869113 , -1.9402435  )
_max = (  2.7989883 ,  0.95002991 ,  0.33612174 )

which is a bounding box of approximate size (4, 2, 2.3) centered approximately at (0.6, 0, -0.8).

If I translate the root of those nodes by -5 in Z (and they look correctly transformed), I get this bounding box:

_min = ( -1.4047172 , -0.94869113 , -11.940244 )
_max = (  2.7989883 ,  0.95002991 , -5.3083067 )

which is a bounding box of approximate size (4, 2, 6.6) centered approximately at (0.6, 0, -8.6).

So you can see, the bounding box changes much more than a simple translation by -5 in Z...


My code is:

void getWorldBounds(osg::Node* node, osg::BoundingBox& bb)
{
    GetWorldCoordOfNodeVisitor worldVisitor;
    node->accept(worldVisitor);
    osg::Matrix localToWorld = worldVisitor.getMatrix();

    osg::ComputeBoundsVisitor cbbv;
    node->accept(cbbv);
    osg::BoundingBox localBB = cbbv.getBoundingBox();

    for (unsigned int i = 0; i < 8; i++)
    {
        bb.expandBy(localBB.corner(i) * localToWorld);
    }
}

// ... Then in a method:

osg::BoundingBox bb;
foreach (osg::Node* node, selectedNodes)
{
    getWorldBounds(node, bb);
}

// Results inspected at this point in the debugger.


Any ideas?

Thanks in advance,

J-S
--
______________________________________________________
Jean-Sebastien Guay    [EMAIL PROTECTED]
                               http://www.cm-labs.com/
                        http://whitestar02.webhop.org/
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to