반응형
벡터 공간을 사용해 이동 구현하기
- 게임에서 사용하는 가상 공간의 체계와 물체를 구성하는 데 사용되는 수학.
- 게임의 가상 세계는 다차원으로 구성된 수의 데이터, 벡터공간으로 구성되어 있다.
- '공간'이라는 단어를 사용하지만, 이는 실제로 어떤 대상이나 성질을 표현하는 데이터! 현실 세계의 공간과는 다른 개념이다.
- 하지만 우리는 캐릭터를 조종해서 탐험할 수 있는 가상 공간을 만들어 내야 하는데 어떻게 하지?
→ 공간의 차원을 늘린다! - 2차원 벡터를 이용해 방패연을 표현하는 건 무리 없다. 연을 움직이도록 실을 연에 연결한다. 2차원이 연이라면, 3차원을 만들어서 연과 거기에 딸린 실을 구성하고... 해당 실을 조종해서 연을 움직인다.
- 2차원 물체의 2차원 이동을 구현하려면 3차원의 공간을 만든다. 2차원으로 물체를 표현하고, 나머지 한 개 차원으로 이동을 구현하는 것이다.
- 만약 3차원을 3차원 볼륨으로 움직이려면? 4차원 공간을 만들고, 3차원으로 물체, 나머지 1차원으로 이동을 구현한다.
아핀 공간의 점과 벡터의 개념
- 벡터 공간이라는 것을 크게 만들어서 이것을 둘로 쪼개고, 물체와 이동을 각각 나누어서 관리하는 시스템 기반으로 구축되어 있다.
- 물체를 표현하는 공간 = 아핀 공간
- 아핀 공간에 속해 있는 벡터 ⇒ 점 (Point)
- 가상 공간의 물체는 점으로 구성되어 있다.
- 이동을 위한 공간에 속해 있는 벡터 ⇒ 벡터(Vector) 또는 이동 벡터
- 수학적 벡터: 벡터 공간의 원소
- 물리적 벡터: 크기와 방향을 가진 대상.
- 이동 벡터는 '물리적 벡터'에 해당한다.
- 아핀 공간에 점을 만들면, 이 점은 이동 벡터의 크기와 방향을 사용해서 이동할 수 있다.
P1 (점) + v (벡터, 힘) = P2
- 두 점 사이에는 하나의 벡터가 대응된다.
- 점과 점을 빼면 이동 벡터를 구할 수 있다.
v = P2 - P1
- 서로 분리된 공간이지만, 두 점의 뺄셈을 통해 이동 공간에 있는 벡터를 구할 수 있음을 이해하자.
가상 공간에서 물체를 배치하는 원리
- 게임 공간 = 월드 공간
- 월드 공간 자체가 움직일 일이 없기 때문에 3차원만 사용해도 되며, 나머지 차원은
(0, 0, 0)
으로 고정되어 있다. - 물체의 공간 = 로컬 공간
- 아핀 공간의 점으로 되어 있다. 물체는 계속해서 움직여야 하기 때문에 나머지 한 차원을 적극적으로 사용해야 한다.
- 월드 공간이 있고, 위치를 담는 로컬 공간을 포갠다고 생각하면 된다.
- 물체를 구성하는 점은 로컬 공간을 계속 유지한다.
- 로컬 공간에서 물체를 표현하고 남은 한 차원! 그 한 차원을 조정해서 이동시키는 것이다. 그러면 월드 공간에서 물체가 이동되는 것처럼 보인다.
정리
- 벡터 공간은 대상의 성질을 표현하는 데 사용하나, 게임 제작에서는 대상과 이동을 함께 구현하는 기법을 사용한다.
- 게임을 구성하는 모든 물체는 4차원을 가진다.
- 확장된 공간의 개념에서 용도에 따라 물체를 구성하는 점과, 물체를 이동하는 (이동) 벡터로 나누어진다.
해당 포스트는 이득우 교수님의 '수포자를 위한 게임 수학' 동영상을 보며 개인 백업용으로 메모하였습니다.
반응형