Sign in to follow this  

Extracting box Vector3 from LPD3DXMESH box

This topic is 1847 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 LPD3DXMESH box that I load from .x file, I'm trying to setup physics for it.
[CODE]
LPD3DXMESH box;
btBoxShape *box = new btBoxShape(btVector3(???));
[/CODE]

How can I get btBoxShape Vector3 in order to create a box with the same length, width, height in bullet physics?

Basically, I am trying to convert LPD3DXMESH to btBoxShape.

Share this post


Link to post
Share on other sites

Maybe you have to compute the vertex info, getting it from ID3DXBaseMesh::GetVertexBuffer and calculate the with, length and height to pass them to the btBoxShape constructor.

Share this post


Link to post
Share on other sites

Hi,

 

I'm able to get the width, length and height by using D3DXComputeBoundingBox()

 

float width = max.x - min.x;
float length = max.y - min.y;
float height = max.z - min.z;

The problem is that I'm not sure how can I pass the values to btBoxShape, I tried:

 

btBoxShape* box = new btBoxShape(btVector3(width / 2.0f, length / 2.0f, height / 2.0f));

But, I'm not getting a box with the same size.

Share this post


Link to post
Share on other sites
Hi,

 

I'm able to get the width, length and height by using D3DXComputeBoundingBox()

 

float width = max.x - min.x;
float length = max.y - min.y;
float height = max.z - min.z;

The problem is that I'm not sure how can I pass the values to btBoxShape, I tried:

 

btBoxShape* box = new btBoxShape(btVector3(width / 2.0f, length / 2.0f, height / 2.0f));

But, I'm not getting a box with the same size.

Maybe you are getting an AABB and you are expecting a not axis aligned bounding box?

Share this post


Link to post
Share on other sites
Hi,

 

I'm able to get the width, length and height by using D3DXComputeBoundingBox()

 

float width = max.x - min.x;
float length = max.y - min.y;
float height = max.z - min.z;

The problem is that I'm not sure how can I pass the values to btBoxShape, I tried:

 

btBoxShape* box = new btBoxShape(btVector3(width / 2.0f, length / 2.0f, height / 2.0f));

But, I'm not getting a box with the same size.

Maybe you are getting an AABB and you are expecting a not axis aligned bounding box?

This is bound to be the problem - Bullet documentation describes the btBoxShape as an OBB and MSDN describes D3DXComputeBoundingBox as returning an AABB.

Share this post


Link to post
Share on other sites
You forgot a *bdum tish* after the "bound to be the problem" gag ;)

XD

 

Sorry, I had forgotten completely how to say OBB in English, so I said non AABB

Share this post


Link to post
Share on other sites

[quote name='Steve_Segreto' timestamp='1356293167' post='5013750']
This is bound to be the problem - Bullet documentation describes the btBoxShape as an OBB[/quote]Actually not. At least not in the documentation I remember. Could you point out the exact statement?

btBoxShape is an AABB. A btRigidBody using btBoxShape can be arbitrarly oriented, therefore making it an OBB.

Share this post


Link to post
Share on other sites
btBoxShape.h: Line 26
 
///The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space.
 
Thanks for the clarification, I was wrong ... btBoxShape *IS* AABB
Edited by Steve_Segreto

Share this post


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