Life Archive
article thumbnail

유니티든 언리얼이든 기본 애니메이션에 추가 애니메이션을 사용할 때 Blend를 사용하지 않으면

자연스럽지 못한 출력을 얻게 된다.

 

예를 들어, 플레이어가 움직이면서 동시에 무기를 꺼낸다면 하체의 다리는 계속 걷고 있어야하며,

상체는 칼을 꺼내고 있어야한다.

 

각각의 애니메이션은 Walk / DrawWeapon으로 분리되어있지만 동시에 실행돼야하므로

Blend를 사용하여 상하체가 동시에 두 개의 애니메이션을 사용하도록 설정해야한다.

 

언리얼 엔진5에서, 플레이어가 이동하면서 무기를 꺼낼 때/넣을 때 Animation Blend를 사용하지 않고 Main States를 Default Slot 그대로 출력하게 된다면,

마찬가지로 무기꺼내는 애니메이션을 취하면서 움직이기에 매우 어색한 연출을 얻게 된다.

 

언리얼에서는 Animation BluePrint - AnimGraph에서 Layer Blend Per Bone 노드를 사용하여

블루프린트에서 Animation Blend를 사용할 수 있다.

 

처음 ABP_Manny에서의 AnimGraph

처음에는 Main States는 Deafult Slot과 연결되고 출력으로 이어지지만,

UpperBody라는 Anim Slot을 사용하기 위해 Cache Pose 노드를 생성하여 사용한다.

MainStates Cache Pose 노드

Cache Pose 노드를 하나 만들어두고 Layer Blend Per Bone을 사용한다.

Layer Blend Per Bone

Base Pose에는 처음과 같이 MainStates를 연결하여 그대로 출력되게 하고, UpperBody 슬롯에서 행해지는 애니메이션은 Blend Poses 0으로 연결하여 출력되도록 한다.

 

이후 Layer Blend Per Bone의 디테일 창에서, 본 이름에 따라 인덱스 배열을 만들고 Depth Blend 값을 넣어준다.

Layer Blend Per Bone - Detail Window

이렇게 인덱스 배열을 만들어주면, 각 본 이름에 맞는 본에서 뎁스 블랜드 값에 따라서 Animation Blend가 실행된다.

 

(Depth Blend값을 -1, 즉 음수로 설정하게 되면 해당 본과 해당 본의 자식 오브젝트들은 Disable된다.

즉, 기존 검을 꺼내는 애니메이션에서 thigh_r과 thigh_l에 해당하는 애니메이션은 실행하지 않는다는 의미다.

이렇게 설정함으로써 하체는 걷는 애니메이션만을 실행하게 된다.)

 

마지막으로 Blend하고자 하는 애니메이션 몽타주 파일에서 DefaultGroup을 UpperBody로 변경해주면 적용이 완료된다.

위와 같이 만들어주고 ABP_Manny를 저장하여 실행하면,

하체는 달리면서도 상체는 무기를 꺼내거나 넣는 애니메이션이 자연스럽게 출력이 된다.


참고자료 : https://forums.unrealengine.com/t/documentation-how-to-use-blend-depth-in-layered-blend-per-bone-node/339150