Tomlinson, Gordon wrote:
I disagree :)
You need 8 vec3's to do that, you need the 4 corners of any 2 opposite sides of the bounding box in order to have every side a different size
The osg::Bounding box only supplies 2 vec3's which effectively gives you 2
corner points and you cannot get the 8 corner points from 2, apart from a
parallel rectangle ...
But using 8 corner points is reduntant, as OSG uses _axis-aligned_
bounding boxes. Even in case you were using aligned bboxes you would
only need 4 vec3's to represent a bounding box under any orientation
(one vec3 for one of the corners + 3 * a vec3 for each sizes axis
starting at the corner (and even the 3rd axis could be deduced from the
other 2, except for its length)).
Paul
Gordon
__________________________________________________________
Gordon Tomlinson
Product Manager 3D
Email : gtomlinson @ overwatch.textron.com
__________________________________________________________
(C): (+1) 571-265-2612
(W): (+1) 703-437-7651
"Self defence is not a function of learning tricks
but is a function of how quickly and intensely one
can arouse one's instinct for survival"
- Master Tambo Tetsura
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jean-Sébastien
Guay
Sent: Thursday, October 02, 2008 10:52 AM
To: OpenSceneGraph Users
Subject: Re: [osg-users] Bounding Parallelepiped
Hi Gordon,
Unfortunately, OSG does not directly support what you want as osg'S
bounding box, is as you have seen is a axially aligned min/max LL/UR
That is not true. OSG's bounding box supports separate xmin/xmax, ymin/ymax,
zmin/zmax values, so it can represent boxes that have different sizes on all
axes.
However, as Robert explained, OSG uses BoundingBox on Drawables, but
BoundingSpheres on nodes. So if you just take the root node's bounding sphere
and put that into a bounding box, of course you will get a bounding *cube*.
ComputeBoundsVisitor is what you need. It will compute a minimal axis-aligned
bounding box for all *drawables*, not using the bounding spheres.
#include <osg/ComputeBoundsVisitor>
osg::ComputeBoundsVisitor cbbv;
node->accept(cbbv);
osg::BoundingBox bb = cbbv->getBoundingBox();
It doesn't get much simpler than that.
J-S
--
______________________________________________________
Jean-Sebastien Guay [EMAIL PROTECTED]
http://www.cm-labs.com/
http://whitestar02.webhop.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
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org