Jump to content
  • Advertisement
Sign in to follow this  
jon723

Oriented bounding box flattening

This topic is 5036 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have a mesh that is oriented in some arbitrary way and I've computed the OBB for it. What I would like to do is orient the box such that it aligns itself the the axes in 3D space yet retain its tight fit around the object. Can anyone tell me of an algorithm that takes an OBB and aligns it so that the box (along with the mesh WITHOUT manipulating the mesh data) so that it lies flat in 3D space???? Thank you Jon

Share this post


Link to post
Share on other sites
Advertisement
I'm not quite sure I follow what you're saying. Can you or anyone explain in more detail about normalizing the base of the bounding box and then making a matrix out of it. The method I used to create the bounding box was found by finding the orientation of the mesh (by rotating it around) and then applying the orientation to the min and max of the box defined by the mesh. Is there a way I can backtrack and create a matrix for the bounding box??? Much thanks for your replies

Share this post


Link to post
Share on other sites
I'm not really thinking this out on paper, so be aware there might be some mistakes.

What Shadow was saying is that for your OBB your should have 3 axis X', Y', Z' which your box is alligned to. so first normalize them (make them unit length). Then create a change of bases matrix out of them
| X'x Y'x Z'x |
| X'y Y'y Z'y | = R
| X'z Y'z Z'z |

This matrix should change any coords in world space (allinged to X, Y, Z) into values of your OBB space (alligned to X', Y', Z'). What you need is the inverse, since this is a change of basis matrix the inverse is the transpose

| X'x X'y X'z | -1
| Y'x Y'y Y'z | = R
| Z'x Z'y Z'z |

multiplying any point by this matrix will change any point on your bounding box (or in that space actually), into a the a point in world space.

I'm pretty sure this is correct and should technically "rotate" your OBB around to make it allign with the world coordinate system.

The problem you may have though is maintaining that tight fit. If you simply turn the box with the model not moving, you will not be guarenteed that your box is a tight fit, or that it even bounds the entire object anymore.

My question would be 1) what exactly are you trying to do here? and 2) could it possibly be easier to calculate the AABB instead?

--Ninj4D4n

Share this post


Link to post
Share on other sites
Well the reason I'm using OBB is exactly because of the tight fit of the object and the interactions that the objects are doing require them to have a tight fit because of the kinds of collision detection. The reason I'm trying to get the box flat is because I'm trying to align my object with another reference object which is oriented "flat" such that when it is loaded it is aligned to the axes (thats the way the object has been modeled).

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!