I am trying to use the btBvhTriangleMeshShape, I tried to feed a btTriangleMesh and then a btTriangleIndexVertexArray, in both cases my models don't collide at all...
The funny thing is when I use btConvexTriangleMeshShape it works, well not really because it's not the actual shape that I want...
If I could get any help...
Code: Select all
btVector3* vert = new btVector3[mModel.header.vertexCount];
int* indices = new int[mModel.header.triangleCount*3];
for(int j=0; j<mModel.header.vertexCount; j++)
{
GLVertex* glVertex = &mModel.vertices[j];
vert[j] = btVector3(glVertex->position.x,glVertex->position.y, glVertex->position.z);
}
for(int j=0; j<mModel.header.triangleCount; j++)
{
for(int k = 0; k < 3; ++k)
{
indices[j*3 + k] = mModel.triangles[j].vertexIndices[k];
}
}
btTransform startTransform;
btQuaternion quat;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(0,0,0));
btDefaultMotionState* lMotionState = new btDefaultMotionState(startTransform);
btVector3 aabbMin(-1000,-1000,-1000),aabbMax(1000,1000,1000);
btBvhTriangleMeshShape* trimeshShape = new btBvhTriangleMeshShape(
new btTriangleIndexVertexArray(mModel.header.triangleCount,indices, sizeof(int),mModel.header.vertexCount,(btScalar*) &vert[0].x(),sizeof(btVector3))
,true,aabbMin,aabbMax);
btScaledBvhTriangleMeshShape* shape = new btScaledBvhTriangleMeshShape(trimeshShape,btVector3(1,1,1));
mRigidBody = new btRigidBody(1.f, lMotionState, shape, btVector3(0,0,0));
BulletEngine::GetInstance().GetDynamicWorld()->addRigidBody(mRigidBody);