애니메이션 임포트

Tutorial

Beginner

+10XP

30m

(265)

Unity Technologies

애니메이션 임포트

이 튜토리얼에서는 임포트한 애니메이션을 설정하고 기존 프로젝트에서 사용하는 방법을 알아봅니다.

이 튜토리얼에서 배울 내용은 다음과 같습니다.

  • 다양한 릭 유형과 용도를 정의합니다.
  • Unity에서 임포트한 애니메이션 클립을 리깅된 모델에 적용합니다.
  • 휴머노이드 릭을 설정하여 캐릭터 간에 애니메이션을 공유합니다.
  • 애니메이션 클립을 다듬어 그 안의 특정 키프레임 시퀀스에 액세스합니다.
  • 임포트한 릭에 사용할 새 Animator 컨트롤러를 생성합니다.
  • 휴머노이드 릭 간에 Animator 컨트롤러를 공유합니다.
  • 지정된 파라미터의 용도를 확인합니다.
  • 파라미터와 전환 간의 관계를 설명합니다.

1. 개요

Unity의 애니메이션 툴은 강력하지만, 복잡하거나 매우 긴 애니메이션은 외부 DCC에서 제작되는 경우가 많습니다. 애니메이션 프로세스를 지원하기 위해 복잡한 컨트롤이 필요한 경우가 많은 캐릭터 애니메이션화에서 특히 그렇습니다. 따라서 외부 애니메이션을 Unity로 임포트해야 하는 경우가 자주 발생합니다. 이 튜토리얼에서는 임포트한 애니메이션을 설정하고 기존 프로젝트에서 사용하는 방법을 알아봅니다.

2. 애니메이션 공유 가능 여부

애니메이션화 작업에는 시간이 많이 걸릴 수 있습니다. 애니메이터는 프로젝트에서 어디에 시간을 쓰는 것이 가장 좋을지 결정해야 하는 경우가 많으며, 배경 캐릭터나 고유할 필요가 없는 애니메이션 세트에는 미리 제작된 애니메이션을 사용하기도 합니다. 이를 통해 사용자가 인터랙티브 경험에서 가장 많이 보게 될 부분을 작업할 수 있습니다. 모든 캐릭터 유형이 다른 릭에 맞게 제작된 애니메이션을 쉽게 활용할 수 있는 것은 아닙니다. 하지만 Unity에서는 기본적인 휴머노이드 형태, 즉 머리 하나와 팔 두 개, 다리 두 개를 갖춘 캐릭터라면 휴머노이드 애니메이션 시스템을 활용할 수 있습니다. 이 시스템에서 Unity는 릭의 조인트를 기준으로 기존 애니메이션을 한 휴머노이드 캐릭터에서 다른 휴머노이드 캐릭터로 변환합니다. 따라서 외형이 크게 다른 캐릭터도 같은 애니메이션 세트를 공유할 수 있습니다.

DCC에서 직접 애니메이션을 제작하는 방법 외에도 온라인, 특히 Unity 에셋 스토어에서 수백 가지 애니메이션 세트를 이용할 수 있습니다. 애니메이션이 원래 휴머노이드 요구 사항에 맞는 릭으로 제작되었다면 Unity 프로젝트에 통합할 수 있습니다. 항상 그렇듯, 다운로드하는 모든 애니메이션의 라이선스를 확인하여 프로젝트에서 사용이 허용되는지 확인하세요.

3. 컨트롤러 공유

1. Scenes 폴더에 있는 TutorialScene_Animation_SharedAnimation_scene을 엽니다.

2. 플레이 모드를 시작하여 씬을 관찰합니다.

이 씬에는 여러 캐릭터가 플랫폼 위에 그룹으로 함께 서 있지만, 현재는 앞에 있는 캐릭터 하나만 애니메이션화되고 있습니다. 컨트롤러에 새 애니메이션을 추가하기 전에, 다른 캐릭터도 애니메이션화될 수 있는지 확인해 보겠습니다.

3. 플레이 모드를 종료합니다.

4. 계층 구조에서 Characters 그룹을 찾아 확장하여 모든 캐릭터를 표시합니다.

5. 그룹의 모든 캐릭터를 선택하고 인스펙터의 오브젝트 피커를 사용하여 Controller 파라미터에 대해 Shared_Controller Animator 컨트롤러를 선택합니다.

6. 다시 플레이 모드를 시작합니다.

모든 캐릭터가 애니메이션화되기 시작합니다. 모두 동일한 Animator 컨트롤러를 공유하지만 서로 다르게 애니메이션화되는 것을 확인할 수 있습니다. 이는 Animator 컨트롤러에 무작위로 선택되는 대기 상태 애니메이션 3개가 있기 때문입니다. 각 캐릭터는 애니메이션 컨트롤러의 개별 인스턴스를 사용합니다. 즉, 모든 캐릭터가 하나의 동일한 컨트롤러에서 작동하는 것이 아니라 개별 캐릭터가 컨트롤러의 자체 복사본을 가집니다. 따라서 대기 상태에 무작위로 선택되는 애니메이션도 캐릭터마다 다를 수 있습니다.

4. 애니메이션 유형 설정

애니메이터는 Unity로 임포트할 애니메이션을 준비할 때 각 애니메이션을 별도의 파일로 만들거나 모든 애니메이션을 하나의 파일에 함께 제작할 수 있습니다. 여러 애니메이션이 포함된 단일 파일을 Unity로 임포트하면 Import Settings의 Clips 섹션에서 분할할 수 있습니다. 여기에서 각 개별 애니메이션의 시작 키프레임과 종료 키프레임을 정의하면 Unity는 이를 사용할 수 있도록 분리합니다.

1. Animations 폴더 안에 중첩된 Imported Animations 폴더로 이동하여 Dance_x3를 선택합니다.

2. 인스펙터에서 Rig 탭을 선택하여 릭에 대한 임포트 설정을 표시합니다.

기본적으로 휴머노이드 애니메이션 시스템과 호환되는 릭이라도 Animation Type이 Generic으로 설정되어 있습니다. 제네릭 릭은 다른 휴머노이드 릭과 애니메이션을 공유할 수 없기 때문에, 표준과 다른 뼈대 구조를 가진 커스텀 캐릭터로 작업할 때 유용합니다. 반면 Humanoid 릭 유형은 표준 뼈대 구조를 가진 휴머노이드 캐릭터에 적합하며, Unity의 휴머노이드 애니메이션 시스템에서 제공하는 애니메이션 리타기팅 및 공유 기능을 활용할 수 있습니다.

3. Animation Type 드롭다운을 선택하고 목록에서 Humanoid를 선택합니다.

4. Apply를 선택합니다.

이제 애니메이션이 휴머노이드 애니메이션 시스템에서 사용할 수 있도록 설정되었습니다.

참고: Legacy Animation Type도 제공될 수 있지만, 이는 Unity의 이전 애니메이션 시스템과 관련된 옵션입니다. 이 기능은 지원 중단 예정으로 간주되며 더 이상 적극적으로 개발되지 않고 새 프로젝트에도 권장되지 않습니다.

5. 첫 번째 애니메이션 클립 설정

임포트할 애니메이션을 살펴보겠습니다.

1. Dance_x3 fbx 파일이 선택된 상태에서 인스펙터에서Animation 탭을 선택하여 애니메이션 임포트 설정을 표시합니다.

2. 인스펙터 하단에서 플레이 버튼을 선택하여 애니메이션을 미리 봅니다.

임포트한 애니메이션 세트에는 하나의 애니메이션 클립에 3개의 개별 댄스 시퀀스가 포함되어 있습니다. 현재는 이러한 애니메이션에 개별적으로 액세스할 수 없으므로, 다음으로 이를 수정하겠습니다. 애니메이션 임포트 설정의 위쪽 절반에는 개별 애니메이션 클립을 정의할 수 있는 Clips 섹션이 있습니다.

3. Clips 섹션에서 추가(+) 버튼을 두 번 선택하여 기존 애니메이션 클립을 복제합니다.

4. Dance_x3 레이블이 붙은 첫 번째 클립을 선택하여 Clips 아래의 클립 편집 섹션에서 선택하고, Dance_x3 클립의 이름을 Dance_01로 변경합니다.

이 클립은 첫 번째 댄스 시퀀스에 사용되므로, 해당 특정 동작의 시작 프레임과 종료 프레임을 정의해야 합니다.

5. 인스펙터 하단의 미리보기 창에서 애니메이션을 스크럽하며 애니메이션이 시작되고 끝나는 위치를 기록해 둡니다.

애니메이션 클립 이름을 변경하는 섹션 바로 아래에는 시작 프레임과 종료 프레임에 대한 파라미터가 있는 타임라인이 있습니다. 이 클립의 첫 번째 애니메이션이므로 시작 프레임은 1로 유지해도 되지만 종료 프레임은 정의해야 합니다.

6. 종료 프레임 파라미터에 150을 입력합니다.

7. 애니메이션을 미리 보고 자연스럽게 반복되는지 확인한 후, 필요한 경우 종료 프레임을 조정합니다.

미리보기에서는 애니메이션이 반복되지만, 실제 경험에서는 현재 한 번만 재생되도록 설정되어 있습니다.

8. 애니메이션이 반복되도록 Loop Time을 활성화합니다.

지금 애니메이션을 미리 보면 캐릭터가 춤추고 있는 지면이 움직이는 것처럼 보입니다. 이는 이 애니메이션 시퀀스에 루트 모션이 연결되어 있음을 나타냅니다. 그대로 두면 애니메이터에 적용했을 때 캐릭터가 애니메이션화되면서 바닥 위를 미끄러지는 것처럼 보입니다. 루트 모션은 이 프로젝트에서 다루지 않을 고급 주제이므로, 데이터를 클립에 베이크하여 이 애니메이션 클립에서 사용되지 않도록 간단히 비활성화할 수 있습니다. 그러면 미끄러지는 효과가 제거됩니다.

9. Root Transform Rotation, Root Transform Position (Y), Root Transform Position (XZ)에서 Bake into Pose 옵션을 활성화합니다.

이제 미리보기의 지면이 고정됩니다.

6. 나머지 2개 클립 설정

첫 번째 클립에 대해 방금 완료한 프로세스를 이제 나머지 두 클립에 반복해야 합니다.

1. Clips 목록에서 Take 001이라는 이름의 두 번째 클립을 선택하고 이름을 Dance_02로 변경합니다.

2. Start 프레임을 151로 설정합니다.

3. End 프레임을 260으로 설정합니다.

4. Loop Time을 활성화합니다.

5. Root Transform Rotation, Root Transform Position (Y), Root Transform Position (XZ)에서 Bake into Pose 옵션을 활성화합니다.

6. Clips 목록에서 마지막 클립을 선택하고 이름을 Dance_03으로 변경합니다.

7. Start 프레임을 261로 설정하고 End 프레임은 350으로 둡니다.

8. Loop Time을 활성화합니다.

9. Root Transform Rotation, Root Transform Position (Y), Root Transform Position (XZ)에서 Bake into Pose 옵션을 활성화합니다.

10. 인스펙터의 맨 아래까지 스크롤한 다음 Apply를 선택하여 모든 임포트 변경 사항을 저장합니다.

7. 애니메이션 컨트롤러에 새 클립 추가

이제 새 클립 설정이 모두 완료되었으며, 기존 Animator 컨트롤러에 추가할 수 있습니다.

1. Animations 폴더에서 Shared_Controller 애니메이션 컨트롤러를 찾아 더블 클릭하여 애니메이터에서 엽니다.

2. 프로젝트 창과 애니메이터에 동시에 액세스할 수 있도록 애니메이터를 씬 뷰 바로 아래에 고정합니다.


3. Imported Animations 폴더에서 Dance_x3 애니메이션을 찾아 확장하여 3개의 새 애니메이션 클립을 표시합니다.


4. 3개의 댄스 클립을 애니메이터에서 Any State 노드의 오른쪽으로 드래그합니다.

애니메이션 클립을 애니메이터로 드래그하면 해당 클립에서 애니메이션 상태가 자동으로 생성됩니다.

씬의 각 캐릭터에는 DanceParty라는 스크립트가 연결되어 있습니다. Visual Studio에서 검토하려면 더블 클릭하여 여세요. 스크립트의 기능은 간단합니다. 애플리케이션이 실행되면 스크립트가 각 캐릭터의 애니메이터에 액세스하여 사용자의 키보드 입력을 감지하기 시작합니다. 사용자가 Q, W 또는 E를 누르면 스크립트가 각각 Dance_01, Dance_02 또는 Dance_03이라는 Trigger 파라미터를 호출합니다.

애니메이터에서 이러한 파라미터를 생성하고 새 애니메이션 클립에 연결해 보겠습니다.

5. 애니메이터의 Parameters 탭에서 추가(+) 버튼을 선택한 다음 목록에서 Trigger를 선택합니다.

6. 새 Trigger의 이름을 Dance_01로 지정합니다. 철자와 대소문자가 여기에 표시된 것과 정확히 일치해야 하며, 그렇지 않으면 스크립트가 작동하지 않습니다.

7. Trigger를 2개 더 생성하고 이름을 Dance_02와 Dance_03으로 지정합니다.

사용자가 키보드에서 Q, W 또는 E 키를 누르면 캐릭터는 하던 일을 멈추고 춤을 춰야 합니다. 이 동작은 언제든 발생해야 하므로 Any State 노드를 사용합니다. Any State 노드는 상태 머신의 모든 전환을 인터럽트할 수 있으며, 연결된 애니메이션을 무엇이든 호출합니다.

8. Any State 노드를 오른쪽 클릭하고 Make Transition을 선택한 다음 Dance_01 노드에 연결합니다.

9. 새 전환을 선택하고 인스펙터의 Conditions 섹션에서 + 버튼을 클릭한 다음 목록에서 Dance_01을 선택합니다.

10. Dance_01 노드를 오른쪽 클릭하고 Make Transition을 선택한 다음 Exit 노드에 연결합니다.

11. Dance_02와 Dance_03에 대해 이 프로세스를 반복합니다.

12. 게임을 플레이 테스트하고 Q, W, E를 누릅니다.

키보드에서 Q, W 또는 E를 누를 때마다 캐릭터가 즉시 해당 댄스로 전환하고, 동작을 완료한 후 다시 대기 상태로 돌아갑니다.

8. 살펴보기: 댄스 파티

신나는 댄스 파티를 계속 이어 가겠습니다. 캐릭터에 연결된 DanceParty 스크립트는 실제로 3개의 애니메이션 시퀀스를 추가로 사용하도록 설정되어 있으므로, Animator 컨트롤러에 개성을 더할 수 있습니다.

  • 댄스 파티에 사용할 새로운 댄스 애니메이션 시퀀스 3개를 찾거나 만드세요. 어디에서 찾아야 할지 잘 모르겠다면, Unity 에셋 스토어에서 많은 리소스를 활용할 수 있습니다.
  • 애니메이션을 Unity로 임포트하고 필요에 따라 설정하세요.
  • Animator 컨트롤러에 애니메이션 클립을 추가하세요.
  • 새 Trigger 파라미터 3개를 생성하세요. Dance_04, Dance_05, Dance_06입니다. 이 파라미터는 R, T, Y 키에 해당합니다.
  • 새 애니메이션 클립으로 이어지는 전환을 만들고, 대기 상태 애니메이션으로 돌아갈 수 있도록 Exit 노드로 전환해야 한다는 점을 기억하세요.

Complete this Tutorial