멈추지 않고 끈질기게

[Unreal] Mixamo 모델 및 애니메이션 수정해서 사용하기 본문

Unreal

[Unreal] Mixamo 모델 및 애니메이션 수정해서 사용하기

sam0308 2024. 7. 30. 11:03

※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.

 

※ 해당 포스팅은 Unreal 5.4.1 버전을 기준으로 작성되었습니다.

 

 

 

0. 서론

 Mixamo는 Adobe에서 제공하는 무료 모델링 및 애니메이션 사이트로, Adobe 계정만 있으면 무료로 사용할 수 있어 언리얼 엔진 사용자 입장에서 굉장히 유용한 사이트입니다. 저 또한 팀 프로젝트를 진행하면서 많이 사용했으며, 현재 진행하고 있는 사이드 프로젝트에서도 사용하고 있습니다.

 

 다만 해당 사이트에서 제공하는 스켈레탈의 경우, 언리얼에서 기본으로 제공하는 스켈레탈과 구조가 다소 다릅니다. 이번 포스팅은 이로 인해 발생하는 이슈와 해결책에 대한 내용입니다.

 

 

1. Mixamo 모델 및 애니메이션 사용하기

 우선 Mixamo 사이트로 이동한 뒤, 어도비 계정으로 로그인합니다. 

https://www.mixamo.com/

 

Mixamo

 

www.mixamo.com

 

 좌측 상단에서 Character 탭을 선택한 후 우측의 다운로드 버튼을 누르면 원하는 모델링의 스켈레탈 메시를 다운 받을 수 있습니다. 포맷과 포즈를 선택할 수 있는데, 디폴트 값 그대로 받아도 언리얼에서 사용하는 데 지장은 없습니다.

 

사진 1. Mixamo 스켈레탈 메시 다운로드

 

 

 애니메이션은 좌측 상단에서 Animation 탭을 선택한 후, 마찬가지로 원하는 애니메이션을 선택하고 다운로드를 누르면 됩니다. 참고로 캐릭터 탭에서 선택한 모델링으로 해당 애니메이션을 보여주니, 원하는 모델링으로 애니메이션을 확인한 후 받으시는걸 추천드립니다. 마찬가지로 다운로드 옵션들이 나오는데, 일단 디폴트 값으로 받아도 언리얼에서 사용하는 데 지장은 없습니다.

사진 2. Mixamo 애니메이션 다운로드

 

 

 스켈레탈 메시와 애니메이션 모두 fbx 파일로 다운로드되지만, 언리얼 프로젝트에 임포트 할 때는 약간 다르게 해 주어야 합니다. 우선 메시 파일을 언리얼 콘텐츠 브라우저에 드래그하면 임포트 옵션 창이 나오는데, 여기서 옵션을 조정하지 않고 그대로 Improt All을 선택하시면 스켈레톤과 스켈레탈 메시, 물리정보 에셋, 머티리얼이 생성됩니다. 이후에 애니메이션 파일들을 드래그 한 뒤, 옵션 창에서 import mesh를 체크 해제해주시고 스켈레톤을 방금 생성한 스켈레톤 파일로 선택한 뒤 Improt All 해주시면 애니메이션 시퀀스 파일들이 생성됩니다.

사진 3. (좌) 스켈레탈 메시 import 시 / (우) 애니메이션 import 시

 

 

 이렇게 하면 Mixamo에서 제공하는 모델링 및 애니메이션 파일들을 언리얼에서 사용할 수 있습니다. 꽤 괜찮은 퀄리티의 모델링과 애니메이션들을 무료로 사용할 수 있으므로 굉장히 유용하지만, 막상 사용해보면 스켈레톤 구조상의 차이로 인한 이슈가 발생할 수 있습니다.

 

 

2. 루트 본(Root Bone)  

 위 과정대로 import한 모델링과 애니메이션을 사용해보면 잘 적용되지만, 막상 사용해보면 어색한 부분이 많이 보이게 됩니다. 대표적으로 걷기나 달리기 모션의 경우, 코드상에서 캐릭터의 위치를 조정하기 때문에 애니메이션 자체의 움직임을 제한하기 위해 Force Root Lock 옵션을 체크하곤 합니다. 그런데 Mixamo에서 받은 달리기 애니메이션에서 해당 옵션을 체크하면 허리 아래로 다리가 부자연스럽게 떠서 움직이는 모습을 확인할 수 있습니다.

사진 4. Force Root Lock 적용한 애니메이션

 

 

 또한 구르기의 경우, 달리기와 반대로 애니메이션의 움직임을 실제 캐릭터의 위치에 적용해주는 것이 편리합니다. 이런 경우 Enable Root Motion 옵션을 체크하여 애니메이션의 움직임이 실제 캐릭터의 위치 정보(콜리전 포함)를 조정할 수 있도록 해주면 되는데, Mixamo에서 가져온 구르기 애니메이션을 해당 옵션을 체크해서 사용해보면 위 사진보다도 훨씬 기괴한 결과를 확인할 수 있습니다.

사진 5. Enable Root Motion 적용한 애니메이션

 

 

 이런 이슈가 발생하는 원인은 Root Bone의 차이에 있습니다. 우선 언리얼에서 기본적으로 제공하는 3인칭 캐릭터의 스켈레톤 구조를 확인해보면 다리 사이의 바닥 지점에 루트 본이 존재하는 것을 확인할 수 있습니다. 언리얼에서 제공하는 루트 본 관련 옵션들은 해당 구조를 기반으로 적용되기 때문에, 비슷한 본 구조를 가진 스켈레톤 사용 시에는 해당 옵션들을 사용해도 큰 이슈가 발생하지 않습니다.

사진 6. SK_Mannequin의 루트 본

 

그러나 Mixamo에서 받은 스켈레톤의 본 구조를 확인해보면 해당 위치에 루트 본이 없고, 최상위 본인 Hips가 허리즈음에 존재하는 것을 알 수 있습니다. 

사진 7. Mixamo에서 받은 스켈레톤의 본 구조

 

 

 따라서 위와 같은 애니메이션의 루트 본 관련 옵션이 자연스럽게 적용되려면, 다운로드 받은 스켈레톤의 본 구조에 언리얼 기본 스켈레톤과 비슷하게 루트 본을 추가해줄 필요가 있습니다.

 

 

3. Blender를 이용해서 루트 본 심어주기

 루트 본을 심어주기 위해서는 3D 모델링 툴을 사용해나 하는데, 저는 무료로 사용 가능한 Blender를 이용하기로 했습니다. 그런데 솔직히 말씀드리자면 블렌더에서 루트 본을 추가하는 데 까지는 성공했는데, 이를 .fbx 파일로 추출한 뒤에 언리얼에 import  하려고만 하면 에러가 나서 실패했습니다. 옵션의 문제인가 싶어서 이것저것 검색하면서 시도해보았지만 계속 실패했었는데, 한 튜토리얼 영상에서 블렌더에 특정 애드온을 추가하여 사용하는 방식을 소개하여 이를 따라하여 성공하였습니다.

 

https://www.youtube.com/watch?v=f32fzAuJyZU

영상 1. Mixamo 스켈레톤에 Root 추가하기

 

 해당 영상에서 루트 본을 추가하는 과정을 대략적으로 설명하자면 다음과 같습니다(상세 정보는 상기 영상에서 확인).

 

   1. Mixamo 스켈레톤에 루트 본을 추가하기 위한 블렌더 애드온 다운로드
      (상기 영상 주소의 상세 정보에서 Github 주소 확인)

   2. 블렌더 실행 후 1에서 받은 애드온 추가

   3. 애드온 옵션에서 입출력 경로 및 변환 옵션 설정 후 모델링 및 애니메이션 Convert

   4. 언리얼 프로젝트에 3에서 변환한 .fbx 파일들 import한 후 사용

 

 영상에 자막이 없는 점이 다소 아쉽지만, 해당 이슈의 원인부터 블렌더 애드온 설치 및 적용, 옵션 설정, (저는 사용하지 않았지만) 특정 애니메이션을 위한 캐릭터 무브먼트 조절 등 자세하게 소개하고 있습니다. 위 과정을 통해 루트 본이 심어진 스켈레톤 및 애니메이션을 사용할 경우, 다음과 같이 자연스럽게 수정된 모습을 확인할 수 있습니다. Mixamo를 자주 이용하시는 분들은 참고하시면 좋을 듯 합니다.

 

사진 8. 루트 본이 추가된 Mixamo 스켈레톤
사진 9. 루트 본 추가 후 정상화 된 애니메이션