게임 속 세상이 그럴싸하게 느껴지는 이유는 물체끼리 부딪힐 때의 반응 덕분입니다. 그런데 눈에 보이는 멋진 모델을 그대로 계산하면 컴퓨터가 견디지 못합니다. 그래서 프로그래머는 계산을 줄이기 위해 모양을 기본 형태(Primitive)라는 기하학 요소로 바꿉니다.
복잡한 겉모습 대신 계산하기 편한 도형으로 대상을 바꿔치기하는 셈입니다. 이 과정에서 정확도와 성능의 차이가 발생합니다. “이 물체를 어떤 모양으로 대신할까?”라는 고민이 시작되는 지점입니다.
기초적인 도형, 구와 캡슐
가장 기본적인 프리미티브는 구(Sphere)입니다. 중심점 하나와 반지름 하나만 있으면 정의되므로 계산이 정말 빠릅니다. 어느 방향에서 접근하든 똑같은 모양이라 회전을 신경 쓸 필요도 없습니다.
하지만 사람처럼 길쭉한 대상을 표현하기엔 너무 뭉뚱그려 보일 수 있습니다. 이를 보완한 것이 캡슐(Capsule)입니다. 원통 양 끝에 반구를 붙인 모양이라고 보시면 됩니다.
캡슐은 두 점과 반지름으로 만들어지며 인체 비율과 비슷하게 맞추기 좋습니다. 위아래로 길고 모서리가 둥근 덕분에 캐릭터 충돌체로 자주 쓰입니다.
상자 모양을 활용하는 방법
네모난 상자 형태도 많이 쓰이는데, 두 가지 방식이 있습니다. 먼저 AABB(Axis-Aligned Bounding Box)는 월드 축에 나란히 정렬된 박스입니다. 계산 속도가 매우 빠르다는 장점이 있습니다.

다만 회전이 불가능해서 물체가 기울어지면 실제 부피보다 빈 공간이 많이 생깁니다. 이 오차를 줄이고 싶을 때 OBB(Oriented Bounding Box)를 사용합니다.
OBB는 물체와 함께 회전할 수 있어 형태를 더 빈틈없이 감쌉니다. 대신 계산 비용은 조금 더 늘어납니다. 속도가 우선인지, 빈틈없는 포장이 우선인지 선택해야 합니다.
더 정밀한 형태를 위한 선택
박스보다 더 정교한 처리가 필요하다면 k-DOP라는 개념을 씁니다. 여러 개의 평면으로 깎아 만든 볼록한 형태라고 이해하면 쉽습니다. 상자보다 더 많은 방향에서 면을 잘라냈기에 빈 공간을 줄여줍니다.
아티스트가 만든 모양을 최대한 살리는 임의의 볼록 볼륨(Arbitrary Convex Volume)도 있습니다. 볼록한 메시 데이터를 여러 평면의 집합으로 변환해 사용하는 방식입니다. 눈에 보이는 모습과 충돌 범위가 거의 일치해야 할 때 유용합니다.
가장 정확하지만 무거운 방식
극단적으로 정밀함을 추구한다면 폴리 수프(Poly Soup)를 사용합니다. 삼각형들의 집합을 그대로 충돌 계산에 쓰는 방식입니다. 사실상 그래픽 메시 그 자체와 부딪히는 것과 다를 바가 없습니다.
정확도는 최고지만 계산량이 어마어마하게 많습니다. 그래서 플레이어처럼 계속 움직이는 대상에는 잘 쓰지 않습니다. 주로 건물이나 바닥처럼 움직이지 않는 정적인 환경에 적용하곤 합니다.
여러 형태를 조합하는 지혜
현실의 물체는 동그라미나 네모 하나로 딱 떨어지지 않습니다. 그래서 게임에서는 컴파운드 형태(Compound Shape)를 자주 활용합니다. 기본적인 도형 여러 개를 이어 붙여 하나의 객체를 구성하는 겁니다.
예를 들어 캐릭터의 몸통은 캡슐, 머리는 구, 팔다리는 작은 캡슐로 만드는 식입니다. 이렇게 하면 전체 윤곽은 비교적 정확하면서도 계산은 여전히 빠릅니다. 성능과 퀄리티를 모두 잡는 좋은 방법입니다.
계산을 줄이는 똑똑한 기술
복합적인 형태를 쓸 때 아주 유용한 최적화 단계가 있습니다. 바로 미드페이즈(Midphase)라는 과정입니다. 세부적인 도형들을 일일이 비교하기 전에 전체를 감싸는 큰 틀끼리 먼저 확인합니다.
큰 틀끼리 멀리 떨어져 있다면 내부의 세부 검사는 아예 건너뜁니다. 계산할 필요가 없는 상황을 미리 걸러내는 것이죠. 덕분에 수많은 물체가 등장하는 장면에서도 쾌적한 속도를 유지할 수 있습니다.
성능과 정확도 사이의 균형
어떤 프리미티브를 쓸지는 가벼운 기술 문제를 넘어선 설계의 영역입니다. 간결한 모양은 빠르고 안정적이지만 거칠고, 복잡한 모양은 정확하지만 비용이 듭니다.
프로그래머는 이 다양한 옵션을 상황에 맞게 섞어서 사용해야 합니다. 플레이어가 믿을 수 있는 게임 세계는 이런 고민과 최적화 끝에 탄생합니다.