軸平行境界ボックス(AABB:Axis-Aligned Bounding Box)
衝突判定方式の一つ
ヒットボックス方式の「基本的な方法」ではオブジェクトのバウンディングボックス(境界ボックス)の左上の点をオブジェクト自体の座標とみなし、そこから右下までの長さを取るのが一般的なのに対して、AABB方式ではヒットボックスの中心座標をオブジェクト自体の座標とみなし、そこからxyz軸方向に±何mの広がりがある、という表し方をする。ヒットボックスの中心を(x,y,z), 双方向への広がりの大きさを(rx,ry,rz)とすると、このヒットボックスは x方向については x-rx ~ x+rx, y方向には y-ry ~ y+ry, z方向には z-rz ~ z+rz の範囲を占める。 AABB方式は2Dの衝突判定を取る場合でも使われることがある。特に四角いヒットボックスと円形のヒットボックスの衝突判定を取る時は、四角いヒットボックスの座標をAABB方式で管理した方が楽である。
軸平行境界ボックス(AABB:Axis-Aligned Bounding Box)は最も一般的な境界ボリュームの1つです。
直方体3Dの場合は6つ、2Dでは4つの面を持つボックス型で、各面の方向はその面の法線が常に座標系の軸に対して平行になっています。AABBの最大の特徴は重なりの判定が高速に行えることです。
https://gyazo.com/55fe089ea0e59a6c983c8502a1b0b0a9
(画像は記事より引用)
AABB と 任意の点の最短距離の計算方法について
最短距離がゼロになる場合は、AABBの中に点があると判定できる
二次元の衝突検出と同様に、座標軸に沿ったバウンディングボックス(axis-aligned bounding boxes、AABB)は、2つのゲームエンティティが重複しているかどうかを判断するための最も速いアルゴリズムです。 これは、ゲームエンティティを回転しない(つまり座標軸に沿った)ボックスで包み、三次元座標空間でこれらのボックスの位置をチェックして、それらが重なっているかどうかを確認することで構成されます。 軸配置の制約があるのは、パフォーマンス上の理由からです。回転していない2つのボックスの間の重複領域は論理比較だけでチェックできますが、回転したボックスではさらに三角関数の演算を運営する必要があり、計算にかかる時間が長くなってしまいます。
軸配置の制約をもうけることで、シンプルな処理となって高速
2つのAABBの衝突判定サンプルコードがある