有没有办法在 Bullet Physics 中设置 Broadphase 滤波器回调,如下所示:
由两种形状构成的复合动态体,比如圆柱体和盒子,其中圆柱体只能与其他动态体内的圆柱体碰撞,而盒子只能与第三种物体碰撞,即静态球体
不允许其他碰撞:圆柱体与球体,不得碰撞;盒子与盒子,也不能碰撞
下图显示了我上面描述的内容
有没有办法在 Bullet Physics 中设置 Broadphase 滤波器回调,如下所示:
由两种形状构成的复合动态体,比如圆柱体和盒子,其中圆柱体只能与其他动态体内的圆柱体碰撞,而盒子只能与第三种物体碰撞,即静态球体
不允许其他碰撞:圆柱体与球体,不得碰撞;盒子与盒子,也不能碰撞
下图显示了我上面描述的内容
你可以这样做。这是代码
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
}