애니메이션 클립 은 Unity에서 애니메이션의 가장 작은 구성 요소입니다. RunLeft, Jump, Crawl 등 각각의 독립적인 모션을 뜻하며 다양한 방법으로 조작하고 통합하여 생명력 있는 애니메이션을 얻을 수 있습니다(애니메이션 상태 머신, Animator 컨트롤러, 블렌드 트리 참조). 임포트한 FBX 데이터에서 애니메이션 클립을 선택할 수 있습니다.
애니메이션 클립이 포함된 모델을 클릭하면 다음의 프로퍼티가 나타납니다.
인스펙터 창의 Animation 탭에는 다음과 같은 5개의 영역이 있습니다.
(A) 에셋별 프로퍼티. 이 설정으로 전체 에셋의 임포트 옵션을 정의합니다.
(B) 클립 선택 목록. 이 목록에서 아무 항목이나 선택하여 해당 프로퍼티를 표시하고 애니메이션을 미리 볼 수 있습니다. 또한 새 클립을 정의할 수도 있습니다.
(C) 클립별 프로퍼티. 이 설정으로 선택한 애니메이션 클립 에 대한 임포트 옵션을 정의합니다.
(D) 클립 프로퍼티. 이 설정으로 모든 애니메이션 클립에 대한 임포트 옵션을 정의합니다.
(E) 애니메이션 미리 보기. 여기에서 애니메이션을 재생하고 특정 프레임을 선택할 수 있습니다.
이 프로퍼티는 에셋 내에서 정의되는 모든 애니메이션 클립과 제약 사항에 적용됩니다.
| 프로퍼티: | 기능: | |
|---|---|---|
| Import Constraints | 이 에셋에서 제약을 임포트합니다. | |
| Import Animation | 이 에셋에서 애니메이션을 임포트합니다. 참고: 비활성화하면 페이지의 다른 모든 옵션이 숨겨지고 애니메이션이 임포트되지 않습니다. |
|
| Bake Animations | IK나 시뮬레이션을 사용하여 생성된 애니메이션을 베이크하여 키네마틱 키프레임을 포워드합니다. Autodesk® Maya®, Autodesk® 3ds Max®, Cinema 4D 파일에만 사용할 수 있습니다. |
|
| Resample Curves | 애니메이션 커브를 쿼터니언 값으로 리샘플링하고 애니메이션의 모든 프레임에 새로운 쿼터니언 키프레임을 생성합니다. 이 옵션은 임포트 파일에 오일러 커브가 포함된 경우에만 표시됩니다. 이 옵션은 기본적으로 활성화되어 있습니다. 이 옵션을 비활성화하면 애니메이션 커브가 원래 작성된 그대로 유지됩니다. 원본 애니메이션과 비교했을 때 리샘플링된 애니메이션에 보간 문제가 있는 경우에만 이 옵션을 비활성화해야 합니다. |
|
| Anim. Compression | 애니메이션을 임포트할 때 사용하는 압축 유형입니다. | |
| Off | 애니메이션 압축을 비활성화합니다. 즉, 임포트 시 Unity가 키프레임 수를 줄이지 않습니다. 애니메이션 압축을 비활성화하면 애니메이션의 정밀도가 가장 높지만 성능이 느려지고 파일 및 런타임 메모리 크기가 커집니다. 일반적으로는 이 옵션을 사용하지 않는 것이 좋습니다. 정밀도가 높은 애니메이션이 필요한 경우 키프레임 감소를 활성화하고 허용되는 Animation Compression Error 값을 낮춰야 합니다. | |
| Keyframe Reduction | 임포트 시 중복되는 키프레임 수를 줄입니다. 이 옵션을 활성화하면 인스펙터에 Animation Compression Errors 옵션이 표시됩니다. 이는 파일 크기(런타임 메모리)와 커브 평가 방식 모두에 영향을 줍니다. Legacy, Generic, Humanoid 애니메이션 유형 릭에 적용됩니다. |
|
| Keyframe Reduction and Compression | 임포트할 때 키프레임을 줄이고 파일에 애니메이션을 저장할 때 키프레임을 압축합니다. 이는 파일 크기에만 영향을 줍니다. 런타임 메모리 크기는 Keyframe Reduction 과 동일합니다. 이 옵션을 활성화하면 인스펙터에 Animation Compression Errors 옵션이 표시됩니다. Legacy 애니메이션 유형 릭에만 해당합니다. |
|
| Optimal | Unity가 압축 방식을 키프레임 감소 또는 고밀도 포맷 중에서 결정합니다. 이 옵션을 활성화하면 인스펙터에 Animation Compression Errors 옵션이 표시됩니다. Generic 및 Humanoid 애니메이션 유형 릭에만 해당합니다. |
|
| Animation Compression Errors | Keyframe Reduction 또는 Optimal 압축이 활성화된 경우에만 사용할 수 있습니다. | |
| Rotation Error | 회전 커브 압축에 대한 오류 허용치(도 단위의 각도)를 설정합니다. Unity는 이를 사용하여 회전 커브의 키를 제거할 수 있는지 결정합니다. 원래 회전 값과 감소된 값 사이의 최소 각도를 나타냅니다. Angle(value, reduced) < RotationError
|
|
| Position Error | 위치 커브 압축에 대한 오류 허용치(백분율)를 설정합니다. Unity는 이를 사용하여 위치 커브의 키를 제거할 수 있는지 결정합니다. 자세한 내용은 위치 및 스케일 커브의 키 감소에 대한 오류 허용치 설정을 참조하십시오. | |
| Scale Error | 스케일 커브 압축에 대한 오류 허용치(백분율)를 설정합니다. Unity는 이를 사용하여 스케일 커브의 키를 제거할 수 있는지 결정합니다. 자세한 내용은 위치 및 스케일 커브의 키 감소에 대한 오류 허용치 설정을 참조하십시오. | |
| Animated Custom Properties | 커스텀 사용자 프로퍼티로 지정한 FBX 프로퍼티를 임포트합니다. Unity는 FBX 파일을 임포트할 때 일부 프로퍼티(예: 이동, 회전, 스케일, 가시성)만 지원합니다. 그러나 extraUserProperties 멤버를 통해 임포터 스크립트에서 이름을 지정하여 사용자 프로퍼티 같은 표준 FBX 프로퍼티를 처리할 수 있습니다. 임포트 중에 Unity는 이름이 지정된 모든 프로퍼티를 ‘실제’ 사용자 프로퍼티처럼 에셋 포스트 프로세서에 전달합니다. |
|
Unity가 애니메이션 압축 전략의 일환으로 위치 또는 스케일 커브의 키를 제거할지 여부를 결정할 수 있도록 오류 허용치 백분율을 설정합니다.
Anim. Compression 프로퍼티를 ‘Keyframe Reduction’ 또는 ‘Optimal’로 설정하면 Unity는 원본 커브를 특정 키프레임 제거 후의 커브와 비교한 후 다음 테스트를 적용합니다.
OriginalValue - ReducedValue > OriginalValue * percentageOfError
원본 값과 감소된 값 사이의 델타가 원본 값에 오류 허용치 백분율을 곱한 값보다 작으면 Unity는 키프레임을 제거합니다.
Unity는 세 가지 커브 컴포넌트 간의 거리를 비교하며(즉, distance(x,y,z)를 비교) 컴포넌트별(distance(x), distance(y), distance(z))로도 비교합니다.
이 예제는 Unity가 오류 허용치 10%를 사용하여 y축의 감소를 평가하는 방식을 보여 줍니다.
키프레임 A의 값은 11.2입니다.
키프레임 B의 값은 11.1입니다.
최종적으로 감소된 커브의 모습은 다음과 같습니다.
키프레임 A는 감소하지 않으며 그 이유는 다음과 같습니다.
D = 11.2 - 10 = 1.2입니다.E = 10% * 11.2 = 1.12입니다.
키프레임 B가 감소하며 11.1 - 10 < 10% * 11.1이기 때문입니다.
D = 11.1 - 10 = 1.11입니다.E = 10% * 11.1 = 1.11입니다.이 방법은 약간의 차이가 있는 큰 값을 사용할 때 제한이 있습니다. 씬을 1000 단위로 이동하면 애니메이션이 기본적으로 동일하지만 0에서 멀리 떨어져 있습니다.
이 경우 두 키프레임이 모두 감소합니다.
키프레임 A가 감소하며 그 이유는 다음과 같습니다.
D = 1011.2 - 1010 = 1.2입니다.E = 10% * 1011.2 = 101.12입니다.
키프레임 B가 감소하며 11.1 - 10 < 10% * 11.1이기 때문입니다.
D = 11.1 - 10 = 1.11입니다.E = 10% * 1011.1 = 101.11입니다.큰 값은 키프레임을 감소된 커브로 유지하기 위해 원본 값과 감소된 값 간에 훨씬 더 큰 차이를 필요로 합니다. 키프레임 A는 값이 1100이고 삭제되었지만, 키프레임 B는 값이 1112이고 유지되었습니다.
Animation 탭의 이 영역에서 다음과 같은 작업을 수행할 수 있습니다.
+) 버튼을 사용하여 이 파일에 대한 새 클립을 생성합니다.-) 버튼을 사용하여 선택한 클립 정의를 제거합니다.임포트한 클립의 프로퍼티를 수동으로 변경하면 소스 에셋이 변경될 때 Unity는 새로운 애니메이션 클립을 임포트하지 않습니다. 예를 들어 새 클립을 생성하거나 Animation 탭에서 클립 타이밍을 변경하면 Unity 외부에서 FBX 파일에 클립을 추가해도 클립 목록이 업데이트되지 않습니다. 새 애니메이션 클립과 변경된 애니메이션 클립을 보려면 클립 목록에 새 소스 테이크를 추가해야 합니다.
Animation 탭의 이 영역에 다음과 같은 기능이 표시됩니다.
(A) 선택한 클립의 편집 가능한 이름
(B) 애니메이션 클립 타임라인
(C) 루핑, 루트 모션 추출, 커브, 이벤트, 아바타 마스크를 제어하는 클립 프로퍼티
이 에셋 내에서 정의된 각 애니메이션 클립에 이러한 프로퍼티를 별도로 설정할 수 있습니다.
| 프로퍼티: | 기능: | |
|---|---|---|
| 영역 A | ||
![]() 테이크 이름 |
소스 파일에 있는 소스 테이크의 이름입니다. 소스 파일에는 Motionbuilder 또는 Autodesk® Maya® 같은 외부 3D 애플리케이션에서 생성되는 소스 테이크 세트가 포함되어 있습니다. 소스 테이크를 개별 애니메이션 클립으로 임포트할 수 있습니다. 프레임의 하위 집합에서 애니메이션 클립을 생성할 수도 있습니다. |
|
| 영역 B | ||
![]() |
애니메이션 타임라인의 시작 및 종료 표시기를 드래그하여 각 클립에 대한 프레임 범위를 정의할 수 있습니다. 클립을 생성하는 것은 기본적으로 애니메이션 세그먼트의 시작과 끝 지점을 정의하는 것입니다. 루핑 클립을 정의하려면 첫 번째 프레임과 마지막 프레임이 최대한 일치하도록 시작 및 끝 지점을 자릅니다. 타임라인을 확대하거나 스크롤하여 더 정확하게 조정할 수도 있습니다. |
|
| Start | 클립의 시작 프레임입니다. | |
| End | 클립의 종료 프레임입니다. | |
| 영역 C | ||
| Loop Time | 애니메이션 클립을 끝까지 재생하고, 끝에 도달하면 다시 재생을 시작합니다. | |
| Loop Pose | 모션을 자연스럽게 반복합니다. | |
| Cycle Offset | 반복 재생 애니메이션의 사이클 오프셋입니다. 애니메이션이 다른 시간에 시작하는 경우에 설정합니다. | |
| Root Transform Rotation | ||
| Bake into Pose | 루트 회전을 뼈대의 움직임에 베이크합니다. 루트 모션으로 저장하려면 비활성화합니다. | |
| Based Upon | 기본 루트 회전입니다. | |
| Original | 소스 파일의 원래 회전을 유지합니다. | |
| Root Node Rotation | 루트 노드의 회전을 사용합니다. Generic 애니메이션 유형에만 사용할 수 있습니다. |
|
| Body Orientation | 상체를 앞으로 향하게 합니다. Humanoid 애니메이션 유형에만 사용할 수 있습니다. |
|
| Offset | 루트 회전에 대한 오프셋입니다(각도). | |
| Root Transform Position (Y) | ||
| Bake into Pose | 수직 루트 모션을 뼈대의 움직임에 베이크합니다. 루트 모션으로 저장하려면 비활성화합니다. | |
| Based Upon (at Start) | 기본 수직 루트 위치입니다. | |
| Original | 소스 파일의 수직 위치를 유지합니다. | |
| Root Node Position | 수직 루트 위치를 사용합니다. Generic 애니메이션 유형에만 사용할 수 있습니다. |
|
| Center of Mass | 루트 트랜스폼의 위치에 질량의 중심을 맞춰 줍니다. Humanoid 애니메이션 유형에만 사용할 수 있습니다. |
|
| Feet | 발을 루트 트랜스폼의 위치에 맞춰 줍니다. Humanoid 애니메이션 유형에만 사용할 수 있습니다. |
|
| Offset | 수직 루트 위치에 대한 오프셋입니다. | |
| Root Transform Position (XZ) | ||
| Bake into Pose | 수평 루트 모션을 뼈대의 움직임에 베이크합니다. 루트 모션으로 저장하려면 비활성화합니다. | |
| Based Upon | 기본 수평 루트 위치입니다. | |
| Original | 소스 파일의 수평 위치를 유지합니다. | |
| Root Node Position | 수평 루트 트랜스폼 위치를 사용합니다. Generic 애니메이션 유형에만 사용할 수 있습니다. |
|
| Center of Mass | 발을 루트 트랜스폼의 위치에 맞춰 줍니다. Humanoid 애니메이션 유형에만 사용할 수 있습니다. |
|
| Offset | 수평 루트 위치에 대한 오프셋입니다. | |
| Mirror | 이 클립에서 왼쪽과 오른쪽을 미러링합니다. 애니메이션 유형이 Humanoid 로 설정된 경우에만 표시됩니다. |
|
| Additive Reference Pose | 활성화하면 추가 애니메이션 레이어의 기본으로 사용되는 레퍼런스 포즈의 프레임을 설정할 수 있습니다. 타임라인 에디터에 파란색 마커가 나타납니다.
|
|
| Pose Frame | 레퍼런스 포즈로 사용할 프레임 번호를 입력합니다. 타임라인에서 파란색 마커를 드래그하여 이 값을 업데이트할 수도 있습니다. Additive Reference Pose 가 활성화된 경우에만 사용할 수 있습니다. |
|
| Curves | 이 섹션을 확장하면 이 애니메이션 클립의 애니메이션 커브를 관리할 수 있습니다. | |
| Events | 이 섹션을 확장하면 이 애니메이션 클립의 애니메이션 이벤트를 관리할 수 있습니다. | |
| Mask | 이 섹션을 확장하면 애니메이션 클립의 아바타 마스킹을 관리할 수 있습니다. | |
이러한 확장 가능한 프로퍼티는 임포트되는 모든 애니메이션 클립에 적용됩니다.
| 프로퍼티: | 기능: |
|---|---|
| Motion | 이 섹션을 확장하면 임포트한 모든 클립의 루트 모션 노드를 관리할 수 있습니다. |
| Import Messages | 이 섹션을 확장하면 Retargeting Quality Report 옵션을 비롯하여 애니메이션이 임포트된 방식에 대한 정보를 자세히 볼 수 있습니다. |
애니메이션 임포트 프로세스에서 문제가 발생하면 애니메이션 임포트 인스펙터 상단에 경고가 나타납니다.
경고가 반드시 애니메이션이 임포트되지 않았거나 작동하지 않는다는 의미는 아닙니다. 임포트된 애니메이션이 소스 애니메이션과 약간 다르게 보임을 의미할 수도 있습니다.
자세한 내용을 보려면 Import Messages 섹션을 확장하십시오.
이 경우 Unity는 Generate Retargeting Quality Report 옵션을 제공했습니다. 이 옵션을 활성화하면 리타게팅 문제에 대한 자세한 내용을 확인할 수 있습니다.
그 외에 다음과 같은 경고 세부 정보가 표시될 수 있습니다.
이러한 메시지는 Unity가 애니메이션을 임포트하고 자체 내부 포맷으로 변환했을 때 원본 파일에 있는 일부 데이터가 누락되었음을 나타냅니다. 이러한 경고는 리타게팅된 애니메이션이 소스 애니메이션과 정확히 일치하지 않을 수 있음을 나타냅니다.
참고: Unity는 constant 이외에 다른 사전 및 사후 외삽 모드(사전 및 사후 인피니티 모드라고도 불림)를 지원하지 않으며, 임포트 시 해당 모드를 constant로 전환합니다.
Animation 탭의 미리 보기 영역에 다음과 같은 기능이 제공됩니다.
(A) 선택한 클립의 이름
(B) 2D 미리 보기 모드 버튼(직교 카메라와 원근 카메라 간에 전환)
(C) 피벗 및 질량 중심 표시 버튼(기즈모 표시 및 숨김 간에 전환)
(D) 아바타 선택기(액션을 미리 볼 게임 오브젝트 변경)
(E) 재생/일시 정지 버튼
(F) 미리 보기 타임라인의 재생 헤드(앞뒤로 이동 허용)
(G) 애니메이션 미리 보기 속도 슬라이더(왼쪽으로 이동하면 감속, 오른쪽으로 이동하면 가속)
(H) 재생 상태 표시기(재생 위치를 초, 백분율, 프레임 수 단위로 표시)
(I) 태그 표시줄. 여기에서 태그를 정의하고 클립에 적용할 수 있음
(J) 에셋 번들 바. 여기서 에셋 번들 및 배리언트를 정의할 수 있음
AnimationClip