1. 문제 발생 (Problem)
유니티(Unity)용으로 제작된 3D 모델(FBX)을 언리얼 엔진(Unreal Engine)으로 임포트했을 때, 모델이 바닥에 누워 있거나 방향이 반대로 돌아가는 현상 발생.
2. 원인 분석 (Root Cause)
두 엔진이 사용하는 **좌표계(Coordinate System)**의 기준이 다르기 때문.
| 구분 | 유니티 (Unity) | 언리얼 (Unreal) |
| Up 축 (위) | Y-Up | Z-Up |
| Forward 축 (앞) | Z-Forward | X-Forward |
| 좌표계 방식 | 왼손 좌표계 | 왼손 좌표계 |
- 결과: 유니티의 Y-Up 모델을 그대로 언리얼에 넣으면 유니티의 위쪽(Y)이 언리얼의 옆쪽이 되어 모델이 눕게 됨.
3. 해결 프로세스 (Solution)
단계 1: 블렌더(Blender)에서 모델 분리 및 정리
하나의 FBX 파일에 여러 오브젝트(예: 여러 종류의 모자)가 합쳐져 있는 경우:
- By Loose Parts: Edit Mode(Tab) -> A(전체 선택) -> P -> By Loose Parts를 통해 메쉬 덩어리별로 오브젝트 분리.
- Origin 정리: 각 오브젝트 선택 후 우클릭 -> Set Origin -> Origin to Geometry를 통해 피벗 포인트를 모델 중앙으로 초기화.
단계 2: 월드 원점(0, 0, 0) 정렬
언리얼에서 에셋을 소환했을 때 조절자(Gizmo)와 모델이 따로 노는 현상을 방지하기 위해:
- 모델을 월드 중심(0, 0, 0)으로 이동.
- Apply Transform (핵심): Ctrl + A -> All Transforms 실행.
- 이 과정을 거쳐야 모델의 위치/회전/스케일 값이 각각 (0,0,0)과 (1,1,1)로 박제되어 엔진에서 오류가 없음.
단계 3: 내보내기(Export) 설정
블렌더에서 FBX로 내보낼 때 축 설정을 수동으로 맞춰줌:
- Forward: -Z Forward
- Up: Y Up
- (참고: 이렇게 내보내면 언리얼 임포터가 '아, 이 파일은 Y가 위구나'라고 인식하여 언리얼의 Z-Up에 맞춰 자동 변환해줌.)
4. 주요 트러블슈팅 팁
- 메쉬 머지(Merge)와 텍스처: 여러 오브젝트를 Ctrl + J로 합쳐도 UV 데이터는 유지되므로 텍스처는 깨지지 않음. 단, 언리얼에서 여러 개의 머티리얼 슬롯(Element)으로 나타남.
- 배치 익스포트(Batch Export): 모델이 많을 경우 파이썬 스크립트를 사용하여 선택된 오브젝트들을 각각의 FBX 파일로 자동 저장할 수 있음.
- 창 사라짐 문제: 블렌더에서 Preferences 창이 뜨지 않을 때는 에디터 타입 아이콘을 클릭해 해당 영역을 직접 Preferences 창으로 전환하여 해결 가능.
5. 회고 (Retrospective)
3D 에셋 이식의 핵심은 단순히 파일을 옮기는 것이 아니라 **"데이터의 기준점(Pivot)과 축(Axis)을 일치시키는 것"**이다. 특히 Apply Transform을 습관화하여 엔진에서 발생할 수 있는 스케일 및 회전 오류를 원천 차단하는 것이 중요하다.
'내배캠 TIL' 카테고리의 다른 글
| [내배캠 TIL 260224] C++ std::sort 커스텀 비교 함수 구현하기 (0) | 2026.02.24 |
|---|---|
| [내배캠 TIL 260211] Unreal GAS 기반 Enemy AI 시스템 설계 (0) | 2026.02.11 |
| [내배캠 TIL 260205] Unreal Enhanced Input 헤더 인식 이슈 (0) | 2026.02.05 |
| [내배캠 TIL 260203] Unreal Engine 타이머, 람다식, UObject 수명 관리 이슈 (0) | 2026.02.03 |
| [내배캠 TIL 260130] Unreal TA PBR 텍스처 요소 정리 (0) | 2026.01.30 |