부트캠프

Animator 알아보기

noyyo 2023. 11. 28. 11:04

유니티의 현재 애니메이션 시스템은 메카님 시스템이라고 불리기도 하며 Animator 컴포넌트를 통해서 동작한다.

애니메이션 리타겟팅, 근육 제어, 상태 머신 등의 기능들이 있다.

Animator 컴포넌트는 AnimationController를 통해 AnimationClip간의 Transition을 정의하고 Layer, Parameter등으로 관리할 수 있다.

Avatar라고 하는 휴머노이드 형태의 모델이 가지고 있는 뼈대 모형을 토대로 애니메이션 리타겟팅, IK 관련 기능을 이용할 수 있다.

 

애니메이션 시스템은 굉장히 복잡한 많은 기능들이 있으므로 자주 쓰이는 기능만 몇 가지 정리한다.

◆Animator

● Transition

HasExitTime : 이 설정이 True면 애니메이션의 정규화된 실행시간이 해당 ExitTime이 오기 전까지는 트랜지션이 일어나지 않는다. 예로 ExitTime이 0.5면 애니메이션 클립이 50%가 되기 전까지는 조건을 충족해도 트랜지션이 일어나지 않는다. 1 이상의 숫자도 가능하다. 3.5면 3번 반복에 50%가 진행되기 전까지 트랜지션이 되지 않는다.

Transition Duration : 트랜지션 전환이 이루어지는 시간 혹은 비율이다. FixedDuration 여부에 따라 달라진다.

FixedDuration : True면 트랜지션 전환은 시간을 기준으로 계산된다. 0.2면 0.2초가 된다. False일 때 0.2면 클립 길이의 20%만큼이 전환에 사용된다.

TransitionOffset : 다음에 전환되는 애니메이션의 어떤 부분부터 재생할지 결정한다. 0.2면 다음 애니메이션 클립의 20%에 해당하는 부분부터 재생된다.

Conditions : 트랜지션의 조건을 설정한다.

 

●Layer

Weight : 기본적으로 Layer는 밑에있는 레이어가 위에 있는 레이어를 덮어쓴다. 이 때 덮어쓰는 비율이다. 1이면 완전히 덮어쓴다. 즉 위에 있는 레이어는 적용되지 않는다.

Mask : 아바타 마스크를 적용할 수 있다. 아바타에서 특정 부위에 대해서만 애니메이션이 적용되도록 할 수 있다. 상체에 마스크를 적용해서 상체만 움직인다던가 하는 식으로 사용한다.

Blending : Override면 위의 레이어를 덮어쓰고 Additive면 위의 레이어에서 추가적으로 적용한다.

IKPass : True면 IK를 계산한다. 계산된 IK에 따라 애니메이션이 덮어씌워진다. 내부적으로 해당 레이어에 IK관련 이벤트를 호출시킨다.

 

●Parameter

트랜지션의 조건을 설정하거나 할 때 쓰이는 애니메이터 내부의 값들이다. Trigger는 실행되자마자 0으로 바뀌는 값이다.

이것을 설정해서 애니메이터 내부에서 어떤 상태로 전환할 지 결정하거나 블렌딩하거나 하는 데 쓰인다.

 

●Animation State

Motion : 클립에 사용될 Animation

Speed : 클립 재생 속도

MotionTime : float 타입의 Parameter 값에 해당하는 지점만을 Clip에서 재생한다.

예를들어 float타입의 Motion이라는 파라미터가 있을 때 이 값이 0.2면 해당 상태는 재생하는 내내 Clip의 20%에 해당하는 지점의 값만 가져와서 사용한다.

클립의 0% 값일 때  포지션 y값이 0이고 50%가 5고 100%가 10인 애니메이션 클립이 있다고 하면 Motion 파라미터 값이 0.5면 이 클립은 재생 내내 포지션 y 값이 5다.

재생을 얼마나 했던 상관없이 파라미터 값으로 결정된다. 재생이 안되는 것은 아니다.

CycleOffset : MotionTime에 이 값을 더한다. MotionTime이 0.1이고 Offset이 0.2면 0.3에 해당하는 지점이 재생된다.

FootIK : 해당 애니메이션 상태에서 FootIK를 적용한다. 휴머노이드인 경우만 적용된다.

WriteDefaults : 애니메이터가 사용하는 프로퍼티들의 기본값을 작성해서 사용한다. 그냥 항상 체크되어 있다고 생각하는게 편하다. 이걸 끄면 해당 애니메이션 클립이 애니메이터가 사용하는 모든 프로퍼티에 대해서 직접 다 조정해줘야 한다.

 

◆Animation Clip

LoopTime : 키면 Clip이 무한반복 될 수 있다.

LoopPose : 키면 루프할 때 포즈가 끊기지 않게 된다. 이걸 끄면 루트모션을 사용할 때 달리기나 걷기를 하면 위치가 처음으로 돌아가게 된다. 

BakeIntoPose : 모델 루트의 회전이나 포지션을 뼈대의 움직임에 맞춰서 루트 모션으로 적용할 거면 False이고 적용하지 않고 그냥 포즈만 취할거라면 True로 설정하면 된다.

BasedUpon : 애니메이션 작성자가 설정한 소스를 기반으로 할 것인지 루트를 기반으로 할 것인지 정한다.

 

'부트캠프' 카테고리의 다른 글

프로젝트 마무리  (1) 2023.12.15
위치와 회전 계산하기  (0) 2023.11.22
공격 범위를 DecalProjector를 이용해 표시하기  (1) 2023.11.18
애니메이션의 상태판단  (0) 2023.11.15
중간발표  (0) 2023.11.13