공부/인프런 - 청강대_이득우

1. 공간의 수학 : 게임 수학의 개요

셩잇님 2022. 11. 24. 11:22
반응형

 

 

공간의 수학 : 게임 수학의 개요 😎

 


 

공리란? 수학에서 반박하지 못하는 자명한 전제이다.

공리에서부터 시작해 하나씩 쌓아나가기. 프로그램에 구현하는데 필요한 수학에 필요한 정의와 공식들을 쭉 나열하여 이것을 바탕으로 학생들에게 가르칠 내용을 정리하였다.

 

가르칠 내용의 정리된 결과를 살펴보니 게임 개발을 위해서 알아야 할 수학이 적지 않았다. 이를 또 분류해보니 다음과 같이 3가지로 나누어 볼 수 있었다.

1. 공간에 대학 수학

2. 물체에 대한 수학

3. 회전에 대한 수학

 

공간에 대한 수학이란? 우리가 사는 현실 세계를 모방한 가상세계라고 한다. 그렇다면 '게임 세상이 현실 세계와 똑같구나.' 라고 생각할 순 있지만, 현실 세계가 움직이는 원리와 게임 세상이 움직이는 원리는 완전히 다르다.

 

현실 세계의 공간은 우리가 느끼고 인지하고 살아가는 환경이며, 명확하게 규명된 것이 없다. 즉 우리가 사는 현실 세계는 불확실한 미지의 공간이다. 그렇지만 컴퓨터로 구성된 게임 세상은 수에 기반으로 모든 것이 쌓아 올려진 명확한 시스템입니다. 이를 수학에서 벡터 공간이라고 한다.

 

벡터 공간이란? 실제 우리가 살아가는 공간을 의미하는 것이 아니라, 수의 체계를 기반으로 쌓아 올린 다차원의 데이터라고 생각하면 된다. 즉, 벡터 공간이란, 게임이 사용하는 가상 공간의 본질이다.

 


 

벡터라고 하면 중, 고등학교 과정에서의 지식으로 살펴보았을 때 크기와 방향을 가진 대상이라고 생각합니다. 스칼라도 마찬가지로 크기만 있는 물리량으로 얘기한다. 이런 것들이 물리학에서 이야기하는 벡터와 스칼라의 정의이다.

 

벡터 : 크기와 방향을 가진 대상

스칼라 : 크기만 있는 물리량

이로부터 도출된 물리공식을 게임에서 사용하여 게임을 구현하는 데 사용합니다. 그렇지만 본 강의에서는 수학에서 이야기하는 정의로 공부하는 것을 권장합니다.

 

수학에서의 벡터와 스칼라의 정의란?

벡터 : 벡터 공간의 원소

스칼라 : 체 집합의 원소

이것들은 굉장히 난해한 개념이므로, 실제 사용하는 수와 연산(덧셈, 곱셈)과 같은 연산이 만들어내는 시스템이라고 이해하시면 됩니다. 이 개념이 어려워 보여도 수의 덧셈과 곱셈만 알면 누구나 이해할 수 있습니다.

 

지금까지 많은 수학 포기자를 가르쳤는데 조금 생각해보라고 과제를 주면 학생들 모두 어렵지 않게 이해했습니다. 이렇게 수학적 의미의 벡터와 스칼라의 개념을 잡는 것을 시작으로, 모든 가상 공간의 기반이 시작됩니다.

 


 

다차원 데이터가 만들어지며, 해당 데이터에 색상을 입혀주면 모니터에 출력하면 현실 세계와 그럴듯한 가상세계가 완성되는 것입니다. 일전에 얘기했던 것과 같이 가장 밑바닥의 있는 원리를 파악하는 것이 제일 중요했습니다. 이렇게 가상세계가 구축하는 원리를 파악했다면, 이제 우리가 원하는 모습으로 가상세계를 변형해야 합니다. 이것을 수학에서는 변환이라고 합니다.

 

1초에 60프레임을 찍어내는 게임의 특성상 이러한 변환 과정은 빠르고, 단순하고, 명료하게 이루어져야 합니다. 이를 선형 변환이라고 합니다. 즉, 선형 변환이란 선형성을 가진 변환이 선형입니다. 이 과정을 통해 빠르게 공간을 변형하고, 변형한 공간도 다시 원래대로 되돌리는 것도 가능합니다.

 

현실 세계의 공간은 하나이지만, 게임의 가상 공간은 만들어내는 개수만큼 무한합니다. 어떤 모델러가 모델링 한 객체를 게임 스테이지에 올리고, 이를 카메라가 바라보고, 바라본 화면을 모니터에 투영해주는 이런 과정에 많고, 다양한 공간이 사용됩니다.

 

더욱 그럴듯한 모습을 화면에 보여주기 위해 개발자들이 나름의 공간 체계를 구축했습니다. 이를 렌더링 파이프 라인이라고 합니다. 해당 체계를 이용하여 컴퓨터에게 일을 시킵니다. 일을 지시하기 위한 도구가 바로 수학에서의 행렬입니다. 행렬*은 컴퓨터가 가상 공간을 빠르게 변화시키도록 지시하는 일종의 명령어라고 할 수 있습니다.

* 행렬 : 선형 변환을 수행하는 도구

 

그렇지만 내가 원하는 공간 변환을 구현하기 위해서는 주어진 행렬을 암기하는 것이 아닌 행렬이 어떻게 만들어지며, 어떻게 설계해야 하는지 스스로 행렬을 설계할 수 있도록 기본 원리를 이해하는 것이 가장 중요합니다. 이렇게 행렬로 공간의 변환이 이루어지는 메커니즘을 이해한다면, 그다음으로 알아야 할 것은 평면의 방정식입니다. 평면의 방정식을 사용한다면, 여러 개의 평면을 사용하여 공간 안의 자신 영역을 구축할 수 있습니다. 구축된 영역 안에서 어떤 작업을 할지 수학을 통해 지정할 수 있습니다.

 

대표적인 예로는 카메라의 보는 영역의 해당하는 절두체가 있습니다. 절두체는 6개의 평면으로 구축되어 있으며, 여기서부터 게임의 특징인 보이는 물체만 걸러내서 렌더링하는 수학적인 메커니즘이 만들어지게 됩니다. 이를 통해 1초에 60프레임이라는 빠른 렌더링이 가능합니다.

 

이 외에도 사용 공간에서 삼각형을 나누는 고급 주제도 있으며, 여러 가지도 있지만 먼저 권장하는 것은 첫째. 벡터 공간 즉 수의 체계를 먼저 탄탄하게 이해를 하고 둘째. 행렬을 사용해서 공간을 변환하는 과정을 이해하는 것을 권장합니다. 오늘의 수업은 여기까지이며, 다음 수업은 물체에 대한 수업입니다.

 

 

반응형