Create an oriented bounding box from vertices

Posted on 2009-05-04
Medium Priority
Last Modified: 2013-12-17
Hi there,

I'm doing this in XNA but it shouldn't be too different in DirectX
I'm getting the vertices of a box mesh from the vertexbuffer, now from those vertices I'd need to recreate that box as an oriented bounding box.
This is my code, in transformedvertices my vertices are stored in world space, a total of 24, now I'd need to be able to turn that into an oriented bounding box.
Anyone have any ideas?

Thanks in advance.
ModelMeshPart part = modelmesh.MeshParts[j];
                n = part.NumVertices;
                VertexPosition[] vertices = new VertexPosition[part.NumVertices];
                modelmesh.VertexBuffer.GetData<VertexPosition>(part.BaseVertex * part.VertexStride, vertices, 0, part.NumVertices, part.VertexStride);
                int t = MySkinnedModel.SkeletonBones.Count;
                string[] names = new string [t];
                for (int p = 0; p < t; p++)
                    names[p] = MySkinnedModel.SkeletonBones[p].Name.ToString();
                Vector3[] transformedvertices = new Vector3[(part.NumVertices)];
                Matrix transformmatrix = MyAnimationController.SkinnedBoneTransforms[0];
                for (int i = 0; i < part.NumVertices; i++)
                    transformedvertices[i] = Vector3.Transform(vertices[i].Position, transformmatrix);

Open in new window

Question by:Snapples
  • 3
  • 2
LVL 20

Accepted Solution

ikework earned 1500 total points
ID: 24302428
hi Snapples,

this might be interesting for you:


another technique is to compute a covariance-matrix of the point-cloud to compute the bounding box.


Author Comment

ID: 24325501
Thanks for the link, I hadn't seen that one yet. Unfortunately it's of no use to me, I should have mentioned this. The bounding box surrounds part of an animated mesh, so the box has to be updated every frame. The code in your link is too performance heavy to run every single frame.
LVL 20

Expert Comment

ID: 24326621
ok i see .. did you try the covariance-matrix yet?

Author Comment

ID: 24347474
I found the solution I needed.

In my OBB class, I have a global Vector3[24] array, in the constructor I fill it with the VertexBuffer of my mesh. I also have an Edge and a Quad struct, which has 2 and 4 short values in which I store the IndexBuffer values of the edges and faces. So basically storing every vertex, edge, face and quad with a minimum of data. Every frame I just have to transform the Vector3 array with the transformation matrix of the bone.
Then to check for collision I check if any of the edges of box1 collide with any faces of box2.

But thank you ike, I did get a lot of help from that first link you posted.
LVL 20

Expert Comment

ID: 24348308
great to hear that .. good luck .. :)

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Recently, in one of the tech-blogs I usually read, I saw a post about the best-selling video games through history. The first place in the list is for the classic, extremely addictive Tetris. Well, a long time ago, in a galaxy far far away, I was…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
Watch the video to know how one can repair corrupt Exchange OST file effortlessly and convert OST emails to MS Outlook PST file format by using Kernel for OST to PST converter tool. It can convert OST to MSG, MBOX, EML to access them. It can migrate…
Watch the video of Kernel Migrator for SharePoint, which demonstrate the process easily of migration from SharePoint to SharePoint, OneDrive for Business & Google Drive servers, Public Folder to SharePoint, File Server to SharePoint. The tool has va…

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question