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

2. 물체에 대한 수학 1 – 이동 변환의 구현 원리

셩잇님 2022. 11. 25. 11:30
반응형

 

 

물체에 대한 수학 1 – 이동 변환의 구현 원리 😀

 


 

물체에 대한 수학이란? 게임에서 사용하는 가상 공간의 체계와 물체를 구성하는데 사용하는 수학입니다. 지난 시간, 게임에서 사용하는 가상세계는 다차원으로 구성된 수의 데이터인 벡터 공간*으로 구성되어 있다고 설명했습니다.

*벡터 공간 : 게임이 사용하는 가상 공간의 본질

 

벡터 공간이란? 공간이라는 단어를 사용하지만 사실 어떠한 대상이나 물체가 가진 성질을 표현하는 데이터입니다. 따라서 우리가 자유롭게 걸어 다니는 현실 세계의 공간의 개념과 조금 거리가 있습니다. 즉 이런 벡터 공간의 공간과 현실 세계의 공간은 다른 개념입니다.

*벡터 공간 : 어떤 대상의 성질을 표현하는데 사용되는 데이터

 

이러한 벡터 공간이 현실 세계의 공간과 다른 개념을 가지더라도 우리는 캐릭터를 조정해서 탐험할 수 있는 현실 세계와 유사한 가상 공간을 만들어야 합니다. 그렇다면 어떻게 만들어야 할까요? 답은, 바로 공간의 차원을 늘려주면 됩니다.

 

예를 들어 다음과 같은 평평한 2차원 공간에 방패연이 있다고 생각해봅시다. 2차원 벡터 공간의 좌표를 사용해 방패연을 표현하는 것은 큰 문제가 없습니다. 그리고 추가된 공간에는 연을 움직일 수 있는 실을 설치합니다. 그 실을 연에다가 연결해줍시다. 2차원 공간이 연을 표현하는 데 사용한다면 3차원 공간은 연과 이에 딸린 실을 추가로 구성해주는 것입니다. 그리고 그 실을 조정해서 연을 조정하게 해주는 것입니다. 보는 사람이 멀리서 연만 바라본다면 연이 움직인다고 생각할 것입니다. 이는 이해를 돕기 위해 예를 든 것입니다.

 

즉, 2차원 물체의 2차원 이동을 구현하기 위해서는 3차원 공간을 만들고, 2차원을 이용해 2차원 물체의 표현, 1차원을 이용해 이동의 구현한다는 것이 핵심입니다. 총 3차원의 공간을 활용합니다. 그렇다면 3차원 물체의 표현과 이동은 어떨까요? 이는 위의 방법과 동일합니다. 3차원 물체의 표현은 3차원을 이용하고, 이동의 구현은 1차원을 이용하여 총 4차원의 공간을 활용합니다.

 

이렇게 게임을 제작하는 바탕에는 벡터 공간이라는 개념을 만들어 이를 둘로 쪼개 물체를 구성하는 부분 공간과 이동을 구성하는 부분 공간을 두 가지로 나누어서 관리하는 시스템이 기반이 구축되어 있습니다. , 수학의 벡터는 게임을 구현하기 위해 점 또는 (이동)벡터 중 하나로 사용된다.

 


 

수학에서는 이렇게 물체를 표현하는데 사용하는 공간을 아핀 공간이라고 합니다. , 게임은 벡터 공간

1. 물체를 표현하는 공간 = 아핀 공간

2. 이동을 위한 공간으로 분리하여 관리로 분리해 관리합니다.

 

아핀 공간의 속한 요소들이 벡터이며, 이 요소들은 물체를 표현하는 데 사용합니다. 이 요소들을 구분 짓기 위해 별도로 점이라고 부릅니다. 따라서 가상 공간의 물체는 점으로 구현되어 있습니다. 즉, 벡터 공간의 부분 공간인 아핀 공간에 속한 벡터. 따라서 가상 공간의 물체는 점으로 구성되어 있다.

 

이제 이동에 사용하는 다른 부분 공간이 하나 있습니다. 여기에 속한 벡터를 다시 벡터 혹은 이동 벡터라고 합니다. 이를 구분하기 위해 사실 이동 벡터라는 말을 사용합니다. 이 영상에서는 둘을 구분하기 위해 이동 벡터를 사용합니다.

 

앞서 수학적 벡터와 물리적 벡터를 아래와 같이 정의했습니다.

수학적 벡터 : 벡터 공간의 원소

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

 

지금 언급한 이동 벡터는 물리적 벡터에 대응합니다. 우리가 현실 세계에서 어떤 물체에 힘을 가하면 그 힘의 크기와 방향만큼 이동하게 됩니다. 게임도 마찬가지입니다. 아핀 공간에 점을 사용해 물체를 만들고, 이 물체는 이동 벡터가 가지고 있는 크기와 방향을 사용하여 이 점을 이동시키도록 구현되어 있습니다.

이를 수식으로 사용하면 아래와 같습니다. p1 + v(이동벡터) = p2에 대응하게 됩니다. 이를 다른 말로 표현하면 두 점 사이에는 하나의 벡터가 대응되며, 이 수식에서 점 p1을 우변으로 넘기면 점과 점을 빼 이동 벡터를 얻을 수 있습니다. (v = p2 – p1)

 

앞선 식에서 v는 점 p1에서 시작해 점 p2로 가는 이동 벡터였습니다. 그러므로 두 점을 뺐을 때 나오는 결과는 뒤에 있는 점 p2에서 앞에 있는 점 p1으로 향하는 벡터가 만들어지게 됩니다. 점으로 구성된 아핀 공간과 이동 벡터로 구성된 부분 공간은 서로 분리되어 있지만 두 점의 뺄셈을 통해 다른 공간의 데이터가 서로 교환될 수 있습니다.

 

정리하자면 벡터 공간의 벡터를 게임에서 사용할 경우 용도에 따라 두가지 요소로 나누어집니다. 즉, 게임은 벡터 공간을

1. 물체를 표현하는 공간

2. 이동을 위한 공간으로 분리하여 관리합니다.

 

또 게임에서 보이는 3차원 공간은 실제로 4차원으로 이루어져 있습니다. 지난 영상에서 우리가 사는 현실 세계와 게임의 가상 공간은 완전히 다르므로 주의해야 한다고 말씀드렸습니다. 현실 세계는 하나의 공간이 존재하고, 이 공간에 물체들이 들어와서 배치되었습니다. 너무나 당연한 이야기지만, 가상 공간은 현실 세계와 다르므로 다르게 동작합니다. 가상 공간은 무한대의 가상 공간을 무한대의 가상 공간을 제작할 수 있다고 설명했습니다.

 


 

먼저 앞서 설명한 것처럼 게임에서 보이는 공간은 3차원으로 보이지만 사실은 4차원이라고 이야기했습니다. 게임 공간은 움직일 일이 없으므로 4차원 중 3차원만 사용하며, 나머지 차원의 값은 기본값으로 두고 있습니다. 이러한 게임 공간을 월드 공간이라고 합니다.

 

그 다음으로 물체를 배치하는 과정에 대해 알아보겠습니다. 물체는 아핀 공간의 점으로 구성되어 있습니다. 이 점들을 관리하기 위해서는 이것들을 포괄하는 공간이 필요합니다. 이 공간도 3차원 공간이 아닌 4차원 공간으로 구성되어 있습니다. 이렇게 물체를 담는 공간을 로컬 공간이라고 합니다. 게임의 무대인 월드 공간과 다르게 물체는 계속해서 움직여야 하므로 나머지 차원을 적극적으로 사용해야 합니다. 그러므로 물체를 드래그해서 물체를 월드 공간으로 배치하는 것은 눈으로 봤을 때는 물체를 구성하는 점을 월드 공간으로 이동하는 것으로 보입니다. 그렇지만 사실은 월드 공간이 있고 물체를 담은 로컬 공간을 그 위에 덮어 포개는 것입니다.

 

즉 물체를 구성하는 점은 자기가 속한 공간을 바꾼 적이 없다. 로컬 공간은 항상 언제나 물체와 함께 따라 다닌다. 로컬 공간에 남은 3차원 공간을 조정해 로컬 공간을 이동시키면 그러면 마치 월드 공간에 물체가 이동되는 것처럼 보인다. 이렇게 구현해도 공간이라는 것은 눈에 보이지 않기 때문에 플레이하는 사용자로서는 알 수 없습니다. 4차원 공간은 인지가 불가능한 영역이므로 나머지 공간에 대한 존재를 느낄 수도 없습니다

 


 

정리 🤣

 

지금까지 배운 내용을 정리하겠습니다. 벡터 공간은 대상의 성질을 표현하는 데 사용하지만, 게임 제작을 위해서 끈 달린 물체의 개념으로 한 차원 높여 대상과 이동을 함께 구현하는 기법을 사용합니다. 그러므로 게임을 구성하는 모든 물체는 4차원의 공간을 가지게 됩니다. 즉, 4차원 공간을 생성하고, 3차원 공간으로 대상을 표현하고 확장한 1차원 공간으로 이동을 구현합니다.

 

이렇게 확장된 공간의 개념에서 벡터는 용도에 따라서 물체를 구성하는 점, 물체를 이동시키는 (이동)벡터의 두 가지 개념으로 세분화됩니다. 여기서 우리가 배우는 수학도 점을 다루는 수학과, 이동 벡터를 다루는 수학으로 세분화됩니다. 다음 영상에서는 이 중 하나인 점에 대한 수학에 대해 알아보겠습니다.

 

 

반응형