01 Animation Layer
애니메이션 레이어는 부위별로 서로 다른 애니메이션을 재생하는 것으로 하체는 걷고, 상체는 공격 등의 다른 애니메이션을 재생하는 것이 가능하다
기본 레이어(Base Layer)
Animator View를 보면 Base Layer라는 기본 레이어가 존재한다.
Animator View의 Layers 탭에 있는 +버튼을 눌러 새로운 레이어를 생성할 수 있다.
레이어를 여러 개 만들어 부위 별로 다른 애니메이션을 재생하거나 같은 부위에도 비율에 따라 애니메이션 연산을 혼합하여 사용할 수 있다.
각 레이어닌 톱니바퀴 모양의 설정 버튼이 존재한다.
- Weight : 가중치를 설정해서 합성하는 정도를 선택
- Mask : 현재 레이어에서 사용할 Avatar Mask
- Blending : 앞 순서의 애니메이션 계산에 덮어쓸 것인지(Override) 가산(Additive)할 것인지 선택
- Sync : 다른 레이어와의 동기화 설정
- IK Pass : IK 애니메이션 사용 여부
순방향 운동학(Forward Kinematics, FK)과 역 운동학(Inverse Kinematics, IK)
좋은 애니메이션은 기본적으로 순방향 운동학인 FK를 바탕으로 애니메이션이 재생되고
관절에서 손끝으로 그림과 같이 진행된다.
역운동학은 손끝, 발끝이 먼저 움직이면 그 위치에 맞춰 각 관절들이 움직인다.
계단을 밟는 것과 같은 애니메이션을 재생할 때 발바닥이 먼저 바닥에 닿고 그 이후 다리 무릎 허벅지 몸 순서로 연산이 되기 때문에 실제 계단을 밟고 있는 것과 같이 더 자연스러운 애니메이션 재생이 가능하다.
아바타 마스크 (Avatar Mask)
신체 부위를 활성 비활성화하여 애니메이션을 재생하는 부위와 재생하지 않은 부위를 설정할 수 있다.
- Humanoid는 스켈레톤 단위로 큰 단위의 부위를 설정할 때 사용한다.
- 초록색은 사용, 빨간색은 미사용으로 설정된다.
- Transform은 Animation Type이 Humanoid가 아닐 때나 Humanoid지만 얼굴, 손가락 등과 같이 좀 더 세부적으로 부위를 선택할 때 사용
- 설정이 완료된 아바타 마스크는 레이어의 마스크 변수에 등록해서 사용할 수 있다.
02 Blend Tree 개요
하나의 상태 안에 여러 개의 애니메이션 클립을 갖게 하고
상태 안에 있는 여러 개의 애니메이션 클립을 파라미터 값에 따라 온전한 하나 또는 두 개 이상의 애니메이션을 혼합해서 재생하는 기능이다.
블렌드 트리를 생성하면 Float 파라미터 1개 자동 생성되고
블렌드 트리 상태를 선택하면 Inspector View에 현재 블렌드 트리의 기본 정보가 출력되며 이름, 속도 등을 설정할 수 있다.
상태를 더블클릭하면 내부로 이동해서 애니메이션 등록과 같은 설정이 가능하다.
Blend Tree 설정
블렌드 트리 내부로 들어가면 위와 같은 화면이 나타난다.
- Blend Type : 블렌드 트리의 속성 (1D, 2D, Direct)
- 블렌드 트리의 용도에 따라 설정하게 된다.
- Parameter : 어떤 애니메이션 클립 or 블렌드 트리를 재생할 것인지 제어 (현재 Animator의 파라미터 목록에서 선택)
- Motion : 블렌드 트리에 등록되는 애니메이션 클립 or 블렌드 트리
블렌드 트리에 Motion 추가
- 블렌드 트리 노드에서 마우스 오른쪽 클릭
- 블렌드 트리 노드를 선택하고 Inspector View의 Motion 리스트에서 “+” 버튼 선택
- Add Motion : 애니메이션 추가
- Add Blend Tree : 블렌드 트리 추가
Blend Type
블렌드 하는 방식에 따라 5가지의 타입으로 나눌 수 있다.
- 1D : 하나의 애니메이션 파라미터로 블렌드
- 2D : 두 개의 애니메이션 파라미터로 블렌드
- 2D Simple Directional : 모두 다른 방향을 향하는 경우 (동일한 방향에 하나의 애니메이션 배치 가능)
- 2D Freeform Directional : 다른 방향과 같은 방향이 함께 있는 경우 (ex. 앞으로 걷기와 앞으로 뛰기)
- 2D Freeform Cartesian : 한 방향을 향하는 경우
- Direct : Motion 개수만큼 파라미터 필요
03 Blend Tree : 1D
- 하나의 애니메이션 파라미터로 블렌드 한다.
- 대기/걷기/뛰기를 매끄럽게 연결하고 이동속도의 변화에 따라 서서히 뛰기, 서서히 멈추기 등의 애니메이션을 블렌드 하려고 할 때 사용
파라미터 목록에서 Float 파라미터를 선택해서 설정하고 Motion에 원하는 애니메이션을 등록하게 된다.
Motion에 등록되는 애니메이션의 개수에 따라 최대 2개의 애니메이션이 블렌드 될 수 있도록 영역이 분할된다.
위와 같이 대기, 걷기, 뛰기 3개의 애니메이션을 등록하면 3개의 영역으로 분할된다.
Motion에 등록된 애니메이션 클립들의 Threshold값이 0, 0.5, 1이기 때문에 Blend Tree에서 사용하는 파라미터 moveSpeed값이 0, 0.5, 1일 때 motion에 등록된 대기, 걷기, 뛰기 애니메이션을 온전하게 재생하고 그 이외에 값일 때는 두 개의 애니메이션이 혼합되어 재생될 것이다.
04 Blend Tree : 2D
두 개의 애니메이션 파라미터로 블렌드
방향성을 가지는 애니메이션을 블렌드 할 때 사용
2D Simple Directional
모두 다른 방향을 향하는 경우 (동일한 방향에 하나의 애니메이션 배치 가능)
ex) 대기, 각 방향 걷기(전/후/좌/우)
파라미터 값에 따라 온전한 2개의 애니메이션이 재생되거나 2개 이상의 애니메이션이 블렌드 되어 재생될 것이다.
위와 같이 2D Simple Directional은 동일한 방향에 여러 개의 모션이 등록되면 가장 큰 값 하나만 인식하게 된다.
2D Freeform Directional
대기, 걷기, 뛰기와 같이 동일한 방향에 여러 개의 모션을 등록해 사용하려면 2D Freeform Directional을 사용해야 한다.
대기와 네 방향의 걷기, 네 방향의 뛰기가 등록되어 있다.
재생을 하면 Horizontal과 Vertical 값에의 변화에 따라 재생되는 애니메이션이 달라질 것이다.
2D Freeform Cartesian
2D Freeform Directional과 2D Freeform Cartesian을 비교하면 모션의 범위가 설정되는 모양이 다르다.
2D Freeform Cartesian은 주로 동일한 방향에 대한 애니메이션을 사용하도록 권장한다.
ex. 앞으로 이동 중인 FPS 캐릭터가 좌우 45도 방향으로 총구를 겨누는 것
05 Blend Tree : Direct
- Motion별로 별도의 파라미터를 설정할 수 있다.
- Motion 개수만큼 파라미터 필요
얼굴의 표정을 Direct를 사용해서 블렌드 하였고 얼굴의 표정은 다양하기 때문에 모든 표정을 따로 그리기보다 Direct를 사용하여 입모양, 눈모양 등의 몇 가지를 선택해 Motion으로 설정하고 파라미터 수치에 따라 애니메이션을 변형시키면 다양한 표정을 쉽게 구현할 수 있다.
'PBL > Unity' 카테고리의 다른 글
유니티 3D 기초 - 3D Animations / Simple Combat (0) | 2024.05.29 |
---|---|
유니티 3D 기초 - Animation Layer, Blend Tree 실습 (0) | 2024.05.22 |
유니티 3D 기초 - 3D Model / Animations (0) | 2024.05.14 |
유니티 3D 기초 - Navigation Mesh 응용 (0) | 2024.05.14 |
유니티 3D 기초 - Navigation Mesh (0) | 2024.05.13 |