OBBs : Graphics
This is a discussion on OBBs within the Graphics forums in Theory and Concepts category; I'm reading about object oriented bounding boxes and the book discusses ways to calculate a tight OBB. However, these algorithms seem to suggest the vertices can be configured somewhat aribtrary--for example, a submarine is for some reason randomly oriented and we need to compute the corresponding OBB. But it seems in practice, wouldn't you just transform to the space where the submarine is axis aligned, build the AABB, then apply the local-to-world transformation to transform the AABB to an OBB. That seems a lot easier than trying to construct an OBB directly in world space....
![]() |
| | LinkBack | Thread Tools |
|
#1
| |||
| |||
| discusses ways to calculate a tight OBB. However, these algorithms seem to suggest the vertices can be configured somewhat aribtrary--for example, a submarine is for some reason randomly oriented and we need to compute the corresponding OBB. But it seems in practice, wouldn't you just transform to the space where the submarine is axis aligned, build the AABB, then apply the local-to-world transformation to transform the AABB to an OBB. That seems a lot easier than trying to construct an OBB directly in world space. |
|
#2
| |||
| |||
| jraul wrote: > But it seems in practice, wouldn't you just transform to the space > where the submarine is axis aligned, build the AABB, then apply the > local-to-world transformation to transform the AABB to an OBB. Erm, no. > That seems a lot easier than trying to construct an OBB directly in > world space. Easier, yes, but that's not what creating an oriented bounding box is about. Note the name: an OBB is an _oriented_ BB, not an object-oriented one. The AABB in an object's default orientation is by no means guaranteed to be the optimal bounding box that could be put around that object. The reason for that is that we have no way of knowing why the default orientation was picked the way it was. There may be reasons to make the default orientation of a long, thin object be one in which it is diagonal to the coordinate axes. The whole point of computing an oriented bounding box is to _find_ the "default" orientation in which we get the smallest AABB. |
|
#3
| |||
| |||
| Hans-Bernhard Bröker wrote: > jraul wrote: > >> But it seems in practice, wouldn't you just transform to the space >> where the submarine is axis aligned, build the AABB, then apply the >> local-to-world transformation to transform the AABB to an OBB. > > > Erm, no. > >> That seems a lot easier than trying to construct an OBB directly in >> world space. > > > Easier, yes, but that's not what creating an oriented bounding box is > about. Note the name: an OBB is an _oriented_ BB, not an > object-oriented one. The AABB in an object's default orientation is by > no means guaranteed to be the optimal bounding box that could be put > around that object. The reason for that is that we have no way of > knowing why the default orientation was picked the way it was. There > may be reasons to make the default orientation of a long, thin object be > one in which it is diagonal to the coordinate axes. > > The whole point of computing an oriented bounding box is to _find_ the > "default" orientation in which we get the smallest AABB. Actually, though, if you're going to do collision detection on some oriented geometry, you may as well go to GJK and do it on arbitrary convex polyhedra. Incremental GJK, done right, is faster than an exhaustive collision check between two arbitrarily oriented boxes. John Nagle Animats |

