3D Tiles 데이터 처리 도구: 포맷 변환과 최적화를 위한 실용 가이드

3D 공간 데이터의 효율적 처리를 위한 3D Tiles Tools 활용법

3D 지리공간 시각화 분야에서 3D Tiles Tools는 다양한 3D 모델 형식 간 변환과 성능 최적화를 지원하는 오픈소스 도구군입니다. Cesium 팀이 개발한 이 도구는 GLB, B3DM, I3DM, PNTS, CMPT 등 주요 3D 타일 형식을 유연하게 다루며, 대규모 3D 씬을 웹 기반 플랫폼에 빠르게 배포할 수 있도록 돕습니다.

주요 기능 및 아키텍처 설계

도구는 내부적으로 속성 데이터를 구조화해 관리하는 PropertyTableModel, PropertyModel, MetadataEntityModel 등의 컴포넌트를 활용합니다. 이를 통해 메타데이터와 기하 정보가 일관되게 유지되며, 대량의 공간 속성값도 고속으로 접근 가능합니다.

타일셋 처리 및 성능 개선

  • GZIP 압축/해제: 전체 타일셋 또는 개별 타일 컨텐츠 단위로 압축하여 전송 크기를 줄이고 로딩 속도를 향상시킵니다.
  • 병합 및 결합 작업:
    • combine: 외부 참조가 있는 타일셋을 단일 자립형 타일셋으로 통합
    • merge: 여러 타일셋을 하나의 새 타일셋으로 병합하되, 각각을 외부 링크로 유지
    • mergeJson: 실제 바이너리 파일은 이동하지 않고 JSON 메타정보만 병합
  • 버전 업그레이드: 오래된 3D Tiles 사양(예: glTF 1.0)을 최신 버전(2.0)으로 자동 변환하며, URL → URI 정규화 및 asset.version 갱신을 수행합니다.

다양한 형식 간 변환 기능

핵심 변환 명령어들은 다음과 같습니다:

작업 유형설명
glbToB3dmGLB 파일을 배치 기반의 B3DM 형식으로 변환
b3dmToGlbB3DM 내부의 GLB 본체 추출
i3dmToGlb인스턴싱된 모델 데이터를 일반 GLB로 변환
cmptSplit복합 타일(CMPT)을 구성 요소별 개별 타일로 분리

모든 변환 작업은 디렉터리 단위로 일괄 처리 가능하여 수천 개의 파일도 몇 줄의 명령어로 처리할 수 있습니다.

실제 문제 해결 사례

속성 정보 유실 방지

GLB → B3DM 변환 시 _BATCHID 어트리뷰트 누락으로 인해 선택 기능이나 스타일링이 깨지는 경우가 많습니다. 해당 도구는 다음 방법으로 이를 방지합니다:

  1. 정점 쉐이더에 _BATCHID 어트리뷰트 자동 삽입
  2. 배치 테이블(batch table)과 특징 테이블(feature table)을 동기화하여 구조적 무결성 보장
  3. 기존 속성 값을 자동 매핑하여 시맨틱 정보 유지

메모리 및 전송 최적화

  • Draco 압축 연동: --draco 옵션 활성화 시 메시 용량을 50~80% 감소시키며 시각 품질 손실은 최소화합니다.
  • 스트리밍 처리: 전체 데이터를 메모리에 적재하지 않고 청크 단위로 처리하므로 GB급 데이터도 안정적으로 변환 가능합니다.

사용 시작하기

설치 방법

# NPM을 통한 글로벌 설치
npm install -g 3d-tiles-tools

# 소스 코드에서 직접 빌드 (개발자용)
git clone https://gitcode.com/gh_mirrors/3d/3d-tiles-tools
cd 3d-tiles-tools
npm install
npm link

기본 명령어 예시

# GLB를 B3DM으로 변환
3d-tiles-tools glbToB3dm --input model.glb --output model.b3dm

# B3DM에서 GLB 추출
3d-tiles-tools b3dmToGlb --input batched.b3dm --output extracted.glb

# 전체 타일셋 Draco + GZIP으로 압축
3d-tiles-tools upgrade --input tileset.json --output optimized/ --draco --gzip

고급 사용 패턴

파이프라인 자동화: JSON 설정 파일로 변환 → 최적화 → 압축까지 연결된 워크플로우를 정의할 수 있습니다.

{
  "pipeline": [
    { "tool": "glbToB3dm", "options": { "input": "src/*.glb" } },
    { "tool": "optimize", "options": { "draco": true } },
    { "tool": "gzip", "options": { "recursive": true } }
  ]
}

옵션 확장: --gltf-pipeline-args를 통해 하위 glTF-Pipeline 엔진에 직접 파라미터를 전달할 수 있어 세밀한 제어가 가능합니다.

운영 환경에서의 모범 사례

처리 프로세스 권장 순서

  1. 분석 단계: analyze tileset.json으로 구조 확인
  2. 변환 단계: 목적에 맞는 출력 형식 선택 (예: 스트리밍에는 PNTS, 정적 건물은 B3DM)
  3. 최적화 단계: Draco, 텍스처 리사이징, LOD 생성 적용
  4. 검증 단계: 유효성 검사 도구로 결과물 확인

성능 튜닝 팁

  • 대량 파일 처리 시 입력 경로를 디렉터리로 지정하면 재귀적으로 처리됩니다.
  • 메모리 부족 발생 시, 데이터를 소규모 단위로 분할하여 처리하세요.
  • 반복 작업에서는 중간 결과를 캐싱하여 후속 실행 시간을 단축할 수 있습니다.

마무리

3D Tiles Tools는 3D 공간 데이터의 호환성, 성능, 운영 효율성을 동시에 해결하는 핵심 도구입니다. 포맷 변환부터 배포 최적화까지 일관된 워크플로우를 제공함으로써, 개발자는 데이터 준비에 드는 시간을 줄이고 시각화 애플리케이션 개발에 집중할 수 있습니다. 향후에도 Cesium 생태계와 긴밀히 연동되며 더 많은 자동화 기능이 추가될 것으로 기대됩니다.

태그: 3D Tiles Cesium GLB B3DM Draco 압축

6월 15일 18:12에 게시됨