애니메이션
애니메이션 클립

애니메이션 시스템 개요

Unity는 풍부하고 정교한 애니메이션 시스템을 탑재하고 있습니다. ’Mecanim’이라고도 하는 이 시스템은 다음을 제공합니다.

  • 쉬운 워크플로 및 오브젝트, 캐릭터, 프로퍼티 등 Unity의 모든 요소에 대한 애니메이션 설정
  • 임포트된 애니메이션 클립과 Unity에서 생성된 애니메이션 지원
  • 휴머노이드 애니메이션 리타게팅 - 특정 캐릭터 모델의 애니메이션을 다른 캐릭터 모델에 적용
  • 애니메이션 클립의 위치를 조정하는 단순화된 워크플로
  • 애니메이션 클립, 전환, 상호 작용에 대한 편리한 미리보기 기능이 탑재되어 있습니다. 이로 인해 애니메이터의 작업을 프로그래머와는 더 독립적으로 진행할 수 있으며, 게임 플레이 코드 구현을 기다릴 필요없이 사전에 프로토타입을 만들고 애니메이션을 미리 볼 수 있습니다.
  • 비주얼 프로그래밍 툴을 이용하여 애니메이션 사이의 복잡한 상호작용 관리
  • 서로 다른 로직을 이용하여 각각 다른 신체 부위 애니메이션화
  • 레이어링 및 마스킹 기능
애니메이터 창에서 애니메이션 상태 머신의 일반적인 보기
애니메이터 창에서 애니메이션 상태 머신의 일반적인 보기

애니메이션(Animation) 워크플로

Unity 애니메이션 시스템은 애니메이션 클립의 개념에 기반하고 있으며, 특정 오브젝트의 포지션과 각도, 기타 프로퍼티가 시간이 지남에 따라 어떻게 변화해야 하는지에 대한 정보를 포함하고 있습니다. 각 클립을 선형적인 특징을 가지는 하나의 기록 공간이라고 생각할 수 있습니다. 외부 소스 애니메이션 클립은 아티스트와 애니메이터에 의해 Max나 Maya 등의 타사 툴을 통해 생성하거나 모션 캡쳐 스튜디오에서 촬영된 것, 또는 기타 소스로 만들어집니다.

애니메이션 클립은 애니메이터 컨트롤러 라는 구조화된 플로우차트와 같은 시스템으로 정리됩니다. 애니메이터 컨트롤러는 현재 어떤 클립이 재생되어야 하는지, 또한 애니메이션이 어떤 시점에서 변화하거나 블렌드되어야 하는지를 파악하는 “상태 머신” 역할을 합니다.

아주 간단한 애니메이터 컨트롤러라면 하나 또는 두 개의 클립만 포함할 수 있습니다. 예를 들어, 회전과 바운싱(튕김)의 세기를 조절하는 것과, 정확한 타이밍에 문을 여닫는 애니메이션이 됩니다. 좀더 고급 애니메이터 컨트롤러라면 메인 캐릭터의 모든 움직임을 위한 휴머노이드 애니메이션이 수십 개 포함되어 있으며 플레이어가 씬 안에서 움직일 때 부드러운 움직임을 표현할 수 있도록 여러 개의 클립을 동시에 블렌딩할 수 있습니다.

Unity의 애니메이션 시스템은 휴머노이드 캐릭터를 위한 많은 특수 기능을 탑재하고 있습니다. 이러한 기능을 이용함으로써 소스에 상관없이(예: 모션 캡처, 에셋 스토어, 기타 타사 애니메이션 라이브러리) 자신의 캐릭터 모델에 휴머노이드 애니메이션을 리타게팅 하거나 머슬 정의를 조정할 수 있습니다. 이러한 특수 기능은 시스템에 휴머노이드 캐릭터가 공통의 내부 포맷으로 매핑되는 Unity의 아바타 시스템에 의해 가능합니다.

애니메이션 클립, 애니메이터 컨트롤러, 아바타는 모두 Animator 컴포넌트를 통해 게임 오브젝트와 연결됩니다. 이 컴포넌트는 하나의 애니메이터 컨트롤러 및 (필요한 경우에는)이 모델의 아바타에 대한 레퍼런스를 가지고 있습니다. 애니메이터 컨트롤러도 마찬가지로 사용하고 있는 애니메이션 클립에 대한 레퍼런스를 가지고 있습니다.

애니메이션 시스템의 각 파트 간의 연결 방식을 나타낸 다이어그램
애니메이션 시스템의 각 파트 간의 연결 방식을 나타낸 다이어그램

위 다이어그램은 다음의 내용을 보여주고 있습니다.

  1. 애니메이션 클립이 외부 소스로부터 임포트되거나 Unity에서 생성됩니다. 이 예제에서 애니메이션 클립은 임포트된 휴머노이드 애니메이션 모션 캡쳐입니다.
  2. 애니메이션 클립이 애니메이터 컨트롤러 안에 배치됩니다. 이것은 애니메이터 창에서 애니메이터 컨트롤러 보기의 예입니다. 상태(애니메이션 또는 중첩된 하위 상태 머신 등을 나타냅니다)는 선으로 연결된 노드로 표시됩니다. 이 애니메이터 컨트롤러는 프로젝트 창에서 에셋으로 존재합니다.
  3. 리그 된 캐릭터 모델(여기에서는 우주 비행사 “아스트렐라”)은 고유의 골격 구조를 가지고 있으며, 그것이 Unity의 일반적인 아바타 포맷에 매핑됩니다. 이 매핑은 임포트된 캐릭터 모델의 일부로서 아바타 에셋 형식으로 저장되며, 그림에 보이는 것처럼 프로젝트 창에 표시됩니다.
  4. 캐릭터 모델을 애니메이션화할 때 캐릭터는 Animator 컴포넌트를 가집니다. 위의 인스펙터 뷰에 있는 Animator 컴포넌트에는 애니메이터 컨트롤러아바타 모두가 할당되어 있습니다. 애니메이터는 애니메이션을 하기 위해 이를 함께 사용합니다. 아바타에 대한 레퍼런스는 휴머노이드 캐릭터의 애니메이션에만 필요합니다. 다른 타입의 애니메이션의 경우 애니메이터 컨트롤러만 필요합니다.

Unity 애니메이션 시스템(“메카님”이라고 함)에는 다양한 개념과 용어가 포함됩니다. 용어의 의미를 확인하려면 애니메이션 용어집을 참조하십시오.

레거시(Legacy) 애니메이션 시스템

대부분의 상황에서 메카님의 사용이 권장되지만, Unity에서는 Unity 4 이전부터 있던 레거시 애니메이션 시스템을 유지해오고 있습니다. Unity 4 이전에 만들어진 오래된 콘텐츠를 다루는 경우, 레거시 애니메이션 시스템을 사용해야 할 수 있습니다. 레거시 애니메이션 시스템에 대한 자세한 내용은 여기를 참조하십시오.

Unity에서는 이 워크플로를 메카님에 병합함으로써 모든 경우에 대한 레거시 애니메이션 시스템 사용을 점차 줄여 나갈 예정입니다.

애니메이션
애니메이션 클립