web-dev-qa-db-ja.com

AABB-衝突検出とは何ですか?

こんにちは、ボクセルゲームをJavaで作成しています。学習する必要のあるさまざまなことをすべて調査していると、多くのゲームで[〜#〜] aabb [ 〜#〜]衝突検出用。そして、Minecraftでも[〜#〜] aabb [〜#〜]を見たことを思い出しました。しかし、私が[〜#〜] aabb [〜#〜]をグーグルで検索すると、他の人のコード、または歴史の本から抜け出した組織が見つかるだけです。 Stackoverflow、[〜#〜] aabb [〜#〜]

41
SemperAmbroscus

AABBは「 Axis-Aligned Bounding Box 。」の略です。

これは、2つのオブジェクトが接触している可能性があるかどうかを確認するために一般的に使用される、ボリュームを表すかなり計算上およびメモリ効率の良い方法です。

軸に沿っているため、必ずしも実際の3Dオブジェクトに非常にうまくフィットするとは限りません。 AABBチェックは、オブジェクトが衝突する可能性があるかどうかを確認するための粗い第一近似としてよく使用されます。次に、AABBチェックに合格すると、より詳細なチェックが行われます。

例:

あなたの世界が2Dであり、それをグラフ用紙に描くと想像してください。世界にはいくつかのオブジェクト(ボール、木など)があります。オブジェクトの1つに対してAABBを作成するには、オブジェクトの周囲に長方形を描き、線を紙のグリッド線に平行にします。

2つのオブジェクトのAABBがある場合、それらのAABBが重複しているかどうかを確認するために、かなり簡単な計算を行うことができます。それらが重ならない場合、これらの2つのオブジェクトは触れられない可能性があるため、コリジョンアルゴリズムの初期段階で簡単に実行できます。

これはかなり簡単に3D(およびより多くのD)に一般化されます。

gamedev.stackexchange.com も確認してください。

45
jwd

軸整列境界ボックス

基本的に、形状を完全に含むことができる最小の立方体で、通常は3次元座標のペアで定義されます。

2つのAABB間の衝突をチェックするのは非常に高速です。必要なのは、コーナーのX、Y、Z値の範囲をチェックするだけです。

7
Tim B