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

애니메이션 시스템 개요(Animation System Overview)

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

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

애니메이션 워크플로

Unity 애니메이션 시스템은 특정 오브젝트의 포지션 및 회전과 기타 프로퍼티가 시간이 지남에 따라 어떻게 변경되어야 하는지에 대한 정보가 포함된 애니메이션 클립의 개념에 기반을 두고 있습니다. 각 클립을 하나의 선형적인 녹화 영상이라고 생각하시면 됩니다. 외부 소스 애니메이션 클립은 아티스트와 애니메이터가 Max나 Maya 같은 타사 툴을 사용하여 생성하거나, 모션 캡처 스튜디오 또는 기타 소스에서 가져옵니다.

애니메이션 클립은 [애니메이터 컨트롤러]라는 구조화된 플로우차트 같은 시스템으로 정리됩니다. 애니메이터 컨트롤러는 현재 어떤 클립이 재생되고 있어야 하고 애니메이션이 언제 변경되거나 하나로 블렌드되어야 하는지 계속 추적하는 “상태 머신”의 역할을 합니다.

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

Unity의 애니메이션 시스템에는 휴머노이드 캐릭터와 관련된 여러 특수 기능도 있습니다. 이런 기능을 사용해 휴머노이드 애니메이션을 소스(예: 모션 캡처, 에셋 스토어, 기타 타사 애니메이션 라이브러리)에 상관없이 사용자 지정 캐릭터 모델에 리타게팅하고 머슬 정의도 조정할 수 있습니다. 이런 특수 기능은 휴머노이드 캐릭터가 공통 내부 포맷에 매핑되는 Unity의 아바타 시스템을 통해 사용 가능합니다.

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

How the various parts of the animation system connect together
How the various parts of the animation system connect together

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

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

Unity 애니메이션 시스템은 여러 개념과 용어를 수반합니다. 용어나 개념의 의미를 확인하려면 애니메이션 용어집을 참조하십시오.

레거시 애니메이션 시스템

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


  • 2018–04–25 일부 편집 리뷰를 거쳐 페이지 수정됨
애니메이션
애니메이션 클립