btCollisionObject (static) vs raycast vehicle. wrong mask?

Post Reply
eL
Posts: 2
Joined: Tue Nov 08, 2005 8:36 am

btCollisionObject (static) vs raycast vehicle. wrong mask?

Post by eL »

hello,

i have a problem with btCollisionObject vs raycast vehicle based on VehicleDemo.
Vehicle raycast test works when i place vehicle on rigidbody with mass == 0.0. This
ground body i'm creating like this:

Code: Select all

shape = new btStaticPlaneShape(btVector3(0, 0, 1), 0);
btRigidBody::btRigidBodyConstructionInfo info(0, 0, shape, btVector3(0, 0, 0));
body = new btRigidBody(info);
world->addRigidBody(body);
but when i create plane using btCollisionObject this way:

Code: Select all

coll = new btCollisionObject();
coll->forceActivationState(ISLAND_SLEEPING);
coll->setCollisionShape(new btStaticPlaneShape(btVector3(0, 0, 1), 0);
world->addCollisionObject(coll);
it looks like raytests ignore my collision object and collision occur with vehicle body only - not wheel rays.
Default filter and mask args of addCollisionObject() and addRigidBody(body with mass=0.0) looks same.

Missing something in btCollisionObject setup? What could be wrong please?
xexuxjy
Posts: 225
Joined: Wed Jan 07, 2009 11:43 am
Location: London

Re: btCollisionObject (static) vs raycast vehicle. wrong ma

Post by xexuxjy »

Not sure if the masks are quite the same.
Adding a rigid body with zero mass gives :

collisionFilterGroup = btBroadphaseProxy::StaticFilter;
collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter;
whereas simple collision object add gives :
collisionFilterGroup=btBroadphaseProxy::DefaultFilter,
collisionFilterMask=btBroadphaseProxy::AllFilter);

Though thinking more thats unlikely to cause the issue directly.

Can you post your CollisionWorld, BroadphaseProxy and RayTest setup code to see if theres anything odd there? Or you could just step throug btCollisionWorld::rayTestSingle and see why it's not picking up your plane shape.
eL
Posts: 2
Joined: Tue Nov 08, 2005 8:36 am

Re: btCollisionObject (static) vs raycast vehicle. wrong ma

Post by eL »

my setup:

Code: Select all

collconf = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(collconf);
broadphase = new btAxisSweep3(min, max);
solver = new btSequentialImpulseConstraintSolver();
world = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, collconf);
world->getSolverInfo().m_solverMode |= SOLVER_ENABLE_FRICTION_DIRECTION_CACHING;
world->getSolverInfo().m_numIterations = 2;
world->setGravity(btVector3(0, 0, -20));
world->setForceUpdateAllAabbs(false);
class btDiscreteDynamicsWorld overrides method addCollisionObject with these defaults:

Code: Select all

	virtual void	addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::StaticFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);

i'll try step through rayTestSingle(), good point.
Post Reply