▣ Animation Type (애니메이션 타입)
None: 애니메이션이 없는 경우입니다. 캐릭터를 애니메이션 없이 사용할 때 선택합니다.
Legacy: 이전에 사용하던 애니메이션 시스템입니다. Unity 3.x 버전까지 사용되었으며, 일반적으로 새로운 프로젝트에서는 사용하지 않습니다.
Generic: 기본 애니메이션 타입입니다. 비 인간형 캐릭터(동물, 로봇 등)의 애니메이션에 적합합니다.
Mixamo의 캐릭터는 주로 인간형이므로 이 타입은 잘 사용되지 않습니다.
Humanoid: 인간형 캐릭터를 위한 애니메이션 타입입니다. Mixamo 캐릭터는 대부분 Humanoid 리그로 설정해야 합니다. 이 옵션을 사용하면 Unity에서 제공하는 Avatar 시스템을 사용해 캐릭터의 애니메이션을 제어할 수 있습니다.
사용 예시:
Mixamo의 인간형 캐릭터를 가져왔을 때 Humanoid를 선택하고, Unity의 애니메이션 시스템과 호환되도록 합니다.
▣ Avatar Definition (아바타 정의)
Create From This Model: FBX 모델에서 직접 Avatar(아바타)를 생성합니다. Mixamo에서 가져온 모델은 이 옵션을 선택하여, 해당 FBX 모델을 기반으로 아바타를 만듭니다.
Copy From Other Avatar: 다른 FBX 모델에서 생성된 아바타를 복사해서 사용할 수 있습니다. 동일한 뼈 구조를 가진 여러 캐릭터에 동일한 아바타를 사용하려면 이 옵션을 선택합니다.
사용 예시:
Mixamo 캐릭터에 포함된 아바타를 사용하려면 Create From This Model을 선택하고, 다른 캐릭터에서 아바타를 복사해서 사용하고 싶다면 Copy From Other Avatar를 선택합니다.
▣ Strip Bones
Strip Bones 옵션은 Unity의 Rig 설정에서 특정 뼈대(bones)를 제거하여 게임 성능을 최적화하기 위한 기능입니다. 주로 사용되지 않거나 애니메이션에 불필요한 뼈를 제거함으로써, 게임 내 메모리 사용량을 줄이고 성능을 향상시킬 수 있습니다.
Strip Bones의 기능과 활용
Strip Bones는 기본적으로 캐릭터의 리그에서 사용되지 않는 뼈대들을 자동으로 제거하는 기능입니다. 이 옵션을 사용하면, 뼈대 계층에서 애니메이션에 필요하지 않은 부분을 제거하여 모델의 메모리 사용량과 처리 비용을 줄일 수 있습니다.
예를 들어, 캐릭터 모델에 복잡한 뼈대 구조가 포함되어 있지만, 게임에서 일부 뼈대는 애니메이션이나 물리 연산에 사용되지 않는 경우가 있습니다. 이런 뼈대들은 Strip Bones 옵션을 통해 제거될 수 있습니다.
Strip Bones 사용 시 고려 사항
불필요한 뼈 제거:
사용되지 않는 뼈대가 많을수록 메모리 사용량이 늘어나고, 애니메이션을 계산하는 비용도 증가할 수 있습니다. Strip Bones 옵션을 사용하여 사용되지 않는 뼈를 제거하면 이러한 자원을 절약할 수 있습니다.
애니메이션에 필요한 뼈는 유지:
캐릭터 애니메이션에서 반드시 필요한 뼈대는 유지됩니다. Strip Bones는 자동으로 제거할 수 없는 중요한 뼈대(예: Spine, Arm, Leg 등 주요 뼈)를 유지합니다.
복잡한 리그 구조 최적화:
Mixamo와 같은 리깅 시스템에서 가져온 모델은 때로는 게임에서 사용하지 않는 복잡한 뼈대 구조를 포함할 수 있습니다. Strip Bones는 이러한 모델을 최적화하는 데 유용합니다.
▣ Optimize Game Objects (게임 오브젝트 최적화)
이 옵션을 활성화하면 사용하지 않는 뼈나 애니메이션 데이터를 제거하여 성능을 최적화할 수 있습니다. 사용하지 않는 뼈는 삭제하거나, 특정 파츠만 애니메이션에 반영할 수 있도록 제한할 수 있습니다.
▣ Root Transform Rotation
이 옵션은 애니메이션의 루트 회전을 어떻게 처리할지 결정하는 설정입니다. 캐릭터가 회전하는 애니메이션을 재생할 때, 루트 객체의 회전(transform)과 애니메이션에서 적용된 회전 사이의 관계를 제어합니다.
Bake Into Pose: 이 옵션을 활성화하면 애니메이션에 있는 회전 정보가 캐릭터의 포즈에 포함되고, 루트 객체의 회전이 영향을 받지 않습니다. 즉, 루트가 움직이지 않고 캐릭터 자체만 회전합니다.
Based Upon (기준):
Original (원본): 애니메이션 클립에서 원래 정의된 루트 회전을 사용합니다. 애니메이션 파일에 내장된 회전 값을 사용하게 됩니다.
Body Orientation (몸의 방향): 캐릭터의 상체 방향을 기준으로 루트의 회전 방향이 결정됩니다. 이는 상체의 회전과 루트 회전이 연결된 경우에 사용됩니다.
Offset: 루트 회전에 추가적으로 적용할 수 있는 고정 회전 값입니다. 특정 축을 기준으로 회전을 조정하여 애니메이션이 재생될 때 미세한 조정이 가능하게 합니다.
▣ Root Transform Position (Y)
이 옵션은 캐릭터의 루트 위치에서 Y축(높이)에 대한 설정을 관리합니다. 캐릭터가 애니메이션을 재생하면서 Y축(위/아래) 방향으로 이동할 때 이를 어떻게 처리할지 결정합니다.
Bake Into Pose: 이 옵션을 활성화하면 Y축 이동이 루트 객체가 아닌 애니메이션 포즈에 포함됩니다. 즉, 캐릭터의 루트가 위아래로 움직이지 않고 포즈에만 Y축 변위가 반영됩니다.
Based Upon (기준):
Original: 애니메이션 클립에서 원래 정의된 Y축 이동 값을 사용합니다.
Center of Mass (질량 중심): 캐릭터의 질량 중심을 기준으로 Y축 이동이 조정됩니다.
Feet (발): 캐릭터의 발을 기준으로 Y축 이동이 조정됩니다. 주로 걷거나 뛰는 애니메이션에 사용됩니다.
Offset: Y축에 대해 추가적인 위치 오프셋을 설정할 수 있습니다. 특정 위치를 기준으로 Y축을 조정할 수 있습니다.
▣ Root Transform Position (XZ)
이 옵션은 캐릭터의 루트 위치에서 X축과 Z축 방향(평면 이동)에 대한 설정을 관리합니다. 캐릭터가 좌우로 움직이거나 앞으로 이동할 때 이 설정이 적용됩니다.
Bake Into Pose: 이 옵션을 활성화하면 애니메이션의 평면 이동 정보가 캐릭터의 루트에 반영되지 않고 포즈에만 적용됩니다. 루트 객체가 이동하지 않으며, 애니메이션 포즈만 변합니다.
Based Upon (기준):
Original: 애니메이션 클립에 포함된 원래 XZ축 이동 값을 사용합니다.
Center of Mass: 캐릭터의 질량 중심을 기준으로 XZ축 이동이 조정됩니다.
Feet: 발을 기준으로 XZ축 이동이 조정됩니다.
Offset: 루트 객체의 XZ 축 이동에 적용할 수 있는 추가적인 오프셋 값입니다.
▣ Mirror
이 옵션은 애니메이션을 좌우로 반전하는 데 사용됩니다. 즉, 캐릭터가 오른쪽으로 움직이는 애니메이션이 있을 때, 이 옵션을 활성화하면 해당 애니메이션이 좌측으로 반전되어 재생됩니다. 이 설정은 동일한 애니메이션을 양쪽 방향으로 재생할 때 유용합니다.
활성화: 애니메이션이 좌우로 반전되어 재생됩니다.
비활성화: 애니메이션이 원래 방향대로 재생됩니다.
▣ Additive Reference Pose
이 옵션은 애니메이션이 가산적(추가적인) 방식으로 재생될 때 기준이 되는 포즈를 설정합니다. 가산적 애니메이션(Additive Animation)은 다른 애니메이션에 변화를 더하는 방식으로, 이 옵션을 사용하면 특정 애니메이션 클립에 기준 포즈를 설정할 수 있습니다.
기본 사용 방식:
예를 들어, 캐릭터가 기본적으로 서 있는 상태에서, 추가적으로 상체만 특정 포즈를 취하는 애니메이션이 필요한 경우 가산적 애니메이션을 사용할 수 있습니다. Additive Reference Pose는 이때의 기본 포즈를 설정하여 애니메이션이 어떻게
더해질지 결정합니다.
활성화된 경우: 참조 포즈를 기준으로 가산적인 애니메이션이 적용됩니다.
▣ 정리:
Root Transform Rotation: 캐릭터의 회전(루트)에 대한 애니메이션 설정.
Bake Into Pose: 루트 회전이 포즈에 포함될지 여부.
Based Upon: 회전 기준(원본, 상체 방향 등).
Offset: 루트 회전에 추가할 오프셋 값.
Root Transform Position (Y): 캐릭터의 Y축(위/아래) 이동 설정.
Bake Into Pose: Y축 이동을 루트에 반영할지 여부.
Based Upon: Y축 이동 기준(원본, 발, 질량 중심 등).
Offset: Y축 이동 오프셋.
Root Transform Position (XZ): 캐릭터의 평면 이동(XZ 축)에 대한 설정.
Bake Into Pose: XZ축 이동을 루트에 반영할지 여부.
Based Upon: XZ축 이동 기준.
Offset: 평면 이동 오프셋.
Mirror: 애니메이션을 좌우로 반전하여 재생.
활성화: 애니메이션을 좌우 반전.
비활성화: 애니메이션 원래 방향으로 재생.
Additive Reference Pose: 가산적 애니메이션의 기준 포즈를 설정하는 옵션.
활성화: 참조 포즈를 기준으로 가산적 애니메이션을 적용.
▣ Avatar는 Unity에서 애니메이션을 캐릭터 모델에 적용하기 위한 중요한 개념입니다. Unity에서 Avatar는 Humanoid 리그 또는 Generic 리그 캐릭터 모델에서 사용됩니다. Avatar는 캐릭터 모델의 뼈대 구조와 Unity의 애니메이션 시스템 간의 매핑을 정의하는 역할을 하며, 이를 통해 Unity에서 다양한 애니메이션을 모델에 적용할 수 있습니다.
Avatar의 역할과 기능
Avatar는 캐릭터의 리그(Rig)와 애니메이션 간의 연결을 관리합니다. 특히 Humanoid 캐릭터의 경우, 인간형 캐릭터 모델에 애니메이션을 적용할 때 표준화된 뼈 구조를 사용하여 다양한 애니메이션을 쉽게 적용할 수 있습니다. Mixamo나 다른 소스에서 가져온 캐릭터 모델이 있어도, Avatar를 적절히 설정하면 다른 캐릭터에도 동일한 애니메이션을 사용할 수 있습니다.
Avatar의 사용 목적
Humanoid 애니메이션 적용: Unity의 Humanoid 리그는 인간형 캐릭터에 표준화된 뼈 구조를 정의하며, 이를 통해 다양한 캐릭터 간에 애니메이션 재사용이 가능합니다.
리깅 데이터 활용: 캐릭터의 뼈대와 애니메이션의 동작을 연결하여 캐릭터의 움직임을 정의합니다.
애니메이션 재사용: 한 번 설정한 Avatar를 사용하면 다른 캐릭터에도 동일한 애니메이션을 적용할 수 있습니다. 예를 들어, 같은 리그를 가진 여러 캐릭터가 동일한 애니메이션을 사용할 수 있습니다.
Rig 설정
FBX 파일을 선택한 후, Inspector 창에서 Rig 탭으로 이동합니다.
Animation Type을 Humanoid로 설정합니다. 이렇게 하면 Unity의 표준화된 Humanoid 리그를 사용하게 됩니다.
Avatar Definition을 Create From This Model로 설정합니다. 이 옵션은 FBX 파일에서 새로운 Avatar를 생성합니다.
Apply를 눌러 설정을 적용합니다.
3. Avatar 구성 및 확인
Rig 탭에서 Configure 버튼을 클릭하여 Avatar Configuration 창을 엽니다.
이 창에서 캐릭터의 뼈대 구조를 확인하고, Unity가 제대로 매핑했는지 확인할 수 있습니다.
자동 매핑을 원하면 Auto-Configure 버튼을 눌러 Unity가 자동으로 캐릭터의 뼈대 구조를 설정하도록 할 수 있습니다.
매핑된 뼈가 올바르지 않으면 수동으로 각 뼈를 선택하여 재매핑할 수 있습니다.
Avatar Configuration 창 주요 항목
Mapping (매핑): 캐릭터의 뼈 구조를 Unity 표준 Humanoid 뼈대에 맞게 매핑합니다. Spine, Head, Arms, Legs 등의 뼈대를 올바르게 연결해야 합니다.
Muscle & Settings (근육 및 설정): 여기서 캐릭터의 움직임에 대한 세부적인 근육 설정을 제어할 수 있습니다. 근육 시스템은 캐릭터의 관절 가동 범위를 설정하는 데 유용합니다.
▣ Pistol Fire 애니메이션에 첫번째 프레임만 남기고 PistolAim으로 복제해서 사용
▣ 이 코드는 조준 모드와 발사 모드를 처리하는 방식으로 작성되었습니다. 우클릭 시 조준 모드로 전환되며, 좌클릭 시 발사 애니메이션이 재생되고, 우클릭을 해제하면 조준 모드가 해제됩니다. 이 과정에서 Layer 1이 활성화되어 조준 애니메이션과 발사 애니메이션이 제어되고, 카메라 확대/축소도 함께 이루어집니다.
주요 동작
조준 모드 진입:
우클릭을 눌렀을 때 isAiming이 true로 설정되고, Layer 1이 활성화됩니다.
animator.Play("PistolAim")로 PistolAim 애니메이션이 재생됩니다.
1인칭 모드에서는 **Field of View(FoV)**가 축소되고, 3인칭 모드에서는 카메라가 플레이어에게 더 가까이 이동합니다.
발사 모드:
좌클릭을 누르면 animator.SetTrigger("Fire")가 호출되어 PistolFire 애니메이션이 재생됩니다.
발사 애니메이션이 Layer 1에서 재생되며, Base Layer에서 캐릭터의 이동은 계속 유지됩니다.
조준 모드 해제:
우클릭 해제 시 isAiming이 false로 설정되고, Layer 1이 비활성화됩니다.
FoV가 다시 기본값으로 복구되고, 3인칭 모드에서는 카메라가 원래의 거리로 돌아옵니다.
animator.SetLayerWeight(int layerIndex, float weight):
설명: 지정된 애니메이션 레이어의 가중치(weight)를 설정합니다. layerIndex는 레이어 인덱스를 나타내며, weight는 레이어의 활성화 여부를 결정합니다. 1로 설정하면 레이어가 활성화되고, 0으로 설정하면 비활성화됩니다.
https://docs.unity3d.com/ScriptReference/Avatar.html
https://docs.unity3d.com/Manual/AvatarCreationandSetup.html
https://docs.unity3d.com/Manual/FBXImporter-Rig.html
https://docs.unity3d.com/Manual/RootMotion.html
https://docs.unity3d.com/ScriptReference/Animator.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 3D 아이템 감지(BoxCast) (3) | 2024.10.02 |
---|---|
유니티 Build Setting (7) | 2024.10.02 |
유니티 3D Aim Animation Rigging (2) | 2024.09.30 |
유니티 2D AI 순찰, 공격, 도망, 랜덤이동 시스템 (0) | 2024.09.30 |
유니티 Movement 애니메이션(걷기, 뛰기) (4) | 2024.09.28 |
댓글