5

有没有办法在 Bullet Physics 中设置 Broadphase 滤波器回调,如下所示:

由两种形状构成的复合动态体,比如圆柱体和盒子,其中圆柱体只能与其他动态体内的圆柱体碰撞,而盒子只能与第三种物体碰撞,即静态球体

不允许其他碰撞:圆柱体与球体,不得碰撞;盒子与盒子,也不能碰撞

下图显示了我上面描述的内容

碰撞过滤器

4

1 回答 1

3

你可以这样做。这是代码

struct FilterCallback : public btOverlapFilterCallback 
{ 
    virtual bool  needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const; 
}; 
// ....
FilterCallback filterCallback;
// ....
m_dynamicsWorld->getPairCache()->setOverlapFilterCallback(filterCallback);

bool  FilterCallback::needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const 
{ 
// return false for pair with no colision
}
于 2012-10-24T13:30:09.597 回答