게임제작 이론 1 게임은 기계화된 에니메이션

게임과 에니메이션

우리가 잘 아는 에니메이션은 많은 그림들의 연속된 출력이다.

그리고 이 연속된 그림들은 보통, 자기 바로 앞, 바로 뒤의 그림들과 비슷하다.

게임 역시 연속된 그림들의 출력이다.

다만 게임의 그림들은(프레임, Frame) 사람이 직접 그리지 않으므로 매 순간 사용자의 입력을 받아가며 정해진 규칙에 따라, 뻣뻣하게 그려진다. 위의 두 그림이 이 차이를 보여주고 있다.

보통 기계(컴퓨터)는 이런 게임의 전체 화면을 1초에 30번 이상씩 그리며(30 프레임, 30 FPS), 원활한 환경에서는 60번 이상씩(60 프레임, 60 FPS) 그린다.

다만 게임 속 캐릭터들이 걷거나, 뛰고, 검을 휘두를때 이 캐릭터들 각각의 자세와 형상들을 기계가 모두 판단 할 순 없다.

이런 캐릭터 에니메이션들은 이미 사람에 의해 만들어져있고 게임속에 들어있다.

기계는 전체화면을 그리는 매 순간 각 캐릭터가 가지고 있는 다양한 동작 에니메이션중 어떤 에니메이션의 몇번째 그림을 화면 속에 그려야 하는지 주어진 규칙에 따라 판단한다.

3D 환경에서의 에니메이션

3D 환경에서의 게임들도 정해진 규칙에 따라서 1초에 30 ~ 60번의 그림을 그린다는 것은 같다.

다만 잘 만들어진 현대의 게임에서는 캐릭터들의 옷깃 하나하나, 머리카락 하나하나가 움직이는 걸 볼 수 있다.

2D 캐릭터와 달리 3D 캐릭터는 일반적인 그림이 아니며 굳이 따지자면 일종의 인형과 같다.

3D 환경에서는 점(Vertex)과 선(Edge)이 이어져서 면(poligon)을 만들고 이것들이 모여 입체적인 형상(Mesh, 메쉬)을 이룬다. 그 형상의 표면에 그림을(Skin)을 입히면 캐릭터가 되고 또는 사물이 되는것, 3D 환경에서는 모든 것들이 이렇게 이루어진다.

한 캐릭터 모델을 구성하는 점, 선, 면, 그림(Skin)들 모두는, 걷거나 뛰거나 검을 휘두를 때 신체의 일부분이 조금씩 늘어나거나(무릎, 팔꿈치, 엉덩이) 줄어들어야 한다.

이를 처리하기 위해 많은 3D모델에는 뼈가 필요하다.

referenced from https://dreamfarmstudios.com/blog/what-is-3d-rigging/

이 그림에서 두개의 뼈가 보인다, 손목에서 팔꿈치까지 나있는 팔뚝뼈(보라색 부분, joint_2), 팔꿈치부터 어깨까지의 윗팔뼈(파란부분, joint_1)

팔뚝뼈 위에나 아래쪽에는 이 팔의 형상(mesh)을 구성하는 점들이 보이며 (100% joint_2)라는 글도 보인다. 이것들은 항상 이 팔뚝뼈를 따라다니며 상대적으로 동일한 곳에 위치하게 된다. 팔뚝이 올라가면 그에 따라 같이 올라가고 내려가며, 뼈가 회전하면 같이 회전한다.

반면 (50% joint_1, 50% joint_2)라고 써진 점들은 팔뚝뼈와 윗팔뼈에 반반씩 영향을 받아 위치한다. 팔뚝뼈나 윗팔뼈, 두뼈중 하나의 뼈가 10도(°) 회전하면 이 중간의 점들은 5도(°)만 회전할 것이다.

만약 모델의 모든 요소들(특히 꼭지점들)이 뼈의 움직임에 적절히 따라 움직여준다면 우린 적당한 3D인형을 가질 수 있다. 그리고 이런 뼈 작업은 3D 모델 디자이너들이 모델을 만들 때 같이 이루어진다.

모델에 뼈를 삽입하고, 그 뼈중 하나를 선택한 후, 그에 해당하는 부분들을 스프레이로 뿌리듯 색칠해주는 것. 이를 리깅(rigging)이라고 한다.

이후 만들어진 3D모델은 에니메이션을 만들고자 할 때 뼈의 위치 좌표만 시간순으로 기록하는것으로 이를 구성할 수 있다.

그림을 매 순간 하나하나 통채로 그려야 하는 2D에 비해 간편하다. (대신 만드는건 힘들다)

3D 게임들은 하나의 전체 화면 그림(Frame)을 그릴 때 일단 화면 속 캐릭터와 주변 사물들을 구성하는 꼭지점들부터 그린다(?), 이때 캐릭터의 꼭지점(Vertex)들은 현재 캐릭터 뼈의 위치를 참고해서 그려지게 되는 것

그리고 그 점들을 이어서 형상(Mesh)을 형성하고 그 위에 그림(skin)을 덮는다.

물론 모델 형상(Mesh)의 각 면들이 늘어나고 줄어듬에 따라 그 위의 그림들도 늘어나고 줄어들게 될 것이다. 이런 이미지 확대 축소 과정은 상대적으로 쉽다는 것을 아래 그림판만 보아도 알 수 있다.

이렇게 3D게임이 하나의 그림을 완성하는 과정을 파이프라이닝(Pipelining)이라고 하며 보통 쉐이더(Shader)라는 논리적 장치들이 그래픽 카드라는 비싼 기계 장치와 긴밀히 소통하면서 최대한 신속하게 진행하려 한다.

사실 파이프라이닝은 이보다 훨씬 더 복잡한 과정이며 위쪽 설명에선 약간의 왜곡?이 존재하지만 아무튼 기본 개념은 그렇다.

Leave a Comment