次のように、Bullet Physics で Broadphase Filter Callback を設定する方法はありますか。
円柱とボックスなどの 2 つの形状から構築された複合動的ボディ。円柱は他の動的ボディ内の円柱とのみ衝突でき、ボックスは静的な球体である第 3 の種類のボディとのみ衝突できます。
他の衝突は許されません: 円柱と球体は衝突してはなりません; ボックスとボックス、どちらも衝突してはなりません
次の画像は、私が上で説明したことを示しています
次のように、Bullet Physics で Broadphase Filter Callback を設定する方法はありますか。
円柱とボックスなどの 2 つの形状から構築された複合動的ボディ。円柱は他の動的ボディ内の円柱とのみ衝突でき、ボックスは静的な球体である第 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
}