본문 바로가기
Coding/강의 참고 자료

캐릭터 애니메이션 개요

by 생각하는대로살자 2011. 10. 18.
< 중간고사 공부에 참고하기 바람 >

1. 종류
캐릭터 애니메이션은 크게 두 가지 방식으로 나눌 수 있다. 프레임 애니메이션과 본 애니메이션으로 나눌 수 있다.

1) 프레임 애니메이션 (Frame Animation)
프레임 단위의 scene으로 하나하나 저장하는 방법이다.
이는 시간에 따라 프레임을 저장한다고 보면 된다. 예를 들어 1초에 30프레임을 가진다면 30개의 프레임을 불러와서 1초에 30번 렌더링 하는 것과 마찬가지이다. 마치 2D 애니메이션과 같은 방법으로 애니메이션을 구현한다.
셀 애니메이션과 유사하다. 따라서 본 애니메이션에 비해 계산량이 적어서 빠른 스피드가 요구되는 게임에서 많이 사용되기도 하고, 이러한 점이 장점이 된다. 그러나 각 프레임 별로 모든 버텍스를 저장하기 때문에 이에 소요되는 메모리 양이 크다.

프레임 애니메이션의 확장형(?)이 키(key) 프레임 애니메이션이다.
키프레임 애니메이션은 각 프레임을 저장할 때, 프레임 자체가 아니라 키를 저장하겠다는 것을 의미한다. 즉, 키 프레임 애니메이션은 적당한 프레임만을 저장해서 애니메이션이 필요할 때 보간을 통하여 다시 원하는 프레임을 만들어 내어 렌더링 하는 방법을 말한다. 그리고, 저장되는 각 키프레임은 그 프레임이 언제 렌더링 되는지에 대한 시간 정보를 가지고 있다.


2) 본 애니메이션 (Bone Animation , Skeletal Anmimation)
본 애니메이션은 프레임 애니메이션처럼 모든 버텍스를 저장하여 렌더링 하는 방식이 아닌, 애니메이션을 이루는 본의 정보를 시간에 따라 기록된 것을 가지고 애니메이션 시키는 방식이다. 즉, 애니메이션을 이루는 본의 키 값을 가지고 와서 각각의 오브젝트를 키에 따라 실시간으로 변환하여 애니메이션을 구현하는 방법이다.
따라서 프레임 애니메이션보다는 메모리를 적게 차지한다.

프로그래머가 사용하는 키(key)값이란, 매트릭스와 시간 데이터를 의미한다. 키에 있어서 대부분의 매트릭스는 보통 회전행렬을 의미한다. 시간데이터는 틱타임(tick time)을 기반으로 기록되어 있다. 틱타임을 기반으로 작성되어 있기 때문에 만일 초단위로 바꾸었을때 딱 떨어지지 않는다면 프로그래머는 초 단위로 정리하기 위해 보간법을 사용하기도 한다.

하지만 매트릭스를 기반으로 애니메이션 되므로 일부 관절이 깨지는 현상이 충분히 나타날 수 있다. 이를 해결하기 위하여 Vertex-Blending이라는 방법을 통하여 해결하기도 한다. 캐릭터가 많이 등장하거나 스피드가 요구되는 게임이라면 주로 깨지지 않는 범위내에서 캐릭터를 디자인하는 것으로 마무리 하기도 한다.

장점은 본이 애니메이션을 일으키기 때문에 메모리를 많이 차지하지 않으며 동적인 처리가 쉽다. 
단점은 세세한 부분의 애니메이션 처리가 어렵다. 자세히 하려면 그만큼 많은 본과 키값이 존재해야 하며, 얼굴 표정의 변화나 몰핑의 경우 눈, 코, 입, 입술, 볼, 이마 등등에 각각 본을 심는다는 것도 문제가 있고, 심는다 한들 한 개의 버텍스가 너무 많은 본에 영향을 받는 문제가 있기 때문에 이와 같은 애니메이션의 경우는 버텍스 애니메이션으로 처리한다.

(이러한 이유로 버텍스 애니메이션은 위의 두 종류의 애니메이션과 별도로 나누기도 한다. 게임에서는 일반적으로 잘 사용하지 않는다. 퍼포먼스도 별로이다.)

'Coding > 강의 참고 자료' 카테고리의 다른 글

게임 툴 제작 중간고사 참고 (작성중)  (0) 2011.10.22