내배캠 TIL

[내배캠 TIL 260209] Unity 모델 에셋의 Unreal Engine 이식 및 좌표계 트러블슈팅

xodn246 2026. 2. 9. 21:32

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 파일에 여러 오브젝트(예: 여러 종류의 모자)가 합쳐져 있는 경우:

  1. By Loose Parts: Edit Mode(Tab) -> A(전체 선택) -> P -> By Loose Parts를 통해 메쉬 덩어리별로 오브젝트 분리.
  2. Origin 정리: 각 오브젝트 선택 후 우클릭 -> Set Origin -> Origin to Geometry를 통해 피벗 포인트를 모델 중앙으로 초기화.

단계 2: 월드 원점(0, 0, 0) 정렬

언리얼에서 에셋을 소환했을 때 조절자(Gizmo)와 모델이 따로 노는 현상을 방지하기 위해:

  1. 모델을 월드 중심(0, 0, 0)으로 이동.
  2. 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을 습관화하여 엔진에서 발생할 수 있는 스케일 및 회전 오류를 원천 차단하는 것이 중요하다.