바디 트랜스폼은 캐릭터의 질량 중심입니다. 메카님의 리타게팅 엔진에서 사용되고 가장 안정적인 변위 모델을 제공합니다. 바디 오리엔테이션은 아바타 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 에서 해당 옵션이 선택된 경우 오프셋을 입력하는 데 사용합니다.
루트 트랜스폼 회전에서 설명한 것과 동일한 개념을 사용합니다.
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 높이를 수동으로 조정할 수 있습니다.
이 경우에도 Root Transform Rotation 및 Root Motion Position (Y) 에서 설명한 것과 동일한 개념이 사용됩니다.
Bake into Pose 는 일반적으로 델타 포지션(XY)을 0으로 강제 설정할 “유휴” 상태에 사용합니다. 그러면 여러 차례 평가 후에 남는 작은 델타의 누적이 중단됩니다. 키프레임된 클립에 대해 Based Upon Original 과 함께 사용하여 아티스트가 설정한 작성된 포지션을 강제 설정할 수도 있습니다.
루프 포즈는(블렌드 트리 또는 전환의 포즈 블렌딩처럼) 루트 트랜스폼의 레퍼렌셜에서 발생합니다. 루트 트랜스폼이 계산되면 포즈가 이 트랜스폼과 연관됩니다. 시작 및 중지 프레임 사이의 상대 포즈 차이가 계산되고 0%에서 100%까지의 전체 클립 범위에 걸쳐 분포됩니다.
휴머노이드 루트 모션과 근본적으로 동일한 방식으로 작동하지만 바디 트랜스폼을 사용하여 루트 트랜스폼을 계산/예측하는 대신 Root Node 에서 설정한 트랜스폼을 사용합니다. 포즈(루트 모션 골격 아래에서 변환되는 모든 골격)는 루트 트랜스폼에 대해 상대적입니다.