티스토리 뷰

반응형

유니티 문서에 애니메이션 용어집이 있을 정도로 애니메이션 관련 용어들이 많습니다.

자꾸 헷갈려서 간단히 정리해보려고 합니다. 

이 글에서는 유니티  Animation System 을 구성하는 Animation Clip, Animator, Animator Controller, Avatar 등을 살펴봅니다. 

 


 

[1] Animation Model Type

유니티의 Animation System 은 두가지 타입의 모델을 다룹니다.

 

1. Humanoid model

실제 인간의 골격과 비슷한 모델. 최소 15개의 뼈를 포함하는 구조

(참고: Importing a model with humanoid animations)

 

2. Generic model

휴머노이드 빼고 모든 모델.

(참고: Importing a model with non-humanoid (generic) animations)

 

 

이렇게 Humanoid 모델만 따로 나눠논 이유는 

휴머노이드 애니메이션 리타게팅 때문이라고 생각됩니다. 

 

휴머노이드 애니메이션 리타게팅은 유니티 애니메이션 시스템의 가장 강력한 기능 중 하나로 

동일한 애니메이션 세트를 다양한 캐릭터 모델에 적용할 수 있게 해줍니다. 

(리타게팅은 모델의 골격 구조 사이에 연관성을 제공하기 때문에 아바타가 설정된 휴머노이드 모델에만 적용 가능합니다.)

 

[2] Animation Clip

애니메이션 클립은 걷기(Walk), 점프(Jump) 같은 각각의 독립적인 모션을 의미합니다. 

 

# 만드는 법 

유니티 에디터 내에서 애니메이션 클립을 만들 수 도 있고 

Max, Maya, Blender 등 외부 프로그램에서 만들어서 import 할 수 도 있습니다. 

 

외부 프로그램에서 만드는게 좀 더 복잡한 애니메이션을 만들 수 있기 때문에

유니티에서는 보통 2D, UI 같은 간단한 애니메이션만 만든다고 합니다. 

 

참고

- Unity 문서 > 새 애니메이션 클립 생성

- Unity 문서 > 외부 소스 애니메이션

- 유튜브 > 유니티 애니메이션 클립

 

 

# 애니메이션 클립 살펴보기

유니티에 서 제공하는 Newbie & Friends 패키지를 열어보면 

Animation Clip을 볼 수 있습니다. 

 

 

모델을 선택하면 Inspector 창에서 Rig, Animation, Material 같은 정보를 볼 수 있는데요

 

 

Rig > Animation Type이 Humanoid 인 모델들은 Animation 탭에 아무것도 안나오지만

 

 

Rig > Animation Type이 Humanoid가 아니라 Generic인 모델들은 

 

 

Animation 탭에서 Animation Clip이 추가되어있는 것을 볼 수 있습니다. 

 

 

휴머노이드 타입으로 리깅된 3D 모델은 체형이 달라도 애니메이션 클립이 호환될 수 있기 때문에

Model만 제공하고 싶어서  Animation 탭에 설정을 안해놓은 것 같아요! 

예를들어 저의 경우, 캐릭터는  Newbie & Friends 패키지 에 있는 Boy 를 사용하지만 

애니메이션은 StarterAsset 패키지에 있는 ThirdPerson 애니메이션을 사용해주고 있습니다.

 

 

[3] Animatior 

Animator 컴포넌트는 Scene에 있는 GameObject에 animation을 assign하고 싶을 때 사용하는 컴포넌트 입니다. 

 

Newbie & Friends 패키지 의 프리팹을 선택해보면 

 

 

Animator 컴포넌트가 붙어있는 것을 볼 수 있습니다. 

 

 

Animator 컴포넌트는 

AnimatorController와 Avatar를 설정해줄 수 있는 필드를 가지고 있습니다. 

두가지는 아래에서 살펴보겠습니다.

 

 

[4] Animator Controller 

Animator Controller 는 여러 애니메이션 클립과 애니메이션 전환을 배치하고 관리할 수 있게 해줍니다.

 

다양한 애니메이션이 있고 특정 condition이 발생하면 애니메이션을 스위칭하는 것은 일반적인데요, 

예를들어 스페이스바가 눌릴 때마다 walk Animation Clip 에서  jump Animation Clip으로 스위칭합니다. 

 

애니메이터 컨트롤러에는 사용되는 애니메이션 클립에 대한 참조가 있으며 

State Machine를 사용하여 다양한 애니메이션 클립과 이들 사이의 전환을 관리합니다.

 

A simple Animator Controller

 

 

하나의 Animation Clip만 가지고 있더라도 GameObject에서 사용하려면 꼭 Animator 컨트롤러에 배치해야 합니다.

 

너가 GameObject를 animating 시키기 시작하면 (Animation Window를 사용하거나 GameObject에 Animation Clip을 붙이거나 해서) 유니티는 자동으로 Animator Controller를 만듭니다. 

Animator Controller 를 직접 만들고 싶다면, Project window 를 우클릭하고 Create > Animator Controller 하면 됩니다. 

 

아주 간단한 애니메이터 컨트롤러라면 하나 또는 두 개의 클립을 포함합니다.

하지만 좀더 고급 애니메이터 컨트롤러라면 메인 캐릭터의 모든 움직임을 위한 휴머노이드 애니메이션이 수십 개 포함되어 있으며 플레이어가 씬 안에서 움직일 때 부드러운 움직임을 표현할 수 있도록 여러 개의 클립을 동시에 블렌딩할 수 있습니다.

 

[5] Avatar

유니티의 휴머노이드 모델은  리타게팅 머슬 정의 와 같은 특수한 기능을 가지는데요, 

이런 특수한 기능은 휴머노이드 캐릭터를 공통 내부 포맷(common internal format)으로 매핑시키는  

Unity의 Avatar 시스템이 있기 때문에 가능한 것 입니다. 

 

리깅된 캐릭터 모델은 고유의 골격 구조를 가지고 있으며, 그것이 Unity의 일반적인 아바타 포맷에 매핑됩니다.  

이 매핑은 임포트된 캐릭터 모델의 일부로서 아바타 에셋 형식으로 저장됩니다. 

 

 

모델의 Rig > Avatar Definition을 보면 Create From This Model로 되어있는데요

Avatar 에셋을 유니티가 알아서 만들어주는 것 같네요!

 

 

아바타 에셋을 선택하고 Inspector 창에서 Configure Avatar 를 눌러보면

 

 

뼈대 매핑을 볼 수 있습니다. 

 

 

[6] Avatar Mask 

아바타 마스크 는 특정 신체 부위에만 애니메이션을 적용하고 싶을 때 사용합니다. 

아바타 마스크는 Asset 창이나 프로젝트 창에서 Create > Avatar Mask를 눌러서 만들 수 있습니다.

 

마스킹할 부위를 정의할 수 있는데,

초록색은 애니메이션을 적용할 부위, 빨간색은 적용하지 않을 부위 라고 합니다. 

 

 

 

 

 

[7] 정리

애니메이션 시스템의 여러 부분을 살펴봤는데요, 아래의 사진처럼 서로 연결됩니다. 

 

https://docs.unity3d.com/kr/current/Manual/AnimationOverview.html

1.

애니메이션 클립은 외부 소스에서 임포트하거나 Unity에서 생성합니다. 이 예에서는 임포트된 휴머노이드 애니메이션 모션 캡쳐입니다.

 

2.

애니메이션 클립이 애니메이터 컨트롤러 안에 배치됩니다. 이것은 애니메이터 창에서 애니메이터 컨트롤러 보기의 예입니다. 상태(애니메이션 또는 중첩된 하위 상태 머신 등을 나타냅니다)는 선으로 연결된 노드로 표시됩니다. 이 애니메이터 컨트롤러는 프로젝트 창에서 에셋으로 존재합니다.

 

3.

리깅된 캐릭터 모델(여기에서는 우주 비행사 “아스트렐라”)은 고유의 골격 구조를 가지고 있으며, 그것이 Unity의 일반적인 아바타 포맷에 매핑됩니다. 이 매핑은 임포트된 캐릭터 모델의 일부로서 아바타 에셋 형식으로 저장되며, 그림에 보이는 것처럼 프로젝트 창에 표시됩니다.

 

4. 캐릭터 모델을 애니메이션화하는 경우 모델에는 Animator 컴포넌트가 연결되어 있습니다. 위의 인스펙터 뷰에는 애니메이터 컨트롤러와 아바타가 모두 할당된 Animator 컴포넌트가 보입니다. 애니메이터는 이를 모두 함께 사용하여 모델을 애니메이션화합니다. 아바타 레퍼런스는 휴머노이드 캐릭터를 애니메이션화하는 경우에만 필요합니다. 다른 애니메이션 타입에는 애니메이터 컨트롤러만 필요합니다.

 

 

 

반응형
댓글