Bullet Physics Broadphase Filter回调过滤复合体内的各个形状

rra*_*lvv 5 filter collision bulletphysics

有没有办法在Bullet Physics中设置Broadphase Filter Callback如下:

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

不允许任何其他碰撞:带球体的圆柱体,不得碰撞; 带盒子的盒子,也不要碰撞

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

碰撞过滤器

Max*_*Max 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
}
Run Code Online (Sandbox Code Playgroud)