2015-09-21 30 views
0

是否可以計算子彈物理中兩個CollisionObjects之間的最小距離?子彈物理中物體間的最小距離

凹形物體怎麼樣?也許它需要凸分解?

即使點對點距離計算器也會有用。

回答

1

作爲圖書館的作者,Bullet link沒有正面的距離信息。 從碰撞測試中提取這些信息會很容易,但您需要自行修改子彈碰撞檢測。對於不同的形狀對有很多碰撞算法,但是它們中的每一個都在某個階段處理關於距離的信息。

但是,還有另一種推薦的方法來獲得兩個對象之間的近似距離。你可以通過從第一個物體的中心到第二個物體的中心進行射線測試來完成,存儲碰撞點(它應該位於第二個物體的船體上)。接下來執行反向測試(從第二個對象到第一個對象)並計算兩個存儲點之間的距離。當然你需要檢查命中的對象是否真的是你想要計算的距離。如果它們之間存在障礙物,它將不起作用。

要執行射線測試,您需要一個rayTest(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback)方法btCollisionWorld。使用示例可以在here找到。

如果您希望它更準確,您可以使用convexSweepTest方法執行掃描球體測試,而不是投射單個射線。

您需要注意的是,這些方法僅提供近似的溶劑,因爲沒有保證,命中點是最接近的。但是,它們對於大多數應用程序已經足夠了

+0

非常感謝@Est!事實上,我做了類似於你的建議,檢查邊界球與_augmented_ radius之間的碰撞,然後添加一個邏輯來處理接觸歧管點。使用raytest可以提供快速的結果,但如果凹面物體的邊界框中心不在物體內部,將會失敗。 – Nic