프로그래밍 언어/C & C++ 정리

OBB 충돌

게임 개발 2023. 4. 6. 18:43

OBB 충돌 체크 알고리즘 설명이다.

이 설명은 벡터를 다룬다.

벡터와 벡터의 내적을 모르면 이해하기가 어려울 수 있다.

 

AABB와 OBB는 직사각형 모양의 Bounding Box를 이용해 객체들이 충돌했는지를 판단한다.

 

AABB는 Axis Aligned Bounding Box의 약자로, 축 방향으로 정렬된 경계 경계 상자(Bounding Box)를 뜻한다.

2차원으로 생각했을 때, 모든 변이 x, y 축에 평행한 직사각형을 경계 상자로 정해 충돌 체크를 한다.

 

반면, OBB는 Oriented Bounding Box의 약자로, 방향성이 있는 경계 상자(Bounding Box)를 뜻합니다.

2차원으로 생각했을 때, 회전이 있는 (회전이 된) 도형을 경계 상자로 정해 충돌 체크를 합니다.

(이 글에서는 2차원 OBB, 그 중, 경계 상자가 직사각형 형태인 경우만 다룰 것이다.)

 

OBB는 분리 축 이론을 기반으로 동작한다.

 

분리 축 이론을 간단하게 설명하자면,

두 블록 다면체 (혹은 블록 다각형)를 분리할 수 있는 선(축)이 있다 <=> 두 블록 다면체(혹은 블록 다각형)는 충돌하지 않았다.

라고 할 수 있다. 

따라서 OBB의 경계 상자(Bounding Box)가 직사각형 뿐만 아니라 다른 블록 다면체, 

혹은 블록 다각형 형태도 가능하지만 이 글에서는 경계 상자가 직사각형인 경우만 다르다.

 

 

'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글

C++ STL Pair & Map  (0) 2023.04.10
C++ STL) deque란?  (0) 2023.04.10
생성자를 통한 자동 형변환, 변환 함수  (0) 2023.03.02
분할 컴파일  (0) 2023.02.21
L-Value R-Value  (0) 2023.02.20