
3.7 애니메이터 레이어 생성 및 설정
Tutorial
Beginner
+10XP
40 mins
(6)
Unity Technologies

이 튜토리얼에서 배울 내용은 다음과 같습니다.
- 애니메이터 레이어의 역할 살펴보기
- 애니메이터 레이어 설정 알아보기
- 애니메이터 레이어를 사용해 블렌딩하려는 애니메이션을 어떻게 제어할지 생각해 보기
이 튜토리얼에서 애니메이터 레이어 설정 방법을 단계별로 안내하지는 않지만, 튜토리얼을 진행하면서 자연스럽게 이해할 수 있습니다.
1. 개요
애니메이터 레이어는 Animator 컨트롤러의 구조에 속하며, 여러 개의 애니메이션을 플레이하고 블렌딩하는 또 하나의 방법입니다.
이 튜토리얼에서는 애니메이터 레이어의 역할과 설정을 살펴보고, 애니메이터 레이어를 사용해 작업자가 블렌딩하려는 애니메이션을 어떻게 제어할지 생각해 보겠습니다. 이 튜토리얼에서 애니메이터 레이어 설정 방법을 단계별로 안내하지는 않지만, 튜토리얼을 진행하면서 자연스럽게 이해할 수 있습니다.
2. 시작하기 전에
이 튜토리얼은 '3D 애니메이션 시스템 소개' 교육 과정의 Unity 프로젝트를 활용합니다. 프로젝트를 아직 다운로드하지 않았다면 다운로드 후 계속 진행하세요.
프로젝트를 다운로드한 후에 다음 단계를 따릅니다.
1. Unity 에디터에서 프로젝트를 엽니다.
2. 프로젝트 창에서 Assets > 3.7 - Creating and configuring Animator Layers > Scenes로 이동합니다.
3. AdditiveAnimationExample 씬을 더블 클릭해 엽니다.
4. Animator 창이 열리지 않으면 Windows > Animation > Animator로 이동합니다.
5. 계층 구조에서 Ellen 게임 오브젝트를 선택합니다.
3. 애니메이터 레이어 기초
애니메이터 레이어는 여러 개의 애니메이션을 동시에 플레이하고 결과를 블렌딩하는 방법입니다. 다음 두 가지 방법 중 하나를 사용할 수 있습니다.
- 블렌딩이 다른 애니메이터 레이어에서 발생하고 있는 상황을 오버라이드합니다.
- 블렌딩이 다른 애니메이터 레이어에서 발생하고 있는 상황에 추가됩니다.
각 애니메이터 레이어에는 해당 레이어에 대한 모든 상태를 포함하는 상태 머신이 있습니다.
애니메이터 레이어 인덱스
애니메이터 레이어에는 인덱스가 있습니다. 기본 레이어의 인덱스는 0이고, 모든 후속 레이어의 인덱스는 0에서부터 증분됩니다.
애니메이터 레이어는 0부터 인덱스 오름차순으로 평가됩니다. 즉, 기본 레이어가 먼저 평가되고 인덱스 1, 2의 레이어가 뒤따르는 식입니다.
애니메이터 레이어 가중치
각 애니메이터 레이어에는 최종 결과에 얼마나 기여하는지 결정하는 가중치가 있습니다. 그러나 애니메이터 레이어 간 블렌딩은 전환이나 블렌드 트리와 약간 다르게 진행됩니다.
어떻게 진행되는지 정확히 이해하기 위해서는 먼저 중요한 두 가지 개념을 알아야 하는데, 바로 마스킹과 블렌딩 타입입니다.
4. 마스킹
트랜스폼 애니메이션이나 휴머노이드 애니메이션을 작업할 때 골격의 일부만 한 번에 애니메이션화하는 것이 더 편리한 경우가 자주 있습니다. 이렇게 하면 신체의 여러 부분에서 독립적인 애니메이션을 플레이할 수 있습니다.
휴머노이드에서 상체에 손을 흔드는 애니메이션을 적용하고 하체는 걷는 애니메이션을 플레이하게 만드는 경우를 예로 들 수 있습니다.
이 경우 애니메이션의 일부만 플레이하게 하려는 애니메이터 레이어의 아바타 마스크 에셋에 레퍼런스를 추가하면 됩니다.
5. 애니메이터 레이어 블렌딩 프로세스
애니메이터 레이어 블렌딩은 일반적인 블렌딩과 다른데, 여기에 대해서 좀 더 자세히 알아보겠습니다.
애니메이터 레이어는 인덱스의 증가에 따라 결과 애니메이션이 평가되도록 합니다. 그 내용은 다음과 같습니다.
- 첫 번째 레이어 0이 평가됩니다.
- 그러면 레이어 1이 평가되고 레이어 0과 블렌딩됩니다.
- 그런 다음 레이어 2가 평가되고 레이어 0과 1의 블렌딩 결과와 블렌딩됩니다.
- 그런 다음 레이어 3이 평가되고 이전 블렌딩 결과와 블렌딩됩니다.
- 이런 식으로 계속됩니다.
애니메이터 레이어를 사용해 애니메이션을 블렌딩하는 두 가지 방법은 아래와 같습니다.
- 오버라이드 블렌딩
- 애디티브 블렌딩
6. 오버라이드 블렌딩
오버라이드 블렌딩은 전환과 1D 블렌드 트리에서 사용된 블렌딩과 비슷합니다. 다음 애니메이터 레이어의 기여도가 늘어남에 따라 이전 애니메이터 레이어의 기여도는 줄어듭니다.
가중치 계산 방법은 다음과 같습니다.
이전 애니메이터 레이어의 가중치는 오버라이딩(다음) 애니메이터 레이어 가중치의 역과 같습니다. 예를 들면, 다음 애니메이터 레이어의 가중치가 0.7이면 이전 애니메이터 레이어의 조합은 사실상 가중치가 0.3입니다.
7. 애디티브 블렌딩
애니메이터 레이어 블렌딩의 다른 옵션으로 애디티브 블렌딩이 있습니다.
애디티브 블렌딩은 애디티브 애니메이션을 지원하는 데 사용됩니다. 애디티브 애니메이션은 애니메이션 자체가 레퍼런스 포즈에서 변경되어 저장될 때를 말합니다. 애디티브 애니메이션의 일반적인 예로 게임 내 캐릭터가 달릴 때 숨을 헐떡이는 애니메이션을 들 수 있습니다. 애디티브 애니메이션을 설정하려면 '모델별 애니메이션 임포트 설정' 튜토리얼을 확인하세요.
애디티브가 아닌 애니메이션에도 애디티브 블렌딩을 사용할 수 있지만, 이렇게 하면 매우 이상한 애니메이션이 생성되어 의도한 결과물이 나오지 않을 수 있습니다.
애디티브 블렌딩 작동 원리
애디티브 블렌딩을 사용할 때 이미 평가된 애니메이터 레이어의 실제 가중치는 항상 1입니다. 애디티브 애니메이터 레이어의 모든 애니메이션은 해당 레이어의 기여도에 추가됩니다. 애니메이션 데이터는 기본값과 현재 값 사이의 델타(변경)로서 가중치가 적용된 기여도를 계산하는 데 사용됩니다.
거칠게 숨을 쉬는 애니메이션의 예로 돌아가서 생각해 보면, 여기서는 숨을 쉬지 않는 캐릭터의 레퍼런스 포즈가 사용됩니다. 그러다 점차 가슴이 확장되면 그 차이만 레코딩됩니다. 이 애니메이션이 현재 애니메이터 레이어에 있는 다른 애니메이션에 추가되면 가슴이 확장되는 정도가 커지도록 가중치를 늘릴 수 있습니다.
8. 애디티브 애니메이션 둘러보기
이 학습 프로젝트용으로 생성된 애디티브 애니메이션을 살펴보겠습니다.
1. 계층 구조에서 Ellen 게임 오브젝트를 선택한 상태인지 확인합니다.
2. 플레이 버튼을 눌러 플레이 모드를 시작합니다.
3. 인스펙터에서 Layer Weight Setter 컴포넌트를 찾습니다.
4. Weight 필드를 조정하고 게임 뷰에서 Ellen에 어떤 영향이 발생하는지 관찰합니다.
5. 플레이 버튼을 눌러 플레이 모드를 종료합니다.
9. 애니메이터 레이어 설정 살펴보기
Animator 컨트롤러를 생성하면 항상 기본 애니메이터 레이어가 자동으로 생성됩니다. Ellen의 애니메이터 레이어가 어떤 식으로 설정되는지 살펴보겠습니다.
1. 계층 구조에서 Ellen 게임 오브젝트를 선택합니다.
2. 상단 메뉴에서 Window > Animation > Animator로 이동해 Animator 창을 엽니다.
3. 창 왼쪽 상단에서 Layers 탭을 선택합니다..
다음과 같은 두 개의 레이어가 표시됩니다.
- Base Layer: 인덱스가 0입니다.
- AdditiveHeavyBreathing: 인덱스가 1입니다.
또 다른 레이어를 생성하려면 레이어 위에 있는 추가(+) 버튼을 선택합니다.
애니메이터 레이어를 클릭하고 드래그하면 애니메이터 레이어가 평가되는 순서를 변경할 수 있습니다.
AdditiveHeavyBreathing 레이어
일단 AdditiveHeavyBreathing 레이어가 어떻게 설정되는지 살펴보겠습니다.
1. AdditiveHeavyBreathing 레이어를 선택합니다.
참고: HeavyBreathing이라는 상태는 오로지 하나뿐이며, 이 상태는 루프에서 플레이됩니다.
2. 레이어 목록에서 AdditiveHeavyBreathing 항목 오른쪽 끝에 있는 톱니 아이콘을 선택해 컨텍스트 설정 팝업을 엽니다.
이제 모든 레이어 설정을 알아보았습니다.
10. Weight, Avatar Mask, Blending 설정 살펴보기
먼저 이 교육 과정에서 이미 접한 설정부터 살펴보겠습니다.
Weight
첫 번째 설정은 Weight입니다. 애니메이터 레이어의 가중치를 늘리면 최종 애니메이션에 대한 레이어의 기여도를 높일 수 있습니다.
Avatar Mask
두 번째 설정은 Avatar Mask입니다. 애니메이터 레이어가 휴머노이드 바디의 특정 영역 또는 제네릭 애니메이션의 특정 트랜스폼에 작성되는 것을 방지하는 데 사용됩니다. 아바타 마스크에 대한 자세한 내용은 릭 튜토리얼을 참조하세요.
Blending
세 번째 설정은 Blending으로, 다음 중 하나로 설정할 수 있습니다.
- Override: 대부분의 경우에 유용하며, 전환 또는 1D 블렌드 트리와 동일한 방식으로 블렌딩합니다.
- Additive: 애디티브 애니메이션에 유용합니다.
11. Sync 및 IK Pass 살펴보기
처음 접해 볼 만한 설정을 추가로 소개하겠습니다.
Sync
다음으로 살펴볼 설정은 Sync입니다. 이 설정을 활성화하면 이 애니메이터 레이어와 동기화할 애니메이터 레이어를 묻는 메시지가 나타납니다. 그러면 소스 애니메이터 레이어의 상태 머신과 동일한 상태 머신이 생성됩니다.
기본적으로 상태 머신은 소스 상태 머신의 타이밍과 일치합니다. 따라서 소스 애니메이터 레이어에서 전환이 발생하면 동기화된 애니메이터 레이어에서도 전환이 발생합니다.
그러나 Timing을 활성화하면 상태 기간이 소스 애니메이터 레이어의 애니메이션 클립 길이와 동기화된 애니메이터 레이어의 애니메이션 클립 길이의 보간이 됩니다. 이때 동기화된 애니메이터 레이어의 가중치가 기준이 됩니다.
Timing이 활성화된 Sync 예제 살펴보기
예를 들어, 걷기와 달리기 상태가 포함된 기본 애니메이터 레이어가 있다고 가정해 보겠습니다. 다음으로 기본 레이어로 동기화되는 'Injured'라는 또 다른 레이어를 생성합니다.
Injured 레이어에 동일한 전환이 설정된 걷기 및 뛰기 상태가 있지만, 이 애니메이션 클립을 'InjuredWalk' 및 'InjuredRun'으로 변경합니다. 레이어가 동기화되어 있으므로 전환이 함께 발생합니다. 그러나 이 레이어의 기간은 서로 다릅니다.
Timing을 활성화하면 Injured 레이어의 상태 기간이 기본 레이어의 상태 기간 쪽으로 보간됩니다. Injured 레이어에 대한 가중치가 1이면 이 레이어의 상태 기간이 기본 레이어의 상태 기간과 동일합니다.
IK Pass
마지막으로 살펴볼 설정은 IK Pass입니다. 이 설정은 휴머노이드 애니메이션에만 적용됩니다.
활성화할 경우 Animator 컴포넌트와 동일한 게임 오브젝트의 MonoBehaviour뿐만 아니라 이 애니메이터 레이어의 상태 머신 동작에서 IK를 평가하기 위한 메서드가 호출됩니다.
4.2 휴머노이드 고유의 애니메이션 스크립팅 소개에서 더 자세히 알아볼 수 있습니다.
12. 요약
이 튜토리얼에서는 애니메이터 레이어를 살펴보고 Unity에서 어떻게 작동하는지 알아보았습니다. 살펴본 내용은 다음과 같습니다.
- 애니메이터 레이어 인덱스 및 가중치가 최종 애니메이션에 대한 레이어의 영향을 결정하는 방식
- 오버라이드 및 애디티브 블렌딩의 차이점과 각 옵션을 사용해야 하는 경우
- 애니메이터 레이어 설정과 여러 관련 설정
애니메이터에 대한 이 학습 프로젝트를 완료했습니다. 교육 과정의 마지막 부분에서는 Unity의 애니메이션 스크립팅에 대해 알아보겠습니다.