2020 부산콘텐츠아카데미 오픈특강 - Chapter 2. 게임 수학

22 Dec 2020

부산콘텐츠아카데미에서 유튜브를 통해 공개 강의를 진행한다는 소식을 듣고 사전 예약을 신청했다. 게임 그래픽과 게임 프로그램 각각 하나씩, 총 두 가지 강좌를 진행했다.

  1. Chapter 1. 게임 그래픽 튜토리얼 “게임 장르별 특징에 기반한 아트 디렉팅” - 원태일 그래픽 팀장/AD((주)컴투스)
  2. Chapter 2. 게임 프로그램 튜토리얼 “게임 수학공부 처음부터 새롭게!” - 이득우 사무국장(부산인디커넥트페스티벌 조직위원회)

그 중 두 번째 강좌인 게임 프로그램 튜토리얼을 듣고 그 내용을 요약했다.

특강 내용 요약

게임을 위한 수학을 공부하려고 한다면, 입시 수학말고 다른 관점에서 “수”를 바라보는 전환이 필요하다.

게임 수학의 세 가지 분류

  1. 공간을 구성하는 수학
  2. 물체를 표현하는 수학
  3. 회전의 수학

오늘의 토픽은 첫 번째 “공간을 구성하는 수학”에 다룬다.

공간을 구성하는 수학

  • 수 직선: 직선 위에 점을 찍어서 표현함
  • 두 직선을 조합한 이차원 공간: 컴퓨터로 만들어지는 가상 공간

벡터와 행렬

게임 수학에서의 벡터: 물리적 의미의 벡터가 아니라 수학적 의미의 벡터 -> 추상적인, 수학적인 벡터

  • 수의 대수적인 구조를 이해해야 한다.
  • 체(Field)를 이해해야 한다.

체를 이해하려면 사칙연산으로 돌아가야 한다.

체란?

이에 대해서는 강좌 내용을 제대로 듣지 못 했다. 대강 아래의 연산이 성립하는지에 따라 체의 성질을 만족하는지 여부를 따져본다고 했었던 걸로 기억한다.

  • 덧셈, 곱셈
  • 항등원, 역원
  • 교환, 결합, 분배법칙

실수는 체의 성질을 만족한다 -> 벡터를 만들 수 있다.

스칼라

  • 체에서 꺼내온 수
  • 물리의 벡터처럼 위치를 가진 게 아니라 “체 집합에서 가져온 요소”라는 의미를 갖게 된다.

벡터 스페이스: 2,3차원 벡터가 가지고 있는 질서를 구현한 공간

현실세계와 가상세계는 물체가 다르게 움직인다.

  • 현실세계: 공간은 가만히 있고 물체가 움직인다.
  • 가상공간: 가상공간의 모든 물체는 독립된 공간이 부여돼있다. 이를 “로컬공간”이라고 부른다.

게임 공간에 물체를 배치하는 것은 물체를 포함한 로컬 공간이 함께 들어가는 것이다. 가상 공간에서는 물체는 가만히 있는다. 공간이 변하면서 물체를 변화시킨다. 물체의 트랜스폼 설정: 이동, 크기, 회전을 지정한다. 물체를 변화시키는 것이 아니고 물체를 담은 공간을 변형시켜서 물체를 조정한다.

공간을 구성하는 기저 벡터

  • 공간의 기반을 이루는 주춧돌 같은 역할
  • 공간을 늘리고 싶다면, 기저 벡터를 늘려준다.

표준 기저벡터

  • e1 = (1,0): 좌우로 늘리기
  • e2 = (0,1): 상하로 늘리기
표준기저백터 e1x  + e2y  = (x , y )
          e1x' + e2y' = (x', y')

회전 변환: 방향이 바뀌는 것

e1, e2가 직교하는 상태를 유지하면서 각 쎄타만큼 각도가 바뀌는 걸 회전이라고 한다.

\[\begin{matrix} x' = \cos \theta - \sin \theta \\ y' = \sin \theta + \cos \theta \end{matrix}\]

기저벡터는 원점을 지나가는 “선형 변환” 형태를 가져야 한다.

  • 복원 용이
  • 속도 향상

행렬

  • 선형 변환을 굉장히 편리하게 바꿔주는 계산식
  • 행렬을 이용하면 원하는대로 물체를 담고있는 공간이 어떻게 변할 것인지를 설계할 수 있다/
  • 이는 게임의 움직임과 다양한 시각적 효과로 이어질 수 있다.

행렬은 함수의 개념으로부터 시작한다. 행렬은 선형 변환인데 이 변환이라는 것은 함수이기 때문이다. 함수가 무엇인지 정의해서 시작해서 항등함수, 역함수, 항등함수 등이 갖고 있는 규칙을 이해하면 행렬을 이해하는데 큰 도움이 된다.

3차원 가상공간은 x,y,z가 서로 직교하는 공간으로 이는 유클리드 공간이다. 이 곳에서는 평행한 선은 절대 만날 수 없다. 하지만 현실 공간에서는 평행한 선이 소실점에서 만난다. 수학에서는 “무한대의 원점”이라고 표현한다.

사영공간

  • 가상세계의 카메라를 중심으로 눈에 느껴지는 원근감을 보여줘야 한다.
  • 뷰 변환이 필요하다.
  • 뷰 변환과 원근감이 필요하다. -> 이를 수행하는 행렬을 원근투영행렬 이라고 한다.

세 가지 변환

  • 트랜스폼 변환(행렬): 배치
  • 뷰 변환(행렬): 카메라를 원점으로 하여 게임공간의 모든 물체의 트랜스폼을 계산
  • 원근투영 변환(행렬): 한 점으로 모이는 우리눈에 보이는 이미지로 바꾸는 변환

결론

입시 수학이 아니라 새로운 수학에 대한 관점이 필요하다. 시험을 위한 수학이 아니라, 창작자의 입장에서 내가 원하는 표현을 자유롭게, 수학을 이용해 구현하기 위해서 어떤 사고가 필요한 지, 처음으로 돌아가 수가 가지고 있는 질서와 특징, 계산을 통해 어떻게 조작할 수 있는지에 대해 고민하면서 하나씩 익혀나가야 되는 사고의 전환이 필요하다.

TAGS: game programming math