6

私はこれを使っていくつかの実装をしたいと思っています。しかし、いくつか疑問があります。de AABB の問題は、オブジェクトの軸を揃える必要があることです。そうしないと、フレームごとに bbox を再計算する必要があります。そうですか? その再計算は高価ですか?精度についてはどうでしょうか。bbox を細分化するコリジョン ツリーを作成できますか? AABB とどのように連携しますか?

OBB はオブジェクトの回転に向けられていますよね? ゲームが初期化される前に、ツリーを構築する必要があります。実装がはるかに難しく、少し高価であると読みましたが、精度が大幅に向上しました。しかし、オブジェクトがゲーム内で回転する場合、bbox はその回転を「自動的に」再計算しますか?

ゲームで最も使用されるのはどれですか?その理由は?

前もって感謝します :)

4

2 に答える 2

5

AABB、OBB、Spheres、Capsules ...の選択は、実行しているシミュレーションの種類と制約(通常はリア​​ルタイムアプリケーション)によって異なります。

あなたは賛否両論を評価し、それに応じてあなたの選択をする必要があります。たとえば、AABBを使用したテストは非常に高速ですが、オブジェクトが回転したときにAABBを再計算する必要があります。ただし、非常に複雑なオブジェクトを処理してBVHを処理する場合は、最下位のAABBを(「最初から」)再計算するだけでよいため、AABBツリーの更新は非常に高速です。上位のAABBは子AABBから構築されます。OBBを使用すると、テストにコストがかかりますが、剛体を扱う場合はOBBを再計算する必要はありません。

変形可能なオブジェクトを使用する場合は、とにかくツリーを更新する必要があるため、AABBツリー(または球体ツリー)の方が確実に適しています。

問題は、AABBツリーの更新またはOBBとのオーバーラップテストから生じるオーバーヘッドで、何がコストがかかるかということです。これはすべてシミュレーションによって異なります。オブジェクトの複雑さ、1秒あたりの平均CDテストなど...さまざまな形状のさまざまな方法(BVH、グリッドなど)に基づいて、特定の問題でテストされたさまざまなCDライブラリのベンチマークを見つけることができます。これがあなたが面白いと思うかもしれない例です。

実装に関しては、これらすべてが何年も前に研究され、多くの図書館で実装されているので、問題はないはずです。Christer Ericsonによるリアルタイム衝突検出を見ることができます。これらの質問はすべて、非常に明確に回答および説明されています。

異なる形状を組み合わせて使用​​することもできます。たとえば、1つは広いフェーズ用、もう1つは狭いフェーズ用(葉に到達した後)ですが、おそらくこのようなものは必要ありません。

于 2011-11-14T17:05:46.430 に答える
3

私の知る限り、物理エンジンの大部分は、衝突検出の広範なフェーズに AABB + スイープ アンド プルーン アルゴリズムを使用します。ツリーは、動的オブジェクト間の衝突検出にはほとんど役に立ちません。ただし、ツリーは静的ジオメトリにうまく使用できます

de AABB の問題は、オブジェクトの軸を揃える必要があることです。そうしないと、フレームごとに bbox を再計算する必要があります。そうですか?

はい、身体の向きが変わるたびに AABB を再計算する必要があります。しかし、ボックス、カプセル、コーン、シリンダーの場合、これは非常に安価な操作です。ポリゴン モデルの場合は確かにコストがかかりますが、ロー ポリ モデルの AABB 計算は通常のパフォーマンスです。

全体として、AABB 再計算は高価な狭位相アルゴリズムよりも優れています。

于 2011-11-06T18:44:03.700 に答える