IK 릭 & 리타기터 생성
두 개의 다른 Skeleton을 가진 모델을 연동하기 위해서는 리타기터(Retargeter) 가 필요하다.
그리고 리타기터를 사용하기 위해서는 각 모델의 IK 릭이 필요하다.
각각의 스켈레탈 메시를 우클릭라고, 생성 - IK 릭 생성 을 클릭한다.
생성한 IK 릭에서 우클릭하면 IK 리타기터 생성을 클릭한다.
생성한 리타기터를 더블클릭해서 리타기터 창을 열고 타깃 IK 릭 에셋에 미나토 아쿠아의 IK 릭을 지정한다.
그러면 아래 타겟 프리뷰 메시는 자동으로 지정된다.
A Pose 에서 T Pose로 변환
이렇게 가져온 두 모델을 프리뷰 세팅으로 조절해서 나란히 보면 포즈가 다르다는걸 알 수 있다.
Mixamo는 T Pose 를 가져왔으니 T Pose 이지만, 미나토 아쿠아의 포즈는 A Pose라고 불리는 자세이다.
Mixamo의 애니메이션은 T Pose를 기준으로 만들어져 있 나중에 애니메이션을 적용해보면 팔의 위치가 안 맞는 문제가 있다. 먼저 이걸 해결하고자 한다.
이 내용은 아래 유튜브를 참고했다.
https://youtu.be/hGx6lJaxP_E?si=IfRU7HCcj2_DtQPZ
다시 Blender로 돌아가서 Pmx2Fbx로 컨버팅했던 FBX를 다시 불러온다.
본을 선택하고 왼쪽 위의 Object Mode를 Pose Mode로 변경한다.
양쪽 어깨 쪽의 본을 선택하고 Rotate 툴로 T Pose가 되도록 수정해준다.
( Bone Property에서 Mode 를 XYZ Euler로 변경하고 Rotation Z를 오른쪽을 35도, 왼쪽을 -35도로 해주면 맞더라. 모델에 따라 다를수 있다.)
다시 Object Mode로 돌아가서, Bone 안에 있는 Mesh를 선택해준다.
Modifier에서 Bone의 Root가 선택된걸 보고, Duplicate -> 복사된걸 Apply 해준다. 그럼 다시 원래대로 돌아온것처럼 보이는데,
모델은 이렇게 Bone과 Mesh가 틀어진 상태가 된다.
이 상태로 다시 Pose Mode로 돌아가서, Ctrl + A를 입력, Apply Pose as Reset Pose를 클릭하면 Mesh가 Bone의 위치로 돌아온다.
이대로 앞써 했던대로 Export를 해준다.
Unreal Engine5 에서는 불러왔던 스켈레탈 메시를 열고, 메시 리임포트를 클릭한다.
리타기터에서 다시 보면 T Pose로 동일해진걸 확인 할 수 있다.
IK 리타기팅 설정하기
여기부터는 실험과 노가다 영역이다. MMD 모델에 따라 스켈레톤 구조가 다를수도 있기 때문에 적절한 위치와 값을 지정해주어야 한다. 여기서는 내가 미나토 아쿠아 MMD와 Mixamo 모델을 매칭했던 과정을 서술하겠다.
기본적으로 해주어야 하는 것을 설명하도록 하겠다.
1) 리타겟 루트 설정하기
각 IK 릭에서 기준이 될 루트를 설정해야 한다.
IK_Mixamo의 경우
IK_Mixamo에서는 Hips를 루트로 설정한다.
오른쪽 하단의 IK 리타게팅 탭에서 '+새 체인 추가'를 선택하여, 새 리타깃 체인을 추가한다.
먼저 이름은 Root로 시작해서 하나씩 만들어 가면 된다.
화면에서 본의 위치와 트리를 잘 확인하면서 연결한다.
IK_미나토아쿠아의 경우
같은 방법으로 IK_미나토아쿠아에서도 IK리타깃 체인을 설정한다.
IK_미나토아쿠아 에서는 Bone-상반신을 루트로 설정한다. (여길 설정했을 때 가장 자연스러웠다)
당연히 IK_Mixamo와 스켈레톤 트리 구조와 본 이름들이 다르기 때문에 적당한 위치를 잡아줘야 한다.
리타깃 이름은 IK_Mixamo에서 지정한 이름과 틀을 그대로 쓰고, 이에 맞춰서 본을 잡아간다.
손이나 발은 Hand 나 Foot등으로 뭉뜽그려서 잡았다.
Root가 중요한데, MMD의 가장 처음 본은 지면에 있고, Mixamo 모델은 사타구니에 있기 때문에 위치가 안 맞는다.
MMD 모델의 사타구니에 해당하는 Bone-그룹 을 시작 본으로 잡아주니 어느정도 자연스러웠다.
2) 리타깃 체인 매핑
이제 이제 생성했던 리타깃터로 돌아온다.
오른쪽 아래에서 채인 매핑에서 아까 IK_에서 지정한 체인들을 동인하게 배치해준다. 두 IK에서 체인 이름을 똑같이 해주었으니, 같은 것 배치해주면 된다.
3) 애니메이션 테스트
에셋 브라우저 탭을 열어보면 소스인 IK_Mixamo의 애니메이션이 나온다.
더블 클릭해서 재생해보면, 타겟인 IK_미나토아쿠아 모델도 프리뷰에서 같이 움직이는 것을 볼수있다.
지금은 기초적인 세팅만 해서 약간 부자연스러울 수 있다. 더 자연스럽게 하기 위해서 앞으로 추가적인 내용을 연구해볼 예정이다.
4) 리타깃 애니메이션 추출
해당 애니메이션을 선택하고, 위에 있는 '선택된 애니메이션 익스포트'를 클릭하면 타겟에 지정된 스켈레톤에 맞게 애니메이션이 추출된다.
5) 레벨에 배치해보기
애니메이션을 추출했으니 이제 다양한 동작에서 활용할 수 있을 것이다. 간단하게 레벨에서 MMD 모델이 Mixamo에서 가져온 애니메이션으로 움직이는지 확인해본다.
먼저 MMD 스켈레톤 모델을 레벨에 배치한다.
배치한 액터에서 '애니메이션'-'애니메이션 모드'를 'Use Animation Asset으로 바꾼다.
그리고 아래에 '플레이할 애님' 을 위에서 추출한 애니메이션으로 적용한다.
레벨을 플레이해보면 춤 추는 미나토 아쿠아를 볼수 있다.
'Engine > Unreal' 카테고리의 다른 글
MMD 모델을 Unreal Engine5에 가져오기 2 - Mixamo 애니메이션 가져오기 (0) | 2024.08.23 |
---|---|
MMD 모델을 Unreal Engine5에 가져오기 1 - PMX를 FBX로 변환하기 (0) | 2024.08.20 |