728x90

이 글은 인프런 "따라하면서 배우는 고박사의 유니티 기초" 강의를 수강한 후 정리한 글입니다. 

 

[지금 무료] 따라하면서 배우는 고박사의 유니티 기초 | 고박사 - 인프런

고박사 | 유니티로 게임을 개발하고 싶은 초보자를 대상으로 하며, 유니티 설치부터 2D/3D 게임 개발에 필요한 기초 지식까지 자세하게 설명합니다. (강의에 사용되는 모든 리소스는 영상 상단의

www.inflearn.com


Animation Layer

게임 캐릭터가 공격을 한다고 할 때 공격은 점프하면서, 걸으면서 할 수 있는데, 걸으면서 아이템 사용, 총 재장전 등을 할 수 있다. 이러한 애니메이션들을 독립적으로 제작하는 것이 아닌 애니메이션 레이어를 이용하여 구현할 수 있다.

 

Animation Layer은 부위별로 서로 다른 애니메이션을 재생하는 것으로 하체는 걷고, 상체는 공격 등의 다른 애니메이션을 재생하는 것이 가능하다.

 

기본 레이어(Base Layer)

기본 레이어는 여러 layer를 만들어 부위별로 다른 애니메이션을 재생하거나 같은 부위도 비율에 따라 애니메이션을 혼합하여 사용할 수 있다.

Animator View > Layers 탭의 위에서부터 순서대로 레이어가 실행되며 +를 눌러 새로운 레이어를 생성할 수 있다. 

Layer 생성

 

각 layer에는 설정 버튼이 존재하며, 가중치를 설정하거나 어느 부위에만 해당 레이어의 애니메이션을 재생할 것인지 설정하는 등 다양한 옵션이 있다. 

 

layer option

​순방향 운동학(Forward Kinematics, FK)과 역운동학(Inverse Kinematics, IK)

 

애니메이션은 기본적으로 순방향 운동학 FK를 바탕으로 애니메이션이 재생되고, 애니메이션이 재생되는 순서는 관절에서 손 끝으로 진행된다.

역 운동학은 손 끝, 발 끝이 먼저 움직이면 그 위치에 맞춰 관절들이 움직이기 때문에 계단을 밟는 것과 같은 애니메이션 재생 시 발바닥이 먼저 닿고 다리 무릎 허벅지 몸 순으로 연산이 되기 때문에 실제 계단을 밟고 있는 것과 같이 더 자연스러운 애니메이션 재생이 가능하다.

Avatar Mask

 

아바타 마스크는 Project View > “+” > Avatar Mask 에서 생성할 수 있다. 신체 부위를 활성/비활성화 하여 애니메이션을 재생하는 부위와 재생하지 않는 부위를 설정할 수 있다. 

 

 

아바타 마스크는 Humanoid, Transform 설정이 있다. 

  • Humanoid: 스켈레톤 단위로 큰 부위를 지정할 수 있다. 부위를 클릭해서 초록색(사용O)/빨간색(사용X)으로 변경
  • Transform: 유니티 게임오브젝트의 레이어 단위로 부위를 지정한다. Animation Type이 Humanoid가 아닐 때나 Humanoid지만 좀 더 세부적으로 부위를 선택할 때 사용한다. (체크된 부위만 사용)

 


Blend Tree

 

Blend Tree는 하나의 상태 안에 여러 개의 애니메이션 클립을 갖게 하고 상태 안에 있는 10억 애니메이션 클립을 파라미터 값에 따라 온전한 하나 또는 두 개 이상의 애니메이션을 혼합해서 재생하는 기능이다.

예를 들어 대기와 걷기 애니메이션을 하나의 브랜드 트리 상태로 설정하고 대기와 걷기 뿐만 아니라 서서히 걷기, 서기와 같은 애니메이션을 재생할 수 있다. 

Blend Tree는 Animator View > 마우스 오른쪽 클릭 > Create State > From New Blend Tree 로 생성할 수 있다

Blend Tree를 생성하면 Float 파라미터 1개가 자동으로 생성된다. 상태를 선택하면 inspector view의 현재 Blend Tree의 기본 정보가 출력되며 이름, 속도 등을 설정할 수 있다. 

 

Blend Tree 설정

블렌드 트리 용도에 따라 설정한다. 타입에 따라 파라미터 개수가 달라진다.

  • Blend Type: 블렌드 트리의 속성 (1D, 2D, Direct)
  • Parameter : 어떤 애니메이션 클립 or 블렌드 트리를 재생할 것인지 제어 (현재 Animator의 파라미터 목록에서 선택)
  • Motion : 블렌드 트리에 등록되는 애니메이션 클립 or 블렌드 트리

Blend Type

블렌드 트리는 블렌드 방식에 따라 아래 5가지로 나뉜다. 

 

 

Blend Type : 1D

하나의 파라미터로 애니메이션을 블랜드하며, 대기/걷기/뛰기를 매끄럽게 연결하고 이동속도의 변화에 따라 서서히 뛰기, 서서히 멈추기 등의 애니메이션을 블렌드 하려고 할 때 사용한다. 

 

애니메이터에 비해 파라미터 목록에서 float 파라미터를 선택해서 설정하고 모션에 원하는 애니메이션을 등록한다. 이때 모션에 등록되는 애니메이션의 개수에 따라 최대 2개의 애니메이션이 블랜드 될 수 있도록 영역이 분할된다. 

위의 예제와 같이 3개의 애니메이션을 등록하면 3개의 영역으로 분할된다. 

결과적으로 위와 같은 설정을 하는 경우 movespeed의 값이 변환되면 그에 따라 재생되는 애니메이션이 달라지게 된다.

 

Blend Tree : 2D Simple Directional

방향성을 가지는 Blend Tree로 2 개의 파라미터로 애니메이션 블렌드 시에 사용한다.

​2D는 사용용도에 따라서 세 종류로 나눌 수 있으며 2D Simple Directional의 경우 모두 다른 방향을 향하는 애니메이션을 하나의 Blend Tree로 구성할 때 사용한다. 

 

아래 화면과 같이 대기 및 각 방향 걷기(전/후/좌/우)를 등록하였을 대 파라미터를 두 개 사용하기 때문에 Threshold 값 대신 pos X, pos  Y 값을 설정한다. 

 

​파라미터 값에 따라 온전한 1개의 애니메이션이 재생되거나 애니메이션이 블랜드 되어 재생될 것이다. 결과적으로 Horizonts와 Vertical 값 변화에 따라 재생되는 애니메이션이 달라지게 된다. 

 

2D Simple Directional의 특징

Blend Tree : 2D Freeform Directional

다른 방향과 같은 방향이 함께 있는 경우에 사용하며, 같은 방향에 여러 개의 애니메이션 배치가 가능하기 때문에 걷기, 뛰기를 함께 배치한다.

결과적으로 대기, 각 방향 걷기(전/후/좌/우), 각 방향 뛰기(전/후/좌/우)를 등록하여 파라미터 갯수나 모션에 설정되는 옵션은 2D Simple Directional과 동일하며 결과적으로 Horizonts와 Vertical 값 변화에 따라 재생되는 애니메이션이 달라지게 된다. 

 2D Freeform Directional vs 2D Freeform Cartesian

이는 두 모션에 범위가 설정되는 모양이 다르다. 

 

Blend Tree : 2D Freeform Cartesian

 

주로 동일한 방향에 대한 애니메이션에 사용하도록 권장한다. 예시를 들어, 전방의 좌/우를 쳐다보며 이동 중인 FPS 캐릭터가 45도 방향으로 총구를 겨누는 것과 같은 애니메이션에서 사용된다. 

 

 

 
 

​Blend Type : Direct

모션 별로 별도의 파라미터를 설정할 수 있으며, 얼굴의 모션과 같이 각기 다른 부위를 조금씩 혼합하여 싶을 때 사용한다.

 

 

+ Recent posts