▲ 띵소프트 홍상범 TA

애니메이션은 게임과 밀접하게 연관되어있는 분야다. 두 분야 다 실제 인물이나 대상의 움직임이 아닌, 스크린 속 가상의 인물이나 대상의 움직임을 만들어내거나 포착해서 보여준다는 공통점이 있기 때문이다. 여기서 게임은 유저가 캐릭터를 조작한다는 점이 일반적인 애니메이션과 다르다. 즉 구현해야 하는 동작이 더 많고, 그 동작마다 다양한 법칙이나 경우의 수를 생각해야 한다.

게임에서 애니메이션, 즉 캐릭터와 물체의 움직임을 구현하는 방식은 크게 두 가지로 나뉜다. 첫 번째는 중력 등 물리법칙을 오브젝트 속성에 부가해서 반영하는 물리 기반 애니메이션이고, 두 번째는 물리법칙이 자연히 적용되지 않고 개발자가 프레임마다 움직임을 키로 설정해서 구현해나가는 비물리 기반 애니메이션이다.

띵소프트의 홍상범 TA는 이번 NDC 2018 강연에서 두 방식이 어떤 장단점이 있고, 어떤 곳에서 사용되는지 설명한다. 아울러 자신의 프로젝트를 예로 들면서 두 방식의 장단점을 어떤 식으로 극복해나갔는지, 이를 극복하기 위해서 어떤 점을 개선해나갔는지를 공유하고자 한다고 덧붙였다.


강연에 앞서 홍상범 TA는 애니메이션 파트가 아닌 다른 파트에 있는 사람들, 혹은 아직 배우지 않은 사람들을 위해서 물리 애니메이션과 비물리 애니메이션의 종류와 그 활용 방법에 대해서 먼저 설명했다.

먼저 비물리 애니메이션에는 키 애니메이션, 디폼 애니메이션, 본 애니메이션과 바이프드 애니메이션(Biped Animation), 텍스쳐 애니메이션 등이 있다. 키 애니메이션은 가장 기초적인 방식으로, 오브젝트를 움직인 뒤 프레임마다 키값을 넣어주는 방식이다. 재생을 하게 되면 각 프레임마다 입력된 키값에 맞춰서 오브젝트가 움직이게 되는 것이다. 디폼 방식은 오브젝트의 좌표가 아니라 특정 형태로 변화시켜서 움직임을 만들어주는 방식이다.


일반적으로 많이 활용하는 방식으로는 본 애니메이션과 바이프드 애니메이션이 있다. 이 방식은 우선 뼈대를 만들고, 그 위에 스킨을 입힌 다음에 뼈대에 움직임을 주는 방식이다. 이 방식은 캐릭터와 몬스터의 움직임을 구현할 때 많이 활용되는 방법이다.


기계적인 움직임을 구현하고자 할 때는 본 드리븐 애니메이션 방식을 주로 활용하는데, 이 방식은 오브젝트끼리 서로 상호작용해서 움직이도록 세팅을 하는 방식이다. 즉 한 오브젝트가 움직이면, 그것과 연결된 또 다른 오브젝트가 반응해서 움직이도록 설계하는 것이다. 홍상범 TA는 이를 활용한 대표적인 애니메이션으로 톱니나 피스톤 운동을 들었다.

텍스쳐 애니메이션은 오브젝트를 움직이거나 변형하는 애니메이션이 아니다. UV에 움직임을 주어서, 마치 오브젝트가 움직이는 것처럼 보이게 하는 것이다. 이 방식은 주로 흐르는 물을 묘사하거나 할 때 많이 사용되는 방식이다.


비물리 기반 애니메이션에 대해서 홍상범 TA는 수정 작업이 물리 기반 애니메이션보다 쉽다는 것이 장점이라고 설명했다. 물리 애니메이션은 그 오브젝트에 영향을 미치는 수치값을 체크하고 수정해야 하지만, 비물리 기반 애니메이션은 더 직관적이기 때문에 바로바로 보면서 수정해나갈 수 있다. 또한 물리 애니메이션은 물리적인 충돌 및 법칙을 수치로 입력해서 적용하기 때문에 주변 환경이 변하면 그에 따라 변화를 보이지만, 물리 기반 애니메이션은 각 오브젝트의 움직임을 따로따로 설정하기 때문에 그런 일이 벌어지지 않는다. 또한 수치 입력하는 등의 과정이 없고, 직관적이기 때문에 다른 툴과 호환도 편하고 더 창의적인 움직임을 보일 수 있다는 장점이 있다.


다만 여러 오브젝트를 한 번에 작업하기 어렵고, 상호 작용하는 모션을 제작할 때 제한이 있다는 단점도 존재한다고 홍상범 TA는 덧붙였다. 특히나 환경에 따라서 달라지는 움직임, 예를 들어 바람에 휘날리는 머릿결 등을 표현하고자 만들어 내고자 할 때, 비물리 애니메이션으로 이런 작업을 하기란 상당히 어렵다. 주변 환경을 일일이 애니메이터가 가정하고 그 키값을 입력하거나, 변화를 주거나 하는 과정을 거쳐야 하기 때문이다. 또한 사실적인 움직임을 표현하기 위해서는 그만큼 오브젝트의 좌표나 형태를 정교하게 맞춰야 하는 수고를 해야 하기 때문에 이런 작업에서는 비물리 기반 애니메이션 방식을 선호하지 않는다고 말했다.

대표적인 물리 기반 애니메이션의 종류에는 리지드 바디 다이나믹스, 방식과 소프트 바디 다이나믹스, 파티클 애니메이션이 있다. 리지드 바디 다이나믹스는 오브젝트에 리지드 바디 속성을 넣은 뒤, 물리 엔진에 입력된 시뮬레이션을 바탕으로 단단한 물체의 움직임과 충돌을 구현해내는 방식이다. 움직임과 충돌에 따라서 물체가 변화하는 과정을 사실적으로 묘사하고자 할 때 자주 사용된다.


소프트 바디 다이나믹스는 상호작용하는 물체 간의 역학을 반영해서 오브젝트의 형태 변형을 만들어내는 방식이다. 리지드 바디와 달리 본체의 변형이 일어나기 때문에 주로 탄성이 있는 물체에 많이 사용하는 애니메이션 방식이다. 입자가 흩뿌려지는 움직임을 시뮬레이션해낸 파티클 애니메이션은 다양한 특수 효과에 응용되는 애니메이션 기법이다.

이러한 물리 기반 애니메이션의 장단점은 무엇일까? 홍상범 TA는 장점으로 우선 여러 객체를 한 번에 작업할 수 있다는 점을 들었다. 비물리 기반 애니메이션처럼 하나하나 오브젝트마다 키값과 수치를 입력할 필요가 없기 때문이다. 이런 점에서 상호작용하는 모션을 제작하는 데에도 상대적으로 편하고, 주변 및 여러 객체에 반응하는 움직임을 만들기도 유용하다. 사실적인 움직임을 구현하는 데에도 편리하고, 또한 한 번 세팅해두면 이를 활용해서 다양한 모션으로 변용할 수 있다는 장점도 있다.


반면 홍상범 TA는 물리 기반 애니메이션이 장점만 있는 것은 아니라고 설명했다. 시뮬레이션 값을 다른 툴과 호환하기 위해서는 변환 과정을 거쳐야 한다. 따라서 수정이 상대적으로 불편할 수밖에 없다. 아울러 주변 환경에 반응한다는 것 때문에 자신이 의도치 않는 동작이 나오기도 한다. 시뮬레이션을 적용하는 만큼, 경우에 따라 무거워져서 실제 인 게임에서 사용하기 어려울 수 있다는 것도 단점 중에 하나다. 또한 자신이 원하는 수치 값을 찾는 데 시간이 걸리기도 한다.


예를 들어 탄환이 발사되는 애니메이션에서 중력 수치가 낮게 적용되면 탄이 포물선을 그리면서 낙하하지 않고 오히려 위로 떠버리거나 하는 일도 생긴다. 반대로 너무 높게 적용되면 탄이 바로 앞에서 떨어지기도 하기 때문에, 자신이 원하는 수치값을 하나하나 대입하면서 찾아봐야 하는 경우도 생기는 것이다.

홍상범 TA는 이런 장단점을 잘 파악하고 애니메이션을 적용할 필요가 있다고 말하면서, 각 애니메이션 기법에 따라 발생할 수 있는 문제 사례들을 들었다. 비물리 기반 애니메이션의 경우, 일일이 애니메이터가 오브젝트에 키값을 입력하는 등의 수고를 들여야 한다. 즉 루트 본에서부터 엔드 본까지 하나하나 다 컨트롤하기가 어렵다. 또한 물체 간 충돌을 반영하지 않기 때문에 머리카락 같은 부위가 몸을 뚫고 지나가버리는 불상사가 발생하기도 한다. 이를 방지하려면 오브젝트를 하나하나 컨트롤해야 하는데, 머리카락 같은 경우에는 이런 작업을 하기가 어렵다.

▲ 머리카락이 몇 가닥 없어서 그나마 나은 편이지, 실제 인체의 머리카락을 대상으로 한다면...

반면 물리 기반 애니메이션은 자신이 원하는 모션을 하나하나 구현해나가는 방식이 아니기 때문에, 원하는 모션이 안 나올 때가 많다. 원하는 대로 맞춰가기 위해서는 콜리젼 박스의 사이즈나, 씬 스케일 등을 손보는 등의 여러 과정을 거쳐야 하는데, 이는 비물리 기반 애니메이션과 비교했을 때 상당히 번거로운 작업일 수밖에 없다. 또한 물리 기반 애니메이션은 실제 물리법칙을 가정해서 시뮬레이션된 만큼, 실제 존재할 수 없는 속도를 가정했을 때 오브젝트가 물리적으로 찢어지는 현상이 발생하기도 한다.


이런 일들이 애니메이션 작업을 할 때 많이 겪게 되는 사례들이라고 홍상범 TA는 덧붙였다. 즉 효율적인 작업을 하기 위해서는 이런 경우를 줄여나가야 하고, 또한 수동으로 해야 하는 부분이나 중간중간 수정하는 과정을 단순화해야 할 필요가 있다는 것이다.

홍상범 TA는 업무를 보다 효율적으로 하기 위해서 툴을 만들었고, 그 툴을 소개하면서 작업 단순화를 위해서 어떤 점을 고려해야 하는지를 설명했다. 3D MAX용으로 그는 리지드 바디 다이나믹스 툴과 소프트 바디 다이나믹스 툴을 만들었다. 이 두 툴의 목적은 세팅을 자동화하고, 여러 오브젝트를 컨트롤하면서 충돌을 안정적으로 구현하는 데 있었다. 또한 스켈레탈 메쉬(Skeletal Mesh)로 자동 변환해서 언리얼 등 다양한 프로그램과 호환할 수 있도록 하는 것도 목표였다.

▲ 그가 개발한 툴의 기본 목적

이 툴을 활용한 사례로 홍상범 TA는 폭파 애니메이션과 다리가 무너지는 애니메이션, 무너지는 기둥의 애니메이션을 들었다. 홍상범 TA는 리지드 바디 툴에 리지드 바디 다이나믹스 작업을 할 때, 개체를 등록하고 미리 입력한 폭파 애니메이션을 지정해서 누구나 다 폭파 애니메이션을 구현할 수 있도록 미리 작업을 해두었다.

다리가 무너지는 애니메이션도 폭파 애니메이션과 동일한 방식이지만, 여기에는 다른 옵션이 필요했다. 각 부위 별로 시간에 따라서 무너져 내리는 것을 묘사해야 했기 때문이다. 이를 묘사하기 위해서 홍상범 TA는 콜리젼 헬퍼를 도입했다. 콜리젼 헬퍼에 키값을 입력하고, 그 움직임에 따라서 충돌이 일어난 부위가 무너지도록 한 것이다. 홍상범 TA는 여기서 헬퍼를 컨트롤하고, 파라미터 값을 입력함으로써 무너져 내리는 정도나, 무너지는 속도 등을 조절할 수 있게끔 조정했다.

▲ 컨트롤러를 통해 세팅을 자동화하고, 여러 오브젝트를 한 번에 컨트롤하기 쉽게 했다

무너지는 기둥을 묘사할 때는 여기에 바인딩과 브레이크포스를 추가했다. 바인딩이란 객체 사이사이에 라인을 넣고 서로 연결하는 것인데, 이를 통해서 무너지는 모션에 딜레이를 주고, 사실적인 움직임을 나타낼 수 있다는 것이다. 라인이 많아지면 많아질수록 오브젝트 간 잡아당기는 힘이 강해지고, 보다 덩어리진 모션을 표현할 수 있다고 홍상범 TA는 설명했다.
.
이런 과정을 효율적으로 구현하기 위해서는 세팅이 자동적으로 이루어져야 했고, 파티클 기반의 세팅이 필요했다. 또한 오브젝트끼리의 간섭이 물리 기반 애니메이션의 최대 단점인 만큼, 그 간섭이 최소화될 수 있도록 조건을 정해야 했다. 아울러 이를 컨트롤하기 쉽게 파라미터를 제공하는 구조를 가지게 됐으며, 베이크-키에디트-익스포트의 과정을 단순화해서 사후 수정 및 적용을 더 쉽게 하고자 했다고 설명했다.

▲ 툴은 최종적으로 이런 구조를 갖게 됐다

소프트 바디 다이나믹스 툴에서 가장 중요시한 부분은 루핑이다. 물리 시뮬레이션은 반복되지 않는데, 게임 속에서는 반복이 빈번하게 일어난다. 특히나 소프트 바디 다이나믹스는 단단한 물체가 아닌 탄성이 있는 물체, 단순히 고무공뿐만 아니라 피부나 머릿결 같은 물체에도 적용되는 만큼 루핑은 반드시 고려할 사항이었다. 그리고 그 반복된 움직임을 여러 곳에서 사용하는 만큼, 구현된 값을 저장해서 다른 곳에도 활용할 수 있어야 했다.

▲ 소프트 바디 다이나믹스는 여러 번 활용되는 애니메이션에 쓰였기 때문에, 루핑이 필수였다

3D 맥스뿐만 아니라 언리얼엔진4에서도 애니메이션을 구현할 수 있다. 언리얼엔진4의 장점은 스크립트를 따로 짜거나 하지 않아도, 애니메이션 블루프린트를 통해서 소프트본 컨트롤러 등 다양한 기능을 활용할 수 있고, 물리 기반 애니메이션을 구현하기 용이하다.

머리카락이나 옷의 움직임을 구현할 때, 비물리 기반 애니메이션을 적용하면 앞서 말했듯 물체끼리 뚫고 지나가는 현상이 벌어지기도 한다. 그렇기 때문에 이 부분은 물리 기반 애니메이션을 적용해서 하게 된다. 옷의 움직임을 구현할 때 홍상범 TA는 우선 콜리젼 바디를 생성하고, 스켈레탈 메시로 가서 오브젝트의 피직스 애셋을 선택해야 한다고 말했다. 여기서 명심해야 할 부분은 옷이 신체에 닿는 부분을 따로 아이디 지정을 해줘야 한다는 점이다. 피직스 애셋을 부여할 때 오브젝트 단위로 구분이 되는 게 아니라, 아이디를 기반으로 구분이 되기 때문이다. 즉 이를 구분해야 애니메이션 작업을 할 때 엉뚱한 부분이 오브젝트를 뚫고 나오는 일을 방지할 수 있다.

홍상범 TA는 애니메이션 블루프린트를 활용하는 또 다른 사례로 리지드 바디를 이용한 헤어 모션을 구현하는 방법을 예로 들었다. 에셋에서 우선 헤어 부분의 컬리전 바디를 만들고, 옵션과 수치를 조정한다. 이 과정이 끝난 다음에는 애니메이션 블루프린트를 열고, 소프트본 컨트롤러를 만든 뒤에 리지드 바디를 연결하고 나서 컨트롤러로 조정을 하면 머리카락의 움직임을 단순히 리지드 바디를 활용한 움직임보다 더 자연스럽게 할 수 있다. 리지드 바디만 설정했을 때는 중력, 다른 대상과의 충돌만을 고려하지만 소프트본 컨트롤러는 더 많은 옵션을 통해서 움직임을 자연스럽게 설정할 수 있기 때문이다.


처음에 벨트를 착용한 캐릭터에 애니메이션을 줬을 때 종종 허벅지나 엉덩이가 벨트를 통과해버리는 경우가 많다. 벨트에 따로 리지드 바디를 안 주는 경우가 많고, 그렇게 되면 물리적 속성이 들어가지 않기 때문에 이를 물체로 인식하지 못하고 통과해버리는 것이다. 벨트에 리지드 바디를 주고, 일일이 오브젝트로 골라서 조정하고 자연스러운 움직임을 보이는 일은 힘들다. 일일이 하나하나 해야 하기 때문이다.

이를 위한 기능이 본 드리븐 기능이다. 우선 본 드리븐을 할 부분을 파악하고, 애니메이션 블루프린트를 열어서 본 드리븐 기능이 일어날 곳을 밴드한다, 그리고 애님 다이나믹스, 트랜스폼 본 컨트롤러를 로드로 연결한다. 트랜스폼 본 컨트롤러는 타겟 본의 회전, 이동, 스케일 변화를 관리하는 데 여기에 본 드리븐과 연결하면서 타겟 본의 움직임에 따라 움직이는지 확인할 수 있다. 허벅지의 움직임에 따라서 벨트가 바로 움직이면 본 드리븐이 잘 연결된 것이다.


그 외에도 소프트 본을 이용한 모션 구현 방법과, 애님 다이나믹스를 이용한 모션 구현 방법 또한 기본적인 방법은 동일하다. 애니메이션 블루프린트를 만들고, 소프트 본 컨트롤러를 만든 뒤에 소프트 본을 적용할 부분만 지정해서 로드로 연결하면 옵션을 통해 움직임을 제어할 수 있다. 애님 다이나믹스 역시도 이와 같은 과정을 통해서 여러 옵션을 제어할 수 있다.

이런 것들이 애니메이션 제작에서 어떤 변화를 주었을까? 홍상범 TA는 이전에는 각각 애니메이션을 따로 적용하고 작업해야 했지만, 3D 맥스에서 지금 사용하고 있는 툴을 개발함으로써 절차를 자동화했고, 한 번에 애니메이션을 적용하기 쉬워졌다고 말했다. 무엇보다도 객체 수가 줄었기 때문에, 작업을 하는 양이 줄었다는 것도 큰 이점이었다.


언리에서는 이전엔 모든 애니메이션에 움직임을 각각 적용해야만 했다. 하지만 이제는 애니메이션 블루프린트를 사용해서 하나의 애니메이션을 만들고 이를 모든 곳에 적용할 수 있게 됐다. 즉 각각 만들지 않고 하나의 애니메이션만 만들어도 되기 때문에 작업 시간을 줄일 수 있었다.

홍상범 TA는 개체가 줄어들면서 애니메이터들이나 아티스트들도 편해졌다고 설명했다. 이전에는 여러 개체에 각각 애니메이션과 세팅이 걸려있었고, 이를 하나하나 수정해야 했지만 여러 개체의 애니메이션 및 세팅 수정이 한 번에 적용될 수 있도록 일괄적인 툴을 활용했기 때문에 수정이 편해졌다. 뿐만 아니라 자체 제작한 툴을 활용했기 때문에, 따로 툴을 사용하는 비용이 들지 않았다는 것도 이점이었다.

▲ 요는 애니메이션 작업을 여러 번에 걸쳐 하지 않고, 한 번에 적용할 수 있도록 하는 것이었다

오브젝트에 애니메이션을 주는 과정에 왕도가 있는 것은 아니다. 크게 물리 기반, 비물리 기반으로 나누었지만 그 안에도 다양한 방법이 존재하고, 이를 뒷받침하는 기능들도 수도 없이 많다. 지금도 홍상범 TA는 더 효과적인 방법을 찾기 위해 연구 중이며, 이번 강연은 자신이 찾은 방법을 공유하고자 했던 것임을 상기하면서 강연을 마쳤다.