內容很多摘自
Aman JIANG(江超宇)翻譯的Box2D v2.0.1 使用者手冊
第12章 調試繪圖(Debug Drawing)
實現 b2DebugDraw 可得到物理世界的細部圖,這裡是可用的實體:
• 形狀輪廓
• 關節連通性
• 核心形狀(用於連續碰撞)
• broad-phase的AABB,包括世界的AABB
• polygon oriented bounding boxes (OBBs)
• broad-phase pairs (potential contacts)
• 質心
這是繪製這些物理實體的首先方法,比直接存取資料要好。因為很多的必要資訊只能在內部訪問並時有變更。
testbed使用debug drawing和接觸監聽器來繪製物理實體。它本身就是個好例子,示範了怎樣去實現debug drawing以及怎樣會繪製接觸點。
第13章 限制(Limitations)
Box2D使用了一些數值近似來讓類比更高效。這就帶來一些限制。
這是當前的限制:
1. 將重的物體放到相對很輕的物體上面,會不穩定。當品質比到10:1時,穩定性就會降低。
2. Polygons may not slide smoothly over chains of edge shapes or other polygon shapes that are aligned. For this reason, tile-based environments may not have smooth collision with box-like characters.這個問題在將來會被修複。
3. 用關節將body連結起來,如果是較輕的body吊著較重的物體,body連結有可能被展開。比如,一條很輕的鎖鏈吊著個很重的球,就可能不穩定。當品質比超過10:1時,穩定性就會降低。
4. 通常還有約0.5cm的間隙,就檢測到形狀與形狀碰撞。
5. 連續碰撞是按順序處理的。在發生撞擊事件時,body會向後移動,並在剩餘的時間步內停留在那裡。這可能會使得快速移動的物體,移動起來不太平滑。
第14章 參考(References)
Erin Catto 的 GDC 教程: http://code.google.com/p/box2d/downloads/list
3D互動環境下的碰撞檢測(Collision Detection in Interactive 3D Environments), Gino van den Bergen, 2004
即時碰撞檢測(Real-Time Collision Detection), Christer Ericson, 2005