2 つの OBB の交点を見つけることについて、いくつかのスレッドを見てきました。最小浸透の軸を見つける方法がまだわかりません。交点を計算するためにテーブルのどの部分を使用する必要があるかを判断するために、David Eberly の論文の最後の分離軸とも呼ばれている最小貫通軸を見つける必要があります。これは論文であり、関心のあるページは 9 http://www.geometrictools.com/Documentation/DynamicCollisionDetection.pdfから始まります。
では、最小貫通軸/最後の分離軸を見つけるにはどうすればよいですか?
1 に答える
ここで働いているのは分離軸定理です。 http://en.wikipedia.org/wiki/Hyperplane_separation_theoremを参照してください。
そこに示唆されているように、ポリゴン メッシュの場合、テストする可能性のある分離軸は、2 つのオブジェクトの面法線と外積です。
OBB には 6 つの面があり、それぞれ 2 つが平行であるため、OBB ごとに固有の 3 つの法線があります。
外積の別の 3x3 は、テストする 3+3+3x3=16 の法線を提供します。
2 つの OBB を、これらの法線と点 (原点など) によって定義される線に投影します。
投影が重なっている場合、接触はありません (したがって、「分離」軸)。
あなたが求めているのは、最小浸透の軸です。これは、Eberly の論文では直接カバーされていないようです。
すべての投影のオーバーラップを比較し、最小のものを取得する必要があります。これがオーバーラップ深度になります。7 ページの Eberly の表 1 から各軸の R - (R_0 + R_1) を計算するとうまくいくはずです (ただし、実際の重なりを取得するには、6 ページの上部から除外されている共通の除算 L*L を実行する必要があることに注意してください)。深さ)。
オープン ダイナミクス エンジンのコード例: http://sourceforge.net/p/opende/code/1939/tree/trunk/ode/src/box.cpp (厳密に最小オーバーラップの軸を取得する場合は、fudge_factor を無視します)。
弾丸の物理学にも似たようなものがあると思います。