cyphen156

게임 수학 1장 메타버스를 지탱하는 게임 수학 본문

수학/게임수학

게임 수학 1장 메타버스를 지탱하는 게임 수학

cyphen156 2023. 5. 17. 16:30

게임엔진을 사용하는게 아니라 만들어보는건 어떨까? 라는 생각이 들어서 책을 찾게 됬고, 네오플블로그 책방에서 이득우(청강문화산업대학교)교수님의 게임수학이라는 책을 알게되었다. 이산수학도 못하면서 무슨 게임수학? 이라는 생각도 들지만 마침 졸업작품도 끝났고, 그간 미뤄둿던 C언어 정리도 할 겸 그냥 일단 읽고, 시간을 들여서 구현해보기로 했다. 

 

도입부에서는 메타버스가 뭔지 이 기술을 위해서 필요한 수학적 지식들과 어떤방식으로 구현되는지에 대해 간단하게 소개해 주고 있다. 

메타버스는 뭘까?

책에서는 메타버스가 코로나 시대에 사회적 거리두기 시행에 따라 사람들의 생활이 가상공간으로 많이 옮겨왔고, 익숙해 졌기 때문에 초월을 의미하는 메타우주/세계관을 의미하는 유니버스의 합성어로 메타버스가 탄생했다고 소개하고 있다.

 

사실 나에게는 메타버스라는 개념이 잘 와닿지는 않는다. 이미 수많은 게임들을 하면서 가상공간에서의 나의 캐릭터는 곧 "나"라는 사람의 복제체가 되어 궂이 메타버스라는 개념 없이도 익숙하기 때문에 "메타버스? 그거 그냥 게임을 돌려서 표현한 거잖아?"라는 생각을 가지고 있다. 앞으로도 변할 것 같지는 않고...


그럼에도 메타버스에 대해 공부하려는건 컴퓨터 기술의 발전이 그래픽 분야의 발전에 달려있다고 믿기 때문이다.

인공지능의 발전도 사실 게임산업의 그래픽 렌더링기술이 발전했고, 이에 따라서 그래픽카드의 성능이 향상되어야 했는데, 이걸 NVIDIA에서 수없이 많은 단순연산기들의 병렬처리(GPU)기술로 해결했는데 이걸 인공지능 분야의 뉴럴네트워크 연산에 사용하기 시작하면서 부터 가속화 되었기 때문이다. 대량의 데이터를 동시에, 수없이 많이 처리하는게 가능해졌기 때문이란 것이다.

 

또 다른 한가지 이유는 남이 만들어준 컨텐츠를 소비하는 것 뿐 아니라 사용자가 직접 컨텐츠를 만듦과 동시에 소비하는, 소위 유튜버와 같은 서비스를 가상공간에서도 제공할 수 있게 되었기 때문이다. 개발사는 플랫폼을 만들고, 이 플랫폼에서 플랫폼 이용자들은 무엇이든 할 수 있다. 

메타버스를 구성하는 작업흐름도

대강 이렇게 구성된다고 소개해주고 있다.
모든 것들이 메타버스를 구현하는데 필요한 구성원들이지만, 핵심은 게임엔진이다.

게임 엔진? 그게뭔데?

게임 엔진을 알기위해서는 우선 엔진이 뭐하는건지부터 알아야된다.

엔진은 특정 기능을 구현하기 위해서 필요한 함수, 코드, 프로그램들을 모아서 하나로 합쳐놓은것이다.
자동차에서도 엔진 하면 자동차에 동력을 제공하기 위해 구성된 부품들을 하나로 합쳐놓은것을 말하지 않는가? 여기에서도 똑같다. 작게는 화면에 3D이미지를 보여주는 렌더링과 관련된 엔진, 캐릭터가 움직일때 이것을 계산해서 적용시켜주는 물리 엔진 등이 있고, 이 엔진들 중에 게임을 제작할 때 필요한 기능들을 모아서 IDE와 마찬가지로 사용자에게 이용하기 쉽게 제공해주는 프로그램이 게임 엔진이다. 최근에는 Unity Software의 유니티 엔진 5, Epic games의 언리얼 엔진 5, Steam의 Source엔진 등이 있는데 언리얼 엔진 5가 최근 출시되어 사용자들을 끌어모으고 있다. 

 

게임 수학의 필요성

가상 공간을 구현하는데 필요한 수학은 컴퓨터 그래픽스라는 것으로 선형대수학의 일종이라 한다. 일반적인 선형대수학과 비교되는 점은 결과를 구한뒤 이것을 현실세계에 있는 우리의 눈으로 확인할 수 있게 가상공간의 구조를 분석하고, 데이터를 다루는데 고도화 시킨 것이  컴퓨터 그래픽스다.

 SIGGRAPH는 COMPUTEX, GAMESCOM과 비슷하게 세계규모로 열리는 컴퓨터 그래픽스에 관련된 포럼이자 전시회이다.
Home - ACM SIGGRAPH

 

Home - ACM SIGGRAPH

The ACM SIGGRAPH community is a global nonprofit organization serving the evolution of computer graphics and interactive techniques. With thousands of members across the world, the researchers, artists, developers, filmmakers, scientists, and business prof

www.siggraph.org

컴퓨터 그래픽스중 게임 관련 기술은 특히나 실시간 렌더링 기술로 분류된다. 
실시간 렌더링은 벡터 수학을 사용하여 가상 공간의 구조를 분석해 화면에 보이지 않는 부분은 걸러내고, 보이는 부분만 빠르게 그려내는 기술이다. 

벡터!

고등학교때 배웠던 기하와 벡터 과목이 생각난다. 개인적으로 어렵지만 아주 재미있는 과목이었다고 생각한다.

기하학에서 식을 통해 그래프와 도형을 그리고, 벡터를 통해 내가 그린 그림들을 이동시키고, 모양을 변형시키는 것이 매우 재밌었다. 

이걸 가상공간에서 3차원으로 표현해 내는데 사용되는게 렌더링 기술이다. 

게임 수학의 3요소

위의 그림은 게임 수학에서 다루고 있는 수학들의 3가지 분류이다. 그런데 하나 특이한게 보인다

사원수?! 저건뭐지? 싶다. 이에 대한 해답은 다음 장에서 나온다. 

  1. 벡터는 가상 공간을 구축하고 행렬을 통해 변환되며,
  2. 실제 물체는 점들의 표현인 무수히 많은 삼각형을 그려냄으로써 3차원 물체를 표현하고,
  3. 표현된 물체의 회전을 삼각함수(sin, cos, tan)를 통해 연산하고 사원수를 사용해서 변환한다.

미세삼각형을 통한 캐릭터 모델링 예시

핵심은 '결국 수학을 공부해야 된다는 것' 이다.

그렇다고 겁먹을 필요는 없을 것 같다. 이산수학도, 논리회로도 잘 못하지만 어쨋든 코딩 자체는 할수 있지 않은가? 시간을 들여 꾸준히 이해하려 하면 안될게 없다고 생각한다.

 

실습 환경

CK소프트렌더러의 CMAKE와 MS Visual Studio2022를 통해 개발할 겁니다.

Visual Studio IDE는 Chapter1 C언어와 컴파일러 (tistory.com) 여기를 참고하시면 됩니다. 2019나 2022나 개인사용자, 초보자에게는 별 다른점이 없으니 그대로 하셔도 무방합니다.

CMAKE는 https://cmake.org/download/ 여기를 참고하시면 됩니다.

두 프로그램을 모두 설치한 뒤 사용하는 비주얼 스튜디오의 버전에 따라 CMAKE-vs-16-2019.bat/CMAKE-vs-17-2022.bat 파일을 선택해서 실행하면 됩니다. 

한가지 확인해야 할 것은 Project 하위 폴더로 SoftRenderer.sln 파일이 반드시 생성되어야 한다. 만약 없으면 문제가 있는 것이니 프로그램을 다시 설치해보길 바란다. 

생성된 솔루션 파일 : 더블클릭해서 실행한 뒤 F5키를 눌러 빌드를 해보세요

모든 설정이 제대로 구성완료되었다면 이런 프로그램이 실행될겁니다.


또한 모든 예제 코드의 소스파일은 GitHub - onlybooks/gamemath: <이득우의 게임 수학> 공식 깃허브 페이지

 

GitHub - onlybooks/gamemath: <이득우의 게임 수학> 공식 깃허브 페이지

<이득우의 게임 수학> 공식 깃허브 페이지. Contribute to onlybooks/gamemath development by creating an account on GitHub.

github.com

여기에 있습니다.