[언리얼] 애니메이션 실습 1

늦잠·2024년 4월 22일
post-thumbnail

Gorka Games 채널의 Unreal 5 RPG Tutorial을 따라하며 정리한 글.
BlendSpace애니메이션 블루프린트 기초에 대한 내용.

출처 : https://www.youtube.com/watch?v=WcDj4uZygyE&list=PLiSlOaRBfgkcPAhYpGps16PT_9f28amXi&index=3



준비

사용하는 애니메이션 파일도 유튜브에 링크되어 있다.

애니메이션을 다운받고 SK_Mannequin을 스켈레톤으로 하여 프로젝트에 임포트한다.



대기/걷기/뛰기 블렌딩 - BlendSpace

새로운 BlendSpace 1D 에셋을 만든다. 사용할 스켈레톤은 마찬가지로 SK_Mannequin.

BlendSpace에 따라 여러 애니메이션을 섞는, 블렌딩 하는 에셋이다.

1D는 사용할 값이 하나라는 뜻. 여기선 그 값으로 Speed를 사용해 속도에 따라 걷기 - 뛰기 애니메이션을 블렌딩할 것이다.

만든 Locomotion_BlendSpace1D를 열고 블렌딩에 사용할 값인 Speed를 만들어준다. 최소는 0, 최대는 500(캐릭터 최대 속력이 500으로 되어있어서).


에셋 브라우저에서 애니메이션을 검색하여 MM_Walk_InPlace, MM_Walk_Fwd, MM_Run_Fwd를 가져와 그래프의 맨 앞, 중간, 맨 뒤에 놓는다.

이렇게 하면 캐릭터의 Speed값에 따라 속도가 0이면 제자리 걷기를, 중간이면 그냥 걷기를, 최대이면 뛰는 모션을 취하게 되고 그 중간일 경우 적절히 블렌딩 된 모션이 나온다.



Locomotion - 애니메이션 블루프린트, 스테이트 머신

애니메이션 블루프린트 에셋을 하나 만든다. 이 블루프린트로 캐릭터가 어떤 상황에 어떤 애니메이션을 취할지 지정해 줄 것이다. 스켈레톤은 SK_Mannequin, 에셋 이름은 ABP_RPGCharacter.

스테이트 머신(State Machine)을 하나 만든다.

스테이트 머신(State Machine) :
대기, 걷기, 뛰기 같은 스테이트(State)를 만들고, 각 스테이트에서 재생될 애니메이션을 연결하고, 스테이트 간 전환을 제어하는 트랜지션(Transition)을 생성하여 쉽게 애니메이션 블렌딩을 사용하는 시스템.

만든 Locomotion 스테이트 머신에서 다음과 같이 스테이트를 만든다. Idle, Walk/Run, Stop 등이 스테이트이고 그 사이 화살표가 스테이트 간 전환을 제어하는 트랜지션이다.

각 스테이트를 애니메이션과 연결해준다. Idle_Break, 아까 만든 Locomotion_BlendSpace1D, Walk_Stop. Locomotion_BlendSpace1DSpeed값은 변수로 승격시켜둔다.

Idle -> Walk/Run 트랜지션은 다음과 같이 설정한다. 즉 속도가 0보다 클 경우 대기 상태에서 걷기/뛰기 상태로 넘어가게 된다. Walk/Run -> Stop 트랜지션은 반대로 속도가 0 이하가 될 때, 로 설정한다.

Stop -> Idle 트랜지션은 자동에 체크하여 멈추는 애니메이션이 재생된 후 자동으로 대기 상태로 넘어가게 한다.


완성된 Locomotion 스테이트 머신을 Save cached pose를 통해 저장한다.
여기서 cached pose는 일종의 애니메이션 트리를 저장해두는 변수같은 느낌이라고 이해했다.



Locomotion 2

애니메이션 블루프린트에 스테이트 머신 Main을 추가한다. Default Slot이란 슬롯 노드를 만들어 연결하고 이를 캐릭터가 취할 포즈가 최종적으로 결정되는 Output Pose와 연결한다.

애니메이션 슬롯은 애니메이션이 삽입될 수 있는 위치를 제공한다. 주로 애니메이션 몽타주와 함께 쓰인다.

Main스테이트 머신에서 Unarmed Locomotion 스테이트 머신을 만들고 저번에 만들어둔 Locomotion 캐시를 연결하고 컴파일한다.

디폴트 폰인 BP_ThirdPersonCharacter의 블루 프린트에서 애니메이션 클래스를 만든 ABP_RPGCharacter로 교체하고 게임 실행해보면 애니메이션은 바꼈지만 Speed 변수가 연결이 안돼 그냥 대기 상태 애니메이션만 재생된다.

애니메이션 블루프린트의 이벤트 그래프를 다음과 같이 세팅하여 폰의 속도를 Speed 변수에 계속 업데이트한다.

이제 캐릭터는 속도에 따라 대기/걷기/뛰기 모션을 취하게 된다.

profile
피카

0개의 댓글