狭位相衝突検出アルゴリズム


10

衝突検出には3つのフェーズがあります。

  1. Broadphase:相互に作用する可能性のあるすべてのオブジェクト間でループします。ループを高速化する場合は、誤検知が許可されます。

  2. Narrowphase:それらが衝突するかどうか、場合によっては、どのようにして誤検知がないかを決定します

  3. 解決策:衝突を解決します。

私が尋ねている質問はナローフェーズについてです。複雑さと精度が異なる複数のアルゴリズムがあります。

  1. ヒットボックスの交差:これは事後アルゴリズムであり、複雑度は最低ですが、あまり正確ではありません。

  2. 色の交差:各ピクセルのヒットボックスの交差、事後、ピクセル完全、時間に関して正確ではない、複雑度が高い

  3. Separating axis theorem:これはより頻繁に使用され、三角形には正確ですが、エッジを見つけることができないため、事後的に、最後のフレームを考慮すると、より安定します

  4. 線形レイキャスティング先見的アルゴリズムは、半現実的に見える物理学に役立ち、交差点を見つけます。SATよりも正確ですが、より複雑です。

  5. スプライン補間:演繹的で、線形光線よりもさらに正確で、より複雑です。

私が忘れていたものはおそらくもっとたくさんあります。問題は、いつSATを使用した方がよいか、いつ光線を使用するか、いつスプラインを使用するか、そして何か良いものがあるかどうかです。

回答:


6

あなたが見逃している2つは、GJKとMPRです。

GJKは、2つの凸多角形の最も近い点を見つけるためのアルゴリズムです。少し余分な作業を行うことで、交差するオブジェクトの入射点を見つけ、衝突多様体を計算できます。これは、SATを使用する場合と同じように、ポリゴンクリッピングを介して行われますが、GJKはいくつかの手順を省略します(既に最も近いポイントがあるため)。

MPR(Minkowski Portal Refinement)は、GJKに似た別のアルゴリズムです(どちらもMinkowskiスペースを使用します)。GJKのような交差しないオブジェクト間の最も近い点を見つけることはできませんが、ゲームには他にも多くの優れたプロパティがあり、接触多様体を取得するために使用できます。

MPRは、ゲームで最も人気のあるものの1つです。非常に効率的で、数値的に安定しており、実装が簡単です。

その他の狭いフェーズは、特殊なゲームでより多く使用されます。レーシングゲームでは、通常、実際のタイヤのモデリングとしてレイキャスティングを使用し、従来の衝突形状と解像度のモデリングでは、現実的な(または単に楽しい)動作を得ることがまだできません。プラットフォーマーは、一般的に高度にカスタマイズされた衝突と物理を使用します。これは、「マリオのような」物理が従来の物理アルゴリズムでモデル化されていないためです。流体などのさまざまな衝突および物理法もよく目にしますが、私はそれらについてはあまり知りません。

見る:


3

私が言いたかったのは、定理ではなく、分離軸テストです。

移動しないポリゴン(2D)でSATを使用しますが、相対直線運動に対処するためにSATを拡張できます。

http://elancev.name/oliver/2D%20polygon.htm#tut3

2DでGJKを使用しないでください。実際には、SATをブルートフォースで強制するよりも遅いことがわかりました。

使用できるもう1つの手法は、ミンコフスキー差分です。これは、1つのオブジェクトをあるポイントまで縮小し、最初のオブジェクトの形状でもう1つのオブジェクトを「拡大」します。次に、結合したオブジェクトをはるかに簡単なポイントに対してテストします。これにより、侵入距離と法線が得られます。このツールは、新しい衝突検出の問題に取り組むために概念的に非常に役立つことがわかりました。SATよりも視覚化が容易です。

ポリゴン(および多面体)を移動および回転させる場合は、保守的な前進を使用して正確な時間と接点を見つけることができます。

http://www.continuousphysics.com/BulletContinuousCollisionDetection.pdf

これらのテクニックの詳細については、しばらく前に書いたこのブログ投稿を参照してください。

http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/

お役に立てば幸いです。

乾杯、ポール。


2
分離軸の定理:2つの凸状オブジェクトの投影が互いに素である場合、それらに沿って軸が存在します。分離軸テスト:前述の定理を実際に実行すると思います。
エリック、

0

これは本当にあなたが持っているゲームの種類に依存します。上記の各方法には、独自のトレードオフがあります。

ただし、SATは、私の経験では、一般的な物理ライブラリの例としてかなり標準的です。Box2Dはそれを広く使用しています(Angry Birdsや他の多くのゲームはBox2Dを使用しています)。

SATまたはHitboxの交差と混合された色の交差のバリエーションは、SonicやMegamanなどのゲームで使用され、良好な結果が得られます。

#4と#5についてはあまり知りません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.