2012-10-24 41 views
5

裏面有沒有一種方法來設置Broadphase在子彈物理如下過濾回調:從兩個形狀建造子彈物理Broadphase過濾回調到單個形狀過濾複合體

複合動態物體,比如汽缸和一箱,其中氣缸只能與其他動力體內的氣缸碰撞,而氣缸只能與第三種物體碰撞,這是一個靜態球體,不能碰撞其他碰撞:帶有球體的氣缸,不得碰撞;與箱盒,絕不能發生碰撞或者

下圖顯示了我上面

collision-filter

回答

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 
} 
+0

你知道如果我可以檢索在一個形狀的用戶數據指針的化合物體內,這樣的:* btCollisionObject = collisionObject(btCollisionObject *)proxy0-> m_clientObject; customData * userData =(customData *)collisionObject-> getUserPointer(); – rraallvv

+0

'proxy1-> m_clientObject-> getUserPointer()' 這將工作 – Max

+0

嗯...是從整個事物中檢索userData,我需要從實際上碰撞的孩子的userData ...所以我可以告訴是否該形狀可能會碰撞或不......可能在API中沒有這樣做的功能 – rraallvv