SSUNBORI Archive

3d Generalist를 꿈꾸는 Modeler ssunbori 입니다. 생성형 ai, 모델링 툴, 게임 엔진을 주로 공부하고 있습니다.

Artstation 자세히보기

UNITY/BLENDER-UNITY

[Unity] Blender에서 내보낸 Rig 뼈가 뒤집혀 보일 때(FBX Export 오류)

ssunbori 2024. 6. 27. 14:00

목차

    문제상황

    팀프로젝트로 유니티 에셋 스토어에서 구매한 에셋을 블렌더로 불러와서, Mesh 수정(UV, WeightPainting)을 하고 다시 Unity로 내보내니 Animator를 붙여서 다시 실행했을 때 메쉬가 뒤집혀 보이는 현상이 발생했다.

    메쉬가 구겨진 모습

    의심해본 원인

    1. FBX > Blender로 Import할 때 Axis 값에 문제가 있어서
    2. FBX > Blender로 Import할 때 Animation 데이터도 함께 불러와서
    3. FBX > Blender로 Import한 Armature의 뼈 축에 문제가 있어서
    4. FBX > Blender로 Import한 Armature 일부가 연결되어 있지 않아서(일부는 Armature의 뼈가 아니라 Empty 좌표로 불러와짐)
    5. FBX > Blender로 Import한 Armature의 일부 뼈가 뒤집혀 있어서
    6. Unity 에디터에 있는 메쉬의 Vertex Group과 FBX로 불러온 메쉬의 Vertex Group이 달라서
    7. Blender > Unity 로 Export할 때 Axis 값에 문제가 있어서
    8. 메쉬의 Weight 값에 문제가 있어서
    9. Unity Inspector 창에서 Axis값 혹은 Unit Size 설정에 문제가 있어서

    별의별 의심을 하고 이리 저리 만져가며 Import, Export를 반복했지만 그나마 괜찮게 불러와진 경우도 애니메이션을 재생해 보면 엉덩이와 골반쪽 뼈가 뒤집힌 것 같은 모습이 되었다.

    해결방법

    유튜브와 구글을 열심히 뒤져 나와 비슷한 질문을 발견했다. 답변도 달려있었는데, 요약하자면 Armature의 뼈들에 초기 위치값이 없어서 제대로 된 Pose가 설정되지 못한다는 것. 이를 해결하기 위해서는 Armature의 각 뼈들에 Keyframe을 추가하면 된다고 한다. 나는 에셋을 불러올 때 Empty 좌표에도 Keyframe이 있어서 이것도 그대로 유지하면서 내보냈다.

    오브젝트와 뼈들에 Keyframe을 추가한 모습
    FBX 내보낼 때 설정창

    임시 Keyframe을 길게 넣으면(기존 에셋은 1부터 100프레임까지 적용되어 있었음) Unity로 불러와서 Animation을 재생했을 때 애니메이션 재생 전에 그만큼 딜레이가 생겨서, 1프레임에만 가짜 포즈를 적용해주었다.

    내보낸 FBX에 Animator 컴포넌트를 붙여 재생한 모습

    내보낸 FBX에 Animator 컴포넌트를 붙여 재생해 보니 에셋과 동일하게 잘 재생이 되는 모습을 확인할 수 있었다.