3D Tiles
실무에서 3D 공간 데이터를 다룰 때 필요한 지식을 정리한 섹션이다. OGC 3D Tiles 표준의 이론, Cesium Ion 타일링 파이프라인(3D Model / BIM / 3D Capture), 텍스처 최적화, 그리고 tile content의 핵심인 GLB까지 다룬다. 업데이트: 2026-05-14
핵심 요약
| 구분 | 내용 |
|---|---|
| 📖 정의 | OGC 3D Tiles 표준과 Cesium Ion SaaS 타일링 파이프라인을 설명한 문서 모음 |
| 💡 핵심 | 3D Tiles는 “거리·시야각에 따라 필요한 부분만 점진적으로 로드”하는 대용량 3D 스트리밍 규격 |
| 🎯 대상 | 3D GIS, 디지털 트윈, BIM 시각화, 드론 매핑을 다루는 개발자 |
| ⚠️ 주의 | 1.0 (b3dm/i3dm/pnts)은 레거시. 신규 파이프라인은 1.1 (glTF + EXT_*) 기준으로 설계해야 한다 |
목차
- 1.0 3D Tiles 개요 (Overview)
- 2.0 Cesium Ion 파이프라인
- 3.0 텍스처 최적화 (Atlas & Bin Packing)
- 4.0 GLB / glTF
- 빠른 선택 가이드
1.0 3D Tiles 개요 (Overview)
3D Tiles 표준의 이론, 구성 요소, 버전별 차이를 다룬다.
| 문서 | 내용 |
|---|---|
| 1.1 3D Tiles란 무엇인가 | 표준 정의, 2D 타일맵과의 차이, HLOD 원리, Tileset.json 구조, boundingVolume / refine / geometricError / SSE, 콘텐츠 포맷(b3dm·i3dm·pnts·cmpt·glTF), Implicit vs Explicit Tiling |
| 1.2 3D Tiles 1.0 vs 1.1 | 1.0의 한계, 1.1에서 도입된 glTF 직접 사용, EXT_mesh_features / EXT_structural_metadata / EXT_instance_features, Implicit Tiling 표준화, multiple contents, 1.0 → 1.1 마이그레이션 주의점, 렌더러 지원 현황 |
2.0 Cesium Ion 파이프라인
Cesium Ion 클라우드 서비스가 제공하는 6종 Tiler 중, 실무에서 가장 자주 다루는 3가지(3D Model · BIM · 3D Capture)에 집중한다.
| 문서 | 내용 |
|---|---|
| 2.1 Cesium Ion 파이프라인 개요 | Ion SaaS 전체 구조, 6종 Tiler 분류, 처리 상태 코드(NOT_STARTED → COMPLETE), 처리 실패 사유, Self-Hosted vs Cloud, 가격 정책 |
| 2.2 3D Model · BIM · 3D Capture 비교 | 각 Tiler의 입력 포맷·LOD 방식·메타데이터 처리·출력 표준, Reality Tiler V2 성능 벤치마크, Design Tiler의 IFC 속성 보존, 상황별 선택 가이드 |
3.0 텍스처 최적화 (Atlas & Bin Packing)
3D 타일링에서 세부 glb의 용량을 줄이는 핵심은 UV island를 잘 패킹해 텍스처 아틀라스를 만드는 것이다. 이 섹션은 그 작업의 이론부터 도구까지 다룬다.
| 문서 | 내용 |
|---|---|
| 3.1 Bin Packing 이론과 2D 사각형 패킹 알고리즘 | Bin Packing 정의·NP-hard성, 1D/2D 차이, 오프라인 vs 온라인, FFD/BFD, Shelf / Guillotine / MaxRects / Skyline / Floor-Ceiling 알고리즘 비교, Power-of-Two와 회전 처리 |
| 3.2 UV Island와 Texture Atlas | UV mapping / island / seam / texel / texel density / padding / bleed / gutter / UDIM / pack ratio 전 용어 정의, LSCM · ABF · SLIM · BFF unwrapping 알고리즘, atlas packing 5단계 흐름 |
| 3.3 Python · Blender 도구와 라이브러리 | xatlas-python / rectpack / trimesh / bpy / Pillow / libigl, Blender 내장 도구 + TexTools + UVPackmaster, standalone(xatlas C++ / RizomUV / Houdini), gltf-transform CLI, 실전 워크플로우 스크립트 |
4.0 GLB / glTF
3D Tiles 1.1은 tile content로 GLB를 직접 채택했다. 따라서 GLB/glTF의 구조·도구·확장은 3D Tiles 파이프라인의 핵심 지식이다.
| 문서 | 내용 |
|---|---|
| 4.1 GLB란 무엇인가 | 정의, 배경, glTF 2.0 / ISO 12113, glTF vs GLB, 전체 아키텍처, 좌표계, 포맷 비교, 플랫폼 지원, 강점·한계 |
| 4.2 GLB 구조와 용어 | GLB 바이너리 레이아웃, JSON 최상위 컨테이너, 씬 그래프 / 데이터 3계층(buffer·bufferView·accessor) / 머티리얼 / Sampler / 애니메이션 / 확장 용어 사전, 렌더링 파이프라인 7단계, 디버깅 함정 |
| 4.3 GLB 도구와 실전 예제 | obj2gltf / gltf-transform / Blender / pygltflib 사용법, Three.js·Babylon.js·CesiumJS 로드 코드, CesiumJS Sampler Mipmap aliasing 사례(obj2gltf 보정 워크플로우), 전체 최적화 파이프라인 |
| 4.4 GLB와 3D Tiles 1.1 통합 | b3dm/i3dm/pnts → GLB+EXT 매핑, EXT_mesh_features / EXT_structural_metadata / EXT_mesh_gpu_instancing / EXT_instance_features, CESIUM_RTC, Y-up↔Z-up, tileset.json 연결, 1.0→1.1 마이그레이션, 작성 체크리스트 |
빠른 선택 가이드
Q1. 3D Tiles 표준이 뭔지부터 알고 싶다
→ [[1.1.whatIs3dTiles|1.1 3D Tiles란 무엇인가]]
Q2. 우리 데이터는 1.0인가 1.1인가? 마이그레이션 해야 하나?
→ [[1.2.3dTilesVersions|1.2 3D Tiles 1.0 vs 1.1]]
Q3. Cesium Ion에 데이터 올리면 내부에서 무슨 일이 일어나나?
→ [[2.1.cesiumIonPipeline|2.1 Cesium Ion 파이프라인 개요]]
Q4. 내가 가진 데이터(OBJ / IFC / 드론 메쉬)는 어떤 Tiler로 보내야 하나?
→ [[2.2.tilerComparison|2.2 3D Model · BIM · 3D Capture 비교]]
Q5. UV island를 atlas로 잘 패킹하려면 어떤 알고리즘이 필요한가?
→ [[3.1.binPacking|3.1 Bin Packing 이론]]
Q6. UV island, texel density, padding 같은 용어 정의가 헷갈린다
→ [[3.2.uvIslandAtlas|3.2 UV Island와 Texture Atlas]]
Q7. Python이나 Blender로 atlas 만드는 도구는 뭐가 있나?
→ [[3.3.toolsAndLibraries|3.3 Python · Blender 도구와 라이브러리]]
Q8. GLB가 뭐고 왜 3D Tiles와 묶여 있나?
→ [[4.glb/4.1.whatIsGlb|4.1 GLB란 무엇인가]]
Q9. GLB 파일 안에는 뭐가 들어있나? accessor/bufferView 같은 게 헷갈린다
→ [[4.glb/4.2.glbStructure|4.2 GLB 구조와 용어]]
Q10. obj2gltf로 만든 GLB가 CesiumJS에서 자글자글하다
→ [[4.glb/4.3.glbTools|4.3 GLB 도구와 실전 예제]] (Sampler Mipmap Aliasing 사례)
Q11. 1.0 b3dm/i3dm을 1.1 GLB로 어떻게 바꾸나?
→ [[4.glb/4.4.glb3dTilesIntegration|4.4 GLB와 3D Tiles 1.1 통합]]