Version: 2020.1
역운동학(IK)
튜토리얼: 고정 휴머노이드 애니메이션의 루트 모션 스크립팅

루트 모션 - 작동 방식

바디 트랜스폼

바디 트랜스폼은 캐릭터의 질량 중심입니다. 메카님의 리타게팅 엔진에서 사용되고 가장 안정적인 변위 모델을 제공합니다. 바디 오리엔테이션은 아바타 T-포즈를 기준으로 한 하위 및 상위 오리엔테이션의 평균입니다.

바디 트랜스폼과 오리엔테이션은 (아바타에 설정한 근육 정의를 사용하여) Animation Clip 에 저장됩니다. 월드 공간 커브 중에는 이 두 개만 Animation Clip 에 저장됩니다. 근육 커브와 IK 골(손과 발) 등 나머지는 모두 바디 변환에 따라 저장됩니다.

루트 트랜스폼

루트 트랜스폼은 바디 변환을 Y 평면 위에 투사한 것으로, 런타임 시점에 계산됩니다. 모든 프레임에서 루트 변환의 변화가 계산됩니다. 그런 다음 이 변환의 변화를 게임 오브젝트에 적용하여 오브젝트를 움직이게 합니다.

캐릭터 아래의 동그라미는 루트 트랜스폼을 나타냅니다.
캐릭터 아래의 동그라미는 루트 트랜스폼을 나타냅니다.

애니메이션 클립 인스펙터

Root Transform Rotation, Root Transform Position (Y)Root Transform Position (XZ) 애니메이션 클립 에디터 설정을 통해 바디 트랜스폼에서 투사되는 루트 트랜스폼을 제어할 수 있습니다. 설정에 따라 바디 트랜스폼의 일부가 루트 트랜스폼으로 바뀔 수 있습니다. 예를 들어, 모션 Y 포지션이 루트 모션(궤도)의 일부가 되도록 하거나 포즈(바디 트랜스폼)의 일부가 되도록 할 수 있습니다. 후자를 Baked into Pose 라고 합니다.

루트 트랜스폼 회전

Bake into Pose: 오리엔테이션이 바디 트랜스폼(또는 포즈)으로 계속 유지됩니다. 루트 오리엔테이션은 상수가 되고 델타 오리엔테이션은 아이덴티티가 됩니다. 따라서 게임 오브젝트가 AnimationClip 에 의해 전혀 회전되지 않습니다.

시작 및 종료 루트 오리엔테이션이 비슷한 AnimationClip만 이 옵션을 사용해야 합니다. UI에 AnimationClip 이 적절한 후보임을 알리는 녹색 광원이 나타납니다. 적절한 후보는 직진 보행 또는 달리기입니다.

Based Upon: 클립의 오리엔테이션을 설정할 수 있습니다. Body Orientation 을 사용하면 클립의 오리엔테이션이 바디의 전방 벡터를 따릅니다. 이 기본 설정은 대부분의 모션 캡처(Mocap) 데이터(걷기, 달리기, 점프 등)에 효과적이지만, 모션이 바디의 전방 벡터에 대해 수직인 포격과 같은 모션에 사용하면 장애가 발생합니다. 이러한 경우에는 Offset 설정을 사용하여 오리엔테이션을 수동으로 조정할 수 있습니다. 마지막으로, 임포트된 클립에서 찾은 작성된 오프셋을 자동으로 추가하는 Original 이 있습니다. 일반적으로 아티스트가 설정한 오리엔테이션을 유지하기 위해 키프레임된 데이터와 함께 사용됩니다.

Offset: Based Upon 에서 해당 옵션이 선택된 경우 오프셋을 입력하는 데 사용합니다.

루트 트랜스폼 포지션(Y)

루트 트랜스폼 회전에서 설명한 것과 동일한 개념을 사용합니다.

Bake Into Pose: 모션의 Y 컴포넌트는 바디 트랜스폼(포즈)에 계속 남아 있습니다. 루트 변환의 Y 컴포넌트는 상수가 되고 델타 루트 포지션 Y는 0이 됩니다. 따라서 이 클립으로 게임 오브젝트의 높이가 변경되지 않습니다. 이 경우에도 클립이 Y 모션을 포즈로 베이크하는 데 적절한 후보임을 알리는 녹색 광원이 나타납니다.

대부분의 AnimationClip 은 이 설정을 활성화합니다. 위 또는 아래로의 점프처럼 GameObject 의 높이를 바꾸는 클립에 대해서만 이 설정을 꺼야 합니다.

참고: Animator.gravityWeight는 Bake Into Pose 포지션 Y 기반입니다. 활성화하면 gravityWeight = 1이고, 비활성화하면 gravityWeight = 0입니다. gravityWeight 는 상태 간 전환 시에 클립에 대해 블렌드됩니다.

Based Upon: Root Transform Rotation 과 유사한 방법으로 Original 또는 Mass Center (Body) 중에서 선택할 수 있습니다. 높이를 변경하는 AnimationClip 에 매우 편리한 Feet 옵션도 있습니다(Bake Into Pose 비활성화됨). Feet 를 사용하면 루트 변환 포지션 Y가 모든 프레임에서 가장 낮은 발 Y와 일치합니다. 따라서 블렌딩 포인트가 항상 발 주위에 있으므로 블렌딩 또는 전환 시에 플로팅 문제가 발생하지 않습니다.

Offset: Offset 설정을 사용하여 Root Transform Rotation 과 유사한 방법으로 AnimationClip 높이를 수동으로 조정할 수 있습니다.

루트 트랜스폼 포지션(XZ)

이 경우에도 Root Transform RotationRoot Motion Position (Y) 에서 설명한 것과 동일한 개념이 사용됩니다.

Bake into Pose 는 일반적으로 델타 포지션(XY)을 0으로 강제 설정할 “유휴” 상태에 사용합니다. 그러면 여러 차례 평가 후에 남는 작은 델타의 누적이 중단됩니다. 키프레임된 클립에 대해 Based Upon Original 과 함께 사용하여 아티스트가 설정한 작성된 포지션을 강제 설정할 수도 있습니다.

루프 포즈

루프 포즈는(블렌드 트리 또는 전환의 포즈 블렌딩처럼) 루트 트랜스폼의 레퍼렌셜에서 발생합니다. 루트 트랜스폼이 계산되면 포즈가 이 트랜스폼과 연관됩니다. 시작 및 중지 프레임 사이의 상대 포즈 차이가 계산되고 0%에서 100%까지의 전체 클립 범위에 걸쳐 분포됩니다.

일반 루트 모션 및 루프 포즈

휴머노이드 루트 모션과 근본적으로 동일한 방식으로 작동하지만 바디 트랜스폼을 사용하여 루트 트랜스폼을 계산/예측하는 대신 Root Node 에서 설정한 트랜스폼을 사용합니다. 포즈(루트 모션 골격 아래에서 변환되는 모든 골격)는 루트 트랜스폼에 대해 상대적입니다.

역운동학(IK)
튜토리얼: 고정 휴머노이드 애니메이션의 루트 모션 스크립팅