UE4

[UE4] Mixamo 애니메이션 리타겟(Retarget)

Honey Badger 2023. 4. 9. 20:32

 

개요

 

    전문적인 애니메이터가 있는 회사가 아닌 개인이 개발을 하다보면 여러 곳에서 애니메이션을 가져와야 하는 경우가 종종 있다. 그 중에서도 Mixamo라는 사이트에서 무료로 다양한 애니메이션을 제공받을 수 있기 때문에 많은 개발자들이 애용하는데, 문제가 하나 있다. 내가 다운받은 모델과 Mixamo에서 다운받은 모델은 겉보기엔 둘다 동일한 사람처럼 생겼지만 그 속의 해골?을 뜯어보면 전혀 다르다.  

   이해하기 쉽게 예를 들어보자. 내가 영국 사람에게 전화로 구르기 동작을 설명하려고 한다. 영국사람과 난 겉보기엔 동일한 구조를 가지고 있지만(사람이라면 어깨, 목, 골반, 다리, 팔 등이 동일한 구조다.) 그것을 부르는 이름은 나라마다 다르다. 그래서 내가 아무리 무릎을 굽히고 고개를 숙이라고 얘기해도 영국 사람은 알아듣지 못할 것이다.  

 

Mixamo의 캐릭터 스켈레톤 트리
UE에서 제공하는 무료 에셋 중 하나의 스켈레톤 트리

   

   위의 사진처럼 두개의 모델 역시 디폴트 포즈와 스켈레톤 트리의 구조, 각 노드의 이름까지 전부 다른 것을 확인할 수 있다. 이 때문에 둘의 애니메이션은 호환되지 않으며 적용도 할 수 없다. 하지만 다행스럽게도 언리얼에서 리타겟 매니저라는 기능을 제공해준다. 내가 영국사람에게 구르기를 가르쳐줄 수 있게 하는 번역기 같은 역할이다. 오늘은 이를 활용해서 Mixamo에서 제공해주는 애니메이션을 내 에셋에게 적용시켜 볼 것이다. 한번만 고생해놓으면 Mixamo의 왠만한 애니메이션은 이후 손쉽게 적용 가능하니 인내심을 갖고 화이팅해보자.

 

 

 

 

 

 

 

리타겟

 

  1. 먼저 Mixamo의 스켈레톤으로 가서 리타깃 매니저 창을 띄워준다. 상단바 메뉴에 리타깃 매니저가 없다면 창 메뉴에서 찾을 수 있다. 

 

 

 

 

2. 릭 셋업에서 릭을 Humanoid(인간형)로 선택하고 바로 아래의 자동 매핑 버튼을 눌러 Mixamo의 본을 자동으로 맞춰준다. 여기서 릭(Rig) 이란 무엇일까? 서로 다른 스켈레톤을 연결해주는 번역기라고 볼 수 있다. 이 스켈레톤에 대해 릭을 구성하게 되면, 이 스켈레톤이 소유한 애니메이션을 동일한 릭의 다른 스켈레톤에 리타겟할 수 있다는 뜻이다. 쉽게 얘기하면 내가 리타깃매니저에게 "무릎은 이곳이고, 허리는 이곳이고, 목은 이곳이고..."이런식으로 알려주면(릭을 구성하면) 리타깃 매니저가 영국사람에게 가서 번역(리타깃)해준다는 것이다. 

 

 

 

 

 

3. 이번엔 내가 쓰고 있는 모델의 스켈레톤으로 가서 마찬가지로 위의 과정을 통해 릭을 만들어준다. 다시 Mixamo 모델로 돌아와서 이번엔 직접 어디가 허리인지 다리인지 무릎인지 알려줄 차례이다. 알다시피 우리 몸은 셀 수 없이 많은 파트로 나뉘어져있다. 그 말인 즉슨 지금은 노가다를 할 차례이다.  먼저 주목해볼 것은 Root(뿌리)이다.언리얼 모델의 경우 뿌리가 발쪽이지만 Mixamo 애니메이션의 경우 뿌리가 엉덩이쪽이다. 그러니 Root는 Hips로 선택해주어야 한다. 나머지 본도 다음링크를 참고해 매핑해주자. 고급표시를 누르면 세부 본이 나오는데 이것도 일일히 다 매핑해주어야 한다.

http://jollymonsterstudio.com/2018/11/10/animation-re-targeting-with-unreal-using-mixamo-assets/

 

Animation Re-targeting with Unreal using Mixamo assets

Hey guys, Today I have another tutorial for you, this time discussing how you can import new animations into Unreal Engine and re target them against your character. For my example I will be using a character from Mixamo, which is a site support by Adobe t

jollymonsterstudio.com

 

 

 

4. 다음은 디폴트 포즈를 변경해줄 차례이다. 언리얼의 모델과 달리 Mixamo의 모델은 T포즈로 되어있으므로 언리얼모델의 스켈레톤으로 가서 T포즈로 설정해주어야한다. thigh_r, thigh_l (허벅지) 본과 upperarm_r, upperarm_l (팔) 본의 각도를 조금씩 조절하며 아래 사진과 같이 T모양으로 만들어준다음 '포즈 변경>현재 포즈 사용' 버튼을 눌러 변경한 포즈를 적용해준다. 애니메이션의 정밀한 리타겟을 원한다면 포즈를 최대한 똑같이 만들어주자. 난 귀찮아서 허벅지랑 팔만 대충 맞춰줬는데 유튜브를 찾아보니 손가락 각도까지 변경하시는 분도 봤다.

 

 

 

 

 

 

5. 이제 모든 준비가 끝났다. 리타겟을 원하는 애니메이션 우클릭 후 애님 에셋 리타깃>애님 에셋 복제 후 리타깃을 누른다.

 

 

    그러면 스켈레톤 선택 창이 뜨는데 이 곳에서 새 에셋 이름과 저장할 경로 선택후 리매핑 시킬 스켈레톤으로 언리얼 모델을 선택해 리타깃을 누르면 끝이다. 간혹 프리뷰 메시를 설정해야 한다는 오류가 발생하는데 Mixamo 스켈레톤>프리뷰 씬 세팅>메시>Priview Mesh로 가서 설정 적용을 눌러주면 해결된다. 

 

 

 

 

 

 

마무리

 

    원하는 대로 완벽 매핑이 되는 애니메이션이 있는 반면 오류가 발생하기도 한다. 종아리 메시가 없어져버린다던지 하반신이 땅에 박힌채로 있기도 하다. 이는 대부분 리타깃 메니져에서 해결해주면 된다. 종아리 메시가 없어졌다면 리타겟 메니져에서 본 매핑을 제대로 했는지 두 모델의 스켈레톤 본을 비교해가며 확인하자. 하반신이 땅에 박혔다면 root가 Hips로 설정된 문제이므로 None으로 바꾸어 설정해주면 해결된다. 끝~~!!!!