게임 수학의 대분류

영역의미게임에서 하는 일
공간의 수학가상 세계 자체를 만드는 수학좌표계, 벡터공간
물체의 수학물체를 표현하는 방법정점, 삼각형, 메시
회전의 수학물체를 회전시키는 방법삼각함수, 행렬, Quaternion

공간의 수학

1단계: 벡터 공간

게임에서 우리가 다루는 세계는 겉보기에는 3차원 공간입니다.
하지만 컴퓨터는 공간을 직접 이해하지 못합니다.

컴퓨터가 이해할 수 있는 것은 숫자뿐입니다.

이처럼 벡터 공간은 게임이 사용하는 가상 공간을 표현하는 수로 정의된 시스템입니다. 게임 속 물체의 위치, 방향, 크기 ㅡ 전부 벡터 공간 안의 값들로 표현됩니다.


Scalar vs Vector

물리학 관점:

정의예시
스칼라크기만 있는 값온도 25°
벡터크기 + 방향을 가진 값북쪽으로 100km/h, (3, 5)

수학적 관점:

  • 스칼라 = 하나의 수
  • 벡터 = 여러 축에 걸친 값

이게 왜 중요하냐면, 게임에서 다루는 건 단순한 수가 아니라 공간 안의 원소들이기 때문입니다.


2단계: 변환

백터 공간을 정의했다는 건, 공간 안의 모든 것을 수로 표현할 수 있다는 뜻입니다.

그런데 게임은 정적인 공간이 아니죠. 캐릭터가 움직이고, 카메라가 돌아가고, 물체가 커지고 작아지기도 하죠. 즉 공간 안의 원소들을 계속해서 다른 값으로 바꿔야 합니다. 이것을 **변환(Transform)**이라고 합니다.

그리고 게임은 이 변환을 1초에 60번 이상 수행해야합니다. 그 말은 즉,

매 프레임마다 보이는 물체의 새로운 위치/ 방향/ 크기를 다시 계산해야 한다는 말이죠.

그렇기에 60프레임이상을 유지하려면 변환은 빠르고, 단순하고, 일관되어야 합니다. 그래서 등장하는 게 바로 선형 변환(Linear Tranformation) 입니다.

선형 변환은 두 가지 성질을 만족하는 변환입니다.

1. f(a + b) = f(a) + f(b)   → 덧셈이 보존된다
2. f(k·a) = k·f(a)          → 스칼라 곱이 보존된다

직선은 변환 후에도 직선이고, 원점은 원점에 그대로 있다는게 핵심입니다.


하지만 선형 변환을 매번 수식으로 계산하면 너무 복잡해서 행렬이라는 형태로 압축해서 표현해서 변환이 적용됩니다. 즉 행렬(matrix)은 선형 변환을 수행하는 도구이자, 공간을 변환하는 도구이죠

[이동하기]  [회전하기]  [크기 바꾸기]
    ↓           ↓           ↓
  행렬 T      행렬 R      행렬 S

이 수식을 곱하기만 하면 변환이 적용됩니다. GPU는 이 행렬 연산을 엄청나게 빠르게 처리하도록 설계된 것이죠.

여기까지 공간의 수학에서 가장 중요한 개념을 정리하면 다음과 같습니다.

수의 체계 → 벡터 공간   →   선형 변환   →   행렬
             (공간)        (바꾸는 것)    (도구)

3단계: 렌더링 파이프라인

행렬로 변환을 표현할 수 있게 됐습니다. 그럼 실제 게임에서 이 변환이 어떤 순서로 일어나는지 보시죠. 게임 화면에 물체 하나가 보이기까지, 공간은 총 4단계를 거쳐 변환됩니다.

Local Space          | 물체 기준 좌표계
   ↓
World Space          | 게임 세계 전체의 좌표계
   ↓
View Space           | 카메라 시점의 좌표계
   ↓
Projection Space     | 3D공간 → 2D 화면으로 투영

각 단계마다 행렬이 하나씩 곱해져

로컬 공간
× 모델 행렬 (M)
월드 공간
× 뷰 행렬 (V)
뷰 공간
× 투영 행렬 (P)
사영 공간

셰이더 코드에서 흔히 보이는 MVP 행렬이 바로 이겁니다.

그리고 Projection Space에서 카메라에 보이는 영역을 6개의 평면으로 잘라낸 도형이 Frustum입니다. 이 안에 포함된 물체만 렌더링하고 나머지는 계산하지 않는 방식을 프러스텀 컬링이라고 합니다. 60프레임을 유지하기 위한 핵심 최적화이죠.


공간의 수학 전체 흐름 정리

벡터 공간        →  공간을 수로 정의
선형 변환 & 행렬  →  공간을 빠르게 변환하는 도구
렌더링 파이프라인 →  변환이 실제로 적용되는 순서
절두체           →  보이는 것만 골라내는 최적화

참고자료