Unity

GLTF 패키지

MuscleDeveloper5683 2025. 10. 6. 22:28
728x90
SMALL

 

Unity에서 전통적으로 Unity를 포함한 대부분의 게임 엔진에서 3D 모델을 사용할 때 가장 흔하고 폭넓게 사용되는 형식은 FBXOBJ

의 형식으로 사용하고 있다.

 

 

3D 모델 파일 형식 비교

 

  FBX (Filmbox) OBJ (Wavefront OBJ) GLB/glTF (GL Transmission Format)
파일 구조 바이너리 또는 ASCII ASCII (텍스트 기반) GLB: 바이너리 (단일 파일) / glTF: JSON + 바이너리 + 텍스처 (다중 파일)
메인 용도 전문 제작 및 파이프라인 교환 (애니메이션이 있는 복잡한 씬) 단순 기하학 교환 (가장 보편적인 기본 메시) 웹/런타임 효율적 전송 (가볍고 빠른 로딩)
애니메이션/리깅 완벽 지원 (업계 표준) 지원 불가 (오직 메시만) 완벽 지원 (씬 및 애니메이션 데이터 포함)
파일 크기 매우 어려움 (전송 비효율적) 🔺 제한적  최적화됨 (웹 표준)
웹 사용 용이성 최고 (애니메이션 에셋의 표준)  양호 (정적인 단순 에셋)  필수 (런타임 로딩, glTFast 사용 시)

 

 

 

나의 케이스에선 원하는 3D모델이 glb파일의 형식일 때 이 고민이 시작이 되었고 해당 glb파일을 적용 시키기 위해 이글을 쓰며 공부해보기로 했다.

 

Glb 란? - Glb 형식의 파일은 웹 기반에서 큰 장점을 가지고 있으며 GLB 파일은 웹 기반 환경뿐만 아니라 가장 효율적이고 빠르게 3D 모델을 로딩하고 배포해야 하는 모든 환경에서 사용되는 차세대 표준 형식이다. (3D 모델을 구성하는 모든 정보(메시, 재질, 텍스쳐, 애니메이션)를 단하나의 압축된 파일에 담아 저장한다.)

 

이러한 단일 파일 구조 덕분에 GLB는 다음과 같은 상황에서 주로 사용된다.

빠른 로딩과 런타임 효율성이 필요할 때

  • 웹 로딩 (Web Loading): 웹페이지에서 3D 모델을 보여줄 때, 여러 개의 파일(glTF의 경우 .json, .bin, .jpg 등)을 따로 불러올 필요 없이 단 하나의 GLB 파일만 로드하면 되므로 로딩 속도가 가장 빠르다.
  • 런타임 로딩 (Runtime Loading): Unity나 Unreal 같은 게임 엔진에서 게임 실행 중(Runtime)에 사용자가 업로드하거나 외부 서버에서 모델을 다운로드하여 동적으로 불러와야 할 때, 가볍고 통합된 GLB가 가장 이상적이다.

간편한 배포와 에셋 관리가 중요할 때

  • 단일 파일 관리: 텍스처와 데이터가 모두 파일 하나에 들어있어 에셋 관리가 매우 간편하며, 파일 전송(이메일 첨부, 서버 업로드) 시 누락되는 데이터가 없어 배포가 용이하다.
  • 파일 크기 최적화: 구조 자체가 효율적인 전송을 위해 설계되었기 때문에, FBX보다 파일 크기가 작고 필요하다면 Draco 압축까지 적용하여 크기를 더 줄일 수 있다.

AR/VR 및 메타버스 환경

  • 모바일 기기나 VR 헤드셋처럼 리소스가 제한적인 환경에서 모델을 빠르게 렌더링하고 메모리를 효율적으로 사용해야 할 때 GLB가 표준으로 채택되고 있다.

 

Unity에서 glTF 유틸리티는 glTF(GL Transmission Format) 파일을 Unity 프로젝트로 가져오거나(Import) Unity 씬의 3D 모델을 glTF 파일로 내보내는(Export) 데 사용되는 도구 모음을 사용해보자.

 

현재 Unity에서 공식적으로 권장하고 널리 사용되는 패키지는 Unity glTFast이다. 이 외에도 GLTFUtility나 UnityGLTF와 같은 다른 서드파티 라이브러리들도 있다. 블로그 작성을 위해 가장 최신이며 공식적으로 지원받는 glTFast를 기준으로 적용해보자.

 

유니티에서 Glb 파일 사용해보기

 

1. Window -> Package Manager -> Packages: Unity Registry 선택

2. glTFast를 검색하거나, + 버튼을 클릭하여 Add package by name을 선택한 후 com.unity.cloud.gltfast를 입력하고 Add

 

 

 

3. .gltf 또는 .glb 파일을 준비 후 해당 파일을 Unity 프로젝트의 Assets 폴더로 드래그 앤 드롭

4. glTFast는 이 파일을 자동으로 감지하여 Unity 네이티브 프리팹으로 임포트 한다.

 

 

 

 

런타임 임포트 (스크립트를 사용한 동적 로딩)

 

GltfAsset 컴포넌트 사용 (쉬운 방법)

  1. 빈 게임 오브젝트를 생성한다.
  2. 여기에 GltfAsset 컴포넌트를 추가한다.
  3. Inspector 창의 Url 필드에 glTF 파일의 로컬 경로 또는 웹 URL을 입력한다. (예: file:///path/to/model.glb 또는 https://example.com/model.glb)
  4. 재생 버튼을 누르면 해당 위치의 glTF 모델이 로드된다.

 

 

 

스크립트 API 사용 (유연한 방법)

비동기적으로 로드하는 예시

1. GltfLoader 스크립트 생성

2. 스크립트 작성

 

 

 

결과

 

 

 

 

크로노스 그룹에서 제공하는 gltf의 서드파티 라이브러리

 

https://github.com/KhronosGroup/glTF-Sample-Models/tree/main

 

GitHub - KhronosGroup/glTF-Sample-Models: glTF Sample Models

glTF Sample Models. Contribute to KhronosGroup/glTF-Sample-Models development by creating an account on GitHub.

github.com

 

 

유니티에서 Glb로 Export 하기

 

1. 테스트를 위해 Cube생성

2. Cube 프리팹화

3. Export Gltf -> 맞는 형식으로 Export

 

 

 

 

 

728x90