addRigidBody or addCollisionObject?

Post Reply
gameover
Posts: 8
Joined: Wed Sep 30, 2015 8:51 pm

addRigidBody or addCollisionObject?

Post by gameover »

Hi,
Just wondering if there's any difference between these two methods when I have a btTriangleMesh that is only used for collision. In the demos a rigidbody is used set to static but I decided to try with a CollisionObject.
i.e. method1

Code: Select all

		
btDefaultMotionState* myMotionState = new btDefaultMotionState(groundTransform);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass, myMotionState, groundShape, localInertia);
btRigidBody* body = new btRigidBody(rbInfo);
body->setCollisionFlags(body->getCollisionFlags() | btCollisionObject::CF_STATIC_OBJECT);
m_DynamicsWorld->addRigidBody(body);
or using only collisionobject

Code: Select all

		
btCollisionObject* colObj = new btCollisionObject();
colObj->setWorldTransform(groundTransform);
colObj->setCollisionShape(groundShape);
colObj->setCollisionFlags(colObj->getCollisionFlags() | btCollisionObject::CF_STATIC_OBJECT);
m_DynamicsWorld->addCollisionObject(colObj);
Thanks.
Flix
Posts: 456
Joined: Tue Dec 25, 2007 1:06 pm

Re: addRigidBody or addCollisionObject?

Post by Flix »

gameover wrote:Just wondering if there's any difference
1) Memory impact: the btRigidBody class is bigger, so that if you use hundreds of static bodies it can make a big difference.
2) Constraints: they accept only btRigidBodies: so you can't use btCollisionObjects at all (AFAIK).
3) Setup: if you use btCollisionObjects, I suggest you look the btRigidBody ctr and the btDiscreteDynamicsWorld::adRigidBody(...) method to set up all the correct flags for static objects.
I say that, because I remember that once I missed a flag (I don't remember what it was), and then all the vehicles that were standing over my "btCollisionObject ground" could never enter sleep mode.

In short my advice is: use btCollisionObjects but be careful.
gameover
Posts: 8
Joined: Wed Sep 30, 2015 8:51 pm

Re: addRigidBody or addCollisionObject?

Post by gameover »

Thanks Flix, I'll check it out.
Post Reply