언어:

애니메이션 포즈 스냅샷

언리얼 엔진

스켈레탈 메시 애니메이션을 적용할 때, 메시의 제어를 (캐릭터가 "래그돌" 상태에 들어가는 등) 피직스에 맡기고픈 경우가 있습니다. 피직스 적용 이후, Animation Pose Snapshot (애니메이션 포즈 스냅샷) 기능을 사용하면, 스켈레탈 메시 포즈를 캡처하여 (모든 본 트랜스폼 데이터를 포함해서) 블루프린트 안에 저장하고 애니메이션 블루프린트 안에서 꺼내 쓰면 (아래 예제 비디오에서처럼) 저장된 포즈를 기준으로 블렌딩할 수 있게 됩니다.

위에서는, R 키를 누르면 캐릭터가 래그돌 상태에 들어가며 캐릭터 블루프린트Pose Snapshot (포즈 스냅샷) 노드를 사용하여 스켈레탈 메시의 포즈를 저장합니다. R 키를 다시 누르면, 캐릭터가 그 스냅샷에서 "get up" 애니메이션 몽타주 로 블렌딩된 뒤 원래 보행 상태로 돌아갑니다. 이렇게 하면 캐릭터에 피직스를 적용한 결과를 구해, 그 포즈에서 캐릭터 애니메이션의 원래 발 위치로 부드럽게 돌아가는 블렌딩을 얻을 수 있습니다.

포즈 스냅샷 저장

스켈레탈 메시의 포즈를 런타임에 저장하기 위해서는, 캐릭터 블루프린트 안에서, Skeletal Mesh 컴포넌트 와 그 Anim Instance 에 접근해야 합니다. 스켈레탈 메시와 애님 인스턴스를 구한 뒤, Save Pose Snapshot (포즈 스냅샷 저장) 노드를 호출하고 원하는 Snapshot Name (스냅샷 이름)을 입력하면 됩니다. Snapshot Name 칸에 수동으로 이름을 입력하거나, 이름 저장을 위한 변수를 만들 수도 있습니다:

PoseSnapShotBlueprint.png

Snapshot Name 에 주는 이름은 반드시 애니메이션 블루프린트 안에서 포즈 스냅샷을 구할 때 사용하는 이름이어야 합니다. 추가로 Save Pose Snapshot 을 호출할 때, 스냅샷은 현재 LOD 에서 찍습니다. 예를 들어 LOD1 에서 스냅샷을 찍은 다음 LOD0 에서 사용하면, LOD1 에 있지 않은 본은 메시의 레퍼런스 포즈를 사용할 것입니다.

포즈 스냅샷 구하기

포즈 스냅샷을 구하려면, 애니메이션 블루프린트애님 그래프 에서, 우클릭 하고 Pose Snapshot 노드를 추가하고 Snapshot Name 을 입력합니다.

PoseSnapShotAnimBPNode.png

아래는 래그돌 포즈에서 일어나는 캐릭터에 샘플로 사용한 예제 그래프입니다.

PoseSnapShotAnimBP.png

위에서 Default 라는 State Machine 으로 캐릭터의 보행을 구동시키고 있으며, MySlot 이라는 Slot 노드를 사용하여 캐릭터가 일어나는 애님 몽타주를 재생합니다. Blend Poses by bool 노드를 사용하여 캐릭터가 이동을 멈췄는지 확인, True 면 포즈 스냅샷으로 전환합니다. False 면 포즈 스냅샷에서 슬롯에 설정된 애니메이션 몽타주로 블렌딩한 후 보통 디폴트 스테이트 머신을 이어갑니다.

Snapshot Pose 함수

Pose Snapshot 기능을 사용하는 다른 방법은 블루프린트 안에서 Snapshot Pose 함수를 사용하여 스냅샷을 Pose Snapshot 변수에 저장하는 것입니다.

SnapshotPose.png

Snapshot Pose 를 사용하면, 스냅샷을 저장할 변수를 위와 같이 제공해 줘야 합니다.

애님 그래프 안에서 Pose Snapshot 노드를 추가한 이후, ModeSnapshot Pin 으로 설정하고 디테일 패널에서 (As pin) Snapshot 옵션을 체크합니다.

PoseSnapshotDetails.png

그러면 노드에 Pose Snapshot 입력 핀이 노출되며, 여기에 원하는 스냅샷 변수를 전달할 수 있습니다.

SnapshotPoseAnimGraph.png

부가 자료

이 기능에 대한 추가 정보를 다음 라이브 트레이닝 스트림 방송에서도 확인할 수 있습니다: