애니메이션 제어기는 다양한 모션 상태, 이 상태를 트리거하는 이벤트, 그리고 상태 간 전환이 이루어지는 방식을 정의하여 캐릭터를 위한 레이어드 애니메이션 시스템을 설정할 수 있게 해주는 메커니즘입니다. 애니메이션 제어기는 애니메이션 속도 및 믹싱을 제어하는 변수도 제공합니다.
애니메이션 제어기를 사용하여 복합적인 애니메이션 동작을 구현할 수 있습니다. 애니메이션 제어기는 Anim Controller Editor를 사용하여 생성한 다음 Unit Editor를 사용하여 적용합니다.
애니메이션 제어기는 골격과 연관되고, 이 골격을 사용하는 모든 유닛이 이 애니메이션 제어기를 사용할 수 있습니다.
애니메이션 제어기를 생성하려면 Asset Browser에서 캐릭터 유닛의 골격을 마우스 오른쪽 버튼으로 클릭한 다음, 팝업 메뉴에서 Create Animation Controller를 선택합니다.
기존 유닛(동일한 골격을 애니메이션 제어기로 사용하는 유닛)에 애니메이션 제어기를 설정하려면 Asset Browser에서 유닛을 선택하고 Property Editor의 드롭다운에서 애니메이션 제어기를 선택합니다.
이 섹션에서는 애니메이션 제어기를 구성하는 다양한 구성요소에 대한 간략한 개요를 제공합니다.
상태는 캐릭터에게 발생할 수 있는 동작(예: 달리기)입니다. 상태는 특정 애니메이션(달리기 애니메이션)과 연관되고, 이벤트가 진행되면서 다른 상태(예: 걷기 및 쉬기)로 전환될 수 있습니다. 다양한 상태 유형에 대한 자세한 내용은 애니메이션 제어기 상태를 참조하십시오.
Anim Controller Editor의 Tree View 및 Node Graph에서 상태를 그룹으로 끌어다 놓으면 상태를 계층 구조로 정리할 수 있습니다. 예를 들면, 여러 상태를 선택하고 한 그룹 상태로 끌어다 놓음으로써 이 상태들을 연관된 모든 전환과 함께 그 그룹으로 이동할 수 있습니다.
애니메이션 제어기는 수많은 레이어로 조직화되고, 각 레이어는 정확히 하나의 상태가 활성화되어 있는 상태 머신으로 구성됩니다.
여러 레이어가 있는 경우 최상위 레이어의 애니메이션이 하위 레이어의 애니메이션을 오버라이드합니다. 달리기 애니메이션이 기본 레이어로 재생되는 동안 왼쪽 보기 애니메이션이 상위 레이어로 재생되는 경우가 있을 수 있습니다. 그러면 상위 레이어의 눈 애니메이션이 하위 수준의 눈 움직임을 오버라이드합니다. 이 방법을 사용하면 여러 레이어를 생성하여 다양한 신체 부위를 제어할 수 있습니다.
Anim Controller Editor의 Tree View 및 Node Graph에서 상태를 레이어로 끌어다 놓으면 상태를 계층 구조로 정리할 수 있습니다. 예를 들면, 한 레이어의 상태 선택 항목을 드래그하여 이 상태들을 연관된 모든 전환과 함께 레이어로 이동할 수 있습니다.
애니메이션 제어기 레이어도 참조하십시오.
Lua 스크립트 또는 흐름에서 애니메이션 제어기로 전송될 수 있는 명명된 동작입니다. 애니메이션 제어기가 애니메이션 이벤트를 수신하면 한 상태에서 다른 상태로 전환될 수 있습니다. (애니메이션 이벤트는 이름으로 식별되며, 애니메이션 상태 간 전환을 유발합니다.) 달리기 상태에서 점프 상태로 전환되는 예를 생각해볼 수 있습니다. 애니메이션용 스크립트 인터페이스도 참조하십시오.
Anim Controller 편집기 트리 뷰에서 Anim Events를 마우스 오른쪽 버튼으로 클릭하고 새 애니메이션 이벤트를 생성합니다.
Anim Controller Editor의 미리보기 컨트롤을 사용하여 애니메이션 이벤트를 테스트할 수도 있습니다.
변수는 수치 값의 형식을 띨 수 있는 명명된 항목입니다. 변수는 Lua 및 흐름을 통해 런타임 시 변경될 수 있고, running_speed 같이 애니메이션 동작을 제어하기 위한 표현식에 사용됩니다. 애니메이션 제어기는 이 변수를 기준으로 애니메이션을 어떻게 믹싱할지 결정할 수 있습니다. 예를 들어, running_speed 변수를 기준으로 한 걷기와 달리기 애니메이션 믹스를 재생할 수도 있고, 이 변수를 사용하여 애니메이션 재생 속도를 제어할 수도 있습니다.
표현식은 숫자와 상태 머신 변수를 사용하는 간단한 수학식을 말하는 것으로 다음과 같은 예가 모두 표현식입니다.
혼합 세트 마스크는 애니메이션 제어기의 각 골격에 대한 가중치(0-100%)를 제공합니다. 혼합 세트 마스크를 사용하면 상위 레이어 애니메이션에 의해 오버라이드되는 골격 포즈를 결정할 수 있습니다. 예를 들면, 눈 움직임을 제어하는 레이어가 눈 골격만 포함된 혼합 세트 마스크를 사용하는 경우가 있습니다.
각 상태마다 혼합 세트 마스크를 지정할 수 있습니다. (혼합 세트 마스크의 기본 상태는 모든 골격입니다.) 그래서 상태마다 어느 골격을 오버라이드할 것인지에 대해 서로 다른 결정을 할 수 있습니다. 예를 들어, 한 상태로는 눈만 제어하고, 다른 상태로는 전체 몸을 제어할 수 있습니다.
골격에 대한 혼합 세트 마스크는 Skeleton Editor를 사용하여 각 골격의 가중치를 설정하여 정의합니다. 목록의 여러 골격을 선택하여 가중치를 동시에 변경할 수 있다는 점도 참조하십시오.
제약 조건 대상은 변수와 매우 비슷합니다. 하지만 수치 값을 지정하는 대신 Lua 스크립트를 통해 설정할 수 있는 3D 공간에서 위치를 지정합니다.
제약 조건 대상은 애니메이션 제어기의 제약 조건에 대한 입력으로 사용됩니다.
제약 조건 대상은 애니메이션 미리보기에 잡고 움직일 수 있는 오브젝트로 표시됩니다.