예지의 개발 로그포스 (Yeji's Log Force)

[Unity] Animate Characters #2 - Retargeting(Animation을 3D Humanoid Model에 적용) 본문

[Unity] Projects & Study

[Unity] Animate Characters #2 - Retargeting(Animation을 3D Humanoid Model에 적용)

Yeji Heo 2023. 9. 3. 21:45

하나의 애니메이션을 Humanoid타입인 여러 모델에 편리하게 호환 가능한 'Retargeting'을 해보려고 한다.

즉, Mixamo의 3D모델이 아닌, 내가 가지고 있는 3D 모델(Humanoid)에 다운로드한 애니메이션을 적용해본다!

 

다운로드한 fbx파일은 유니티에서 이런 식으로 확인할 수 있다.

화살표를 눌러 항목을 열어보면 이렇게 애니메이션이 포함되어 있다.

 


 

우선 이 애니메이션을 그냥 적용해보자.

대충 Retargeting Controller라는 Animator Controller를 만들어 임의로 애니메이션 클립 하나만 연결해보겠다

다운로드한 애니메이션을 Defalult Animation State로서 설정했다.

 

이제 이 컨트롤러를 움직이고자 하는 3D모델의 Inspector에 연결해준다.

Animator의 Controller부분에 Retargeting Controller가 연결되었다.

 

 

결과는?!?

 

 

Play해보면 예상처럼 동작하지 않고, 이런 어정쩡한 자세를 취하게 된다ㅠ

 


 

해결 방법 중 간단한 것은 Rig의 Animation Type을 Humanoid로 바꿔서,

Mecanim(Unity Animation System)의 기능인 Retargeting을 활용하는 것이다.

 

Animation Type은 아래와 같이 네 가지 중 선택할 수 있다.

- None: 말 그대로 Rig를 비활성화

- Legacy: 몇 년 전에 쓰던 시스템. Unity의 original Animation System으로서 빠르고 가볍지만, 유지보수 어렵다고 함 

- Humanoid: 15개 이상의 뼈대가 사람의 골격과 비슷하게 구성된 구조체(사람, 오크, 엘프, 로봇, 에일리언 등..)

- Generic: Humanoid가 아닌 모든 모델. Mixamo나 Blender 등에서 fbx파일을 import하면 이 Rig가 Default로 설정된다.

 

 

기본값은 Generic이다보니, 캐릭터의 Animation 탭을 보면 Hips, Leg 등 뼈가 Missing된 것을 확인할 수 있다.

Humanoid로 바꿔주면 모델의 골격 구조 사이에 연관성을 제공 받을 수 있기 때문에

비교적 편리하게 다른 캐릭터 모델에 호환이 가능하다! 

Humanoid로 변경하여 Apply하고, fbx의 애니메이션을 다시 연결해보면 뼈가 알아서 연결 되어있다.

(정확하진 않을 때도 있어서 Rig Configure에서 어느정도 직접 만져줘야 하는 경우도 있다고 한다)

 

무사히 Retargeting 끝!


참고 자료

https://www.youtube.com/watch?v=BEZHVYk6Fa4&list=PLwyUzJb_FNeTQwyGujWRLqnfKpV-cj-eO&index=6 

https://docs.unity3d.com/2021.1/Documentation/Manual/GenericAnimations.html

 

 

 

Comments