Game Development/Unreal Engine

[UE5] Animation Retargeting(애니메이션 리타게팅)

Dlaiml 2024. 5. 6. 15:52

*언리얼 엔진 학습 1주 차 포스팅으로 틀린 내용이 있을 수 있습니다

 

언리얼 엔진의 Character 클래스는 Material, Skeleton등을 멤버로 가지고 있는 Skeletal Mesh Component를 사용하여 애니메이션, 외형 등을 표현할 수 있다.

 

 

 

특정 Skeleton에서 사용하던 포즈, 애니메이션을 다른 캐릭터에 적용하면 아래와 같이 문제가 발생한다.

캐릭터마다 골격이 달라서 그대로 사용이 불가능하다는 문제가 있다.

출처: Unreal Engine Documentation

 

특정 캐릭터에서 사용하던 애니메이션을 다른 캐릭터에서도 사용가능 하도록 하는것을 Animation Retargeting이라고 한다.

 

Animation Retargeting is the process of repurposing existing animations for use between multiple characters, eliminating the need to create entirely new animations as you can instead share your animation assets between characters. - Unreal Engine Documentation - 

 

Skeleton 파일을 열어 내부의 Skeleton Tree를 보면 구조마다 이름이 붙어있고 Retargeting을 위한 Translation 옵션을 지정할 수 있다.

 

아래 왼쪽은 언리얼엔진5에서 기본 제공하는 캐릭터 클래스(이하 A캐릭터)의 Skeleton이며

아래 오른쪽은 마켓플레이스에서 다운받은 Skeletal Mesh(이하 B캐릭터)의 Skeleton이다.

 

 

두 캐릭터의 Skeleton 구조가 다르기 때문에 이름을 기준으로 한 1대1 매칭으로는 동일한 애니메이션의 실행이 불가능한 상황이다.

 

각각 Skeleton에서 뼈(이하 Rig) 들을 모아 이름붙이는 방식으로 애니메이션이 두 Skeleton에서 매핑된 구조를 참조하도록 할 필요가 있다. (A캐릭터의 왼쪽 팔, B캐릭터의 왼쪽 팔을 매칭)

 

Content Drawer에서 우클릭 -> Animation -> Retaregeting -> IK Rig 하여 IK Rig를 생성해 준다.

 

 

Preview Skeletal Mesh를 가져온다.

 

 

Skeletal Mesh를 불러오게 되면 좌측 Hierarchy에 이전에 확인한 Rig element가 로드된다.

우선 Retargeting에서 root가 되는 Rig를 설정한다 (공식문서에서는 주로 pelvis를 사용한다고 한다.)

 

 

 

다음으로 Start bone -> End bone을 하나로 묶는데 이를 Retarget Chain이라고 부른다. 

spine_01 -> spine_03을 아래 사진과 같이 New Retarget Chain을 실행하여 하나의 Spine이라는 Retarget Chain으로 만들었다.

 

 

 

IK Retargeting에 Spine이라는 Chain이 생성된 것을 확인할 수 있다.

Hierarchy에는 설정한 Retarget Root와 Spine 체인이 설정된 Rig에 표시가 되는 것도 볼 수 있다

 

 

같은 과정을 (IK Rig 생성부터 Retarget Root, Retarget Chain 세팅)을 A캐릭터, B캐릭터에 대해 모두 진행한다.

 

이제 두 Skeleton에서 Retargeting을 진행할 준비인 Retargeting root 설정, 서로 매핑할 Retargeting Chain 설정이 완료되었다. 

 

 

다음으로는 앞서 만든 두 IK Rig를 연결할 IK Retargeter를 생성한다.

 

 

Source, Target IK Rig를 선택하고 미리보기 위한 Mesh를 선택한다.

 Viewport에서 두 Mesh가 겹치지 않도록 아래 Mesh offset을 적절하게 조정한다.

 

Chaine Mapping에서 IK Rig에서 설정한 Retarget Chain을 각각 지정하여 매핑시킨다.

 

다음으로 Asset Browser에서 애니메이션을 더블클릭하면 두 Skeleton에서 매핑한 Chain으로 Retargeting되어 애니메이션이 동작하는 것을 미리 볼 수 있다. 

 

 

Export Selected Animation을 클릭하여 리타게팅된 애니메이션을 저장할 경로를 선택하면 이를 Target Skeleton에서도 활용할 수 있다.

 

 

Reference

[0] https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/AnimationRetargeting/

 

Animation Retargeting

Describes how retargeted animations can be used with multiple Skeletal Meshes, allowing you to share animations.

docs.unrealengine.com

[1] https://devjino.tistory.com/276