衝突点を見つける


8

2D剛体シミュレータを書いています。シミュレートされるオブジェクトは凸状のポリゴンです。私の質問には、衝突の「ポイント」をどのように決定するかが含まれているため、応答力を適用すると、トルクも計算できます。

2Dでは、ナローフェーズコリジョン検出の一般的な方法は、分離軸定理のようです。ただし、これにより「衝突するのか」ということになります。「どれだけ?」と同様に、応答力を適用する(したがってトルクを計算する)基準点(私が知っている)は提供されません*。

もう1つの方法(これは3Dで使用されるため、これにも興味があります。これが論理的な次のステップになります)は、2つのポリゴンのミンコフスキー差を計算し、(0,0)が結果のポリゴンに含まれます。しかし、これをどのように使用して、応答力を適用する相対点を決定しますか?私の仮説は、この違いの各面はポリゴンの1つの面に事実上対応しているため、分離距離は(0,0)からMDまでの最短距離であり、これをポリゴンの対応する面に適用するとします。 。

おまけとして、3Dでこれをどのように行うのですか?

*これを書いているときに、SATを使用するときに、どのポイントが重複しているかを追跡し、それらのポイントの「平均」で力を適用できることに気づきました。しかし、私はこの小さなトリックを実行するためにいくつかの非分離軸のどれを決定する必要があります...

回答:


6

あなたが探しているキーワードは「支持点」「マニホールド」

Erin Cattoは、優れた2D物理エンジンを作成しました。彼は定期的にGDCに出席しています。あなたは彼が衝突多様体を説明する彼のスライドのいくつかを見つけることができるはずです。彼の物理エンジンの最初のバージョンは、サポートポイントを単純に計算するためにボックス形状のみをサポートしていました。これが、エンジンの名前がBox2Dになった場所です。

答えは複雑すぎてここで完全に説明することはできませんが、概要では、2つの形状から合計2つの点を選択する必要があります。次に、それぞれに均等に反発力を加えます。また、サポートポイントを1つだけ使用する方がよいというコーナーケースにも対処する必要があります。

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