I am trying to detect collision between two triangular surface meshes. I could use static triangular meshes as collision shapes and then tried to detect collision between them . Is this the correct way to do ?
Is there any problem in the code below?
The code what I am using for detecting collision between triangular mesh is
Code: Select all
trimeshShape = new btBvhTriangleMeshShape(m_indexVertexArrays,useQuantizedAabbCompression);
m_collisionShapes.push_back(trimeshShape);
btCollisionWorld* collisionWorld = 0;
if (m_collisionShapes.size() >1)
{
for (int index =1; index < m_collisionShapes.size(); index++)
{
m_collisionConfiguration = new btDefaultCollisionConfiguration();
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
btVector3 worldMin(-1000,-1000,-1000);
btVector3 worldMax(1000,1000,1000);
m_broadphase = new btAxisSweep3(worldMin,worldMax);
collisionWorld = new btCollisionWorld(m_dispatcher,m_broadphase,m_collisionConfiguration);
btCollisionAlgorithm* algo = collisionWorld->getDispatcher()->findAlgorithm(&objects[0],&objects[index]);
btManifoldResult contactPointResult(&objects[0],&objects[index]);
algo->processCollision(&objects[0],&objects[index],collisionWorld->getDispatchInfo(),&contactPointResult);
btManifoldArray manifoldArray;
algo->getAllContactManifolds(manifoldArray);
int numManifolds = manifoldArray.size();
int numContacts =0;
bool bCheckCollision = false;
for (int i=0;i<numManifolds;i++)
{
btPersistentManifold* contactManifold = manifoldArray;
numContacts = contactManifold->getNumContacts();
if (numContacts >0)
{
bCheckCollision = true;
break;
}
}
if (bCheckCollision == true)
{
return 1;
}
}
}
Thanks