But for some reason, the test model (which is comprised of RigidBodies in the 1st mode, and CollisionObjects in the 2nd mode) runs _slower_ just collision-only. We're talking 6-7 times slower.
I was expecting it to run way faster than Dynamics, since dynamics does the collision detection + the physics sim.
Code: Select all
btCollisionDispatcher* dispatcher = new btCollisionDispatcher();
btVector3 worldAabbMin(-50,-50,-50);
btVector3 worldAabbMax(50,50,50);
// omitted--register some custom collision algorithms (doesn't seem to affect performance much)
const int maxProxies = 32766;
btOverlappingPairCache* broadphase = new btAxisSweep3(worldAabbMin,worldAabbMax,maxProxies);
m_CollisionWorld = new btCollisionWorld(dispatcher,broadphase);
Code: Select all
btCollisionObject* obj = new btCollisionObject();
btMatrix3x3 basis;
basis.setIdentity();
obj->getWorldTransform().setBasis(basis);
obj->setCollisionShape(shape);
m_CollisionWorld->addCollisionObject(obj);
Code: Select all
m_CollisionWorld->performDiscreteCollisionDetection();
int numManifolds = m_CollisionWorld->getDispatcher()->getNumManifolds();
return (numManifolds > 0) ? true : false;
gjkepa_impl::EPA::EvaluatePD(float)
followed by gjkepa_impl::EPA::BuildHorizon(....)
but in dynamics mode, the #1 time-burner is btCapsuleShape::localGetSupportingVertexWithoutMargin(btVector3 const&) const
Anybody have any ideas?