본문 바로가기
3D Algorithm

AABB(Axis Aligned Bounding Box) 계산과 활용

by DarkRock 2024. 8. 22.
반응형

AABB 계산 기본 아이디어

AABB 계산은 object를 구성하는 점들을 순회하면서 x축, y축, z축의 최대최소를 구하면 됩니다.

아래와 같이 AABB가 계산되면 최소점은 (0,0,0)이고 최대점은(10,10,10)이 됩니다. 

AABB

 

이처럼 box는 점 8개 모두 이용해서 정의해도 되지만, AABB와 같이 각축에 box가 정렬되어 있다면 대각에 해당하는 두 점으로 box를 정의할 수 있습니다. box의 중심점은 (min+max)/2가 됩니다.

 

 

 

어떤 형상의 특징을 파악을 위해 AABB를 사용할 수 있습니다. 만약 아래와 같이 cylinder의 AABB를 계산했다고 하면 cylinder 높이는 zmax-zmin, 직경은 ymax-ymin 또는 xmax-xmin으로 계산할 수 있습니다. 

Cylinder AABB

 

이렇게 어떤 형상이 3축에 정렬되어 있을 때 특징을 계산하기 위해 AABB를 활용할 수 있습니다. 축에 정렬되지 않았다면 OBB(Oriented Bounding Box)를 사용해야 하겠죠.

그리고 AABB를 이용해서 두 물체의 충돌을 빠르게 계산할 수 있습니다. 두 물체의 AABB가 계산되면 각 축에 최대 최소 영역이 겹치는지를 판단해서 충돌을 판단할 수 있습니다. 각 축이 모두 겹쳐야 충돌로 판단합니다.
아래 그림은 2차원에서 한축만 겹칠 경우와 2축 모두 겹칠 경우를 비교한 그림입니다.

x축이 겹치지만 충돌이 일어나지 않음

 

x축, y축이 겹치고 충돌이 일어남

 

아래는 AABB와 OBB의 차이에 대한 글과 OpenMesh를 이용하여 AABB를 계산하는 코드가 있으니 참고하시기 바랍니다.

2023.12.11 - [3D Algorithm] - AABB OBB 차이와 의미

 

AABB OBB 차이와 의미

AABB(Axis Aligned Bounding Box)와 OBB(Oriented Bounding Box)는 모두 3D 그래픽스 및 게임 프로그래밍 분야에서 주로 사용되는 Bounding Box 계산 기법입니다.  AABB는 축에 정렬된 바운딩 박스로,

darkrock.tistory.com

 

2024.11.25 - [OpenMesh] - Bounding Box

 

Bounding Box

Bounding Box 계산Bounding Box는 3D 모델의 공간적인 범위를 나타내는 데 사용되는 기본적인 데이터입니다. OpenMesh에서는 각 Vertex의 위치 정보를 사용하여 메쉬의 Bounding Box를 계산할 수 있습니다.  B

darkrock.tistory.com

 

반응형

'3D Algorithm' 카테고리의 다른 글

Morton Code  (0) 2024.09.04
CAD Revolve  (1) 2024.09.03
임의의 점 직육면체 외부/내부 판별(Point Inside Cube)  (0) 2024.06.13
PLY File Format(포맷 정보)  (0) 2024.06.06
임의의 점 원기둥 내부/외부 판별 코드(c++)  (0) 2024.06.03