3단계 · IfcConvert + 3d-tiles-tools 레시피
웹 형태 변환
브라우저가 바로 읽는 포맷으로 변환. 뷰어별 처리 방식.
방식·도구 고르기
실내·BIM · 데이터 상태별 (크기 기준은 어림)
| 데이터 상태 | 방식 | 고르는 이유 · 형태 |
|---|---|---|
| 건물 1동 · 형상만 | 파일 | glb 또는 3D Tiles (IfcConvert·mago). |
| 여러 동 · 단지 BIM | 파일 | 3D Tiles 타일 분할·LOD. glb 통째는 수백 MB부터 첫 화면 지연. |
| 부재 속성(층·실·설비) 필요 | 파일 | IFC 속성을 3D Tiles 속성(배치 테이블·1.1 메타데이터)으로 옮기기. 형상만 옮기면 속성 손실. |
| 실내 이동 · VR · 설비 시뮬레이션 | 엔진 | Cesium for Unreal: 같은 3D Tiles. 1인칭 이동·충돌·조명. |
카드 안 도구 선택 → 아래 단계·결과 전환. ?: 고르는 기준·장단점.
파일 방식
맞는 경우
- 갱신 드문 데이터 (연 1회 공개 등)
- 서버 운영 없는 배포: 정적 호스팅·CDN
- 미리 구운 타일 → 요청마다 연산 없음, 동시 접속에 강함
한계
- 원본이 바뀌면 다시 굽기
- 속성 조건 조회 불가 → 받은 범위 안 클라이언트 필터만
- 타일 수만~수백만 개 → 올리기·저장 부담 (PMTiles 한 파일로 완화)
결과를 파일로 구워 정적 호스팅. 브라우저가 파일을 직접 읽음.
도구
IfcConvert + 3d-tiles-tools · 장점
- IfcOpenShell 기반 → IFC 형상 해석 정확
- glb 압축으로 용량 축소
- 단계마다 결과 확인 쉬움
단점
- 부재 속성(층·실·설비) 손실
- 타일 분할·LOD 없음
- 도구 3개 연결
mago 3DTiler · 장점
- CityGML·IFC·glTF 등 입력 → 3D Tiles 한 도구로
- 단순화 단계(LOD)·타일 분할 자동
- 국내 개발(Gaia3D) 오픈소스
단점
- Java 실행 → 큰 입력은 메모리 설정 필요
- 한 번에 변환 → 중간 결과 확인·수정 어려움
- 좌표계·축 옵션 직접 지정 (-c, -rx 등)
엔진 (Cesium for Unreal)
맞는 경우
- 화질: 조명·그림자·재질·후처리
- 시뮬레이션·VR·다른 3D 에셋과 합성
- 브라우저 메모리 한계를 넘는 장면 (데스크톱 GPU)
한계
- 브라우저 밖: 설치형 앱 빌드 또는 Pixel Streaming
- GPU 필요, 화면 확인 수동
- 3D Tiles·지형만. 2D 벡터·영상은 지형 위 덧씌움(WMS·WMTS·XYZ)
같은 결과 파일(3D Tiles·quantized-mesh)을 언리얼에서 읽음. 엔진 전용 변환 없음.
엔진이 읽는 결과를 만드는 도구
IfcConvert + 3d-tiles-tools · 장점
- IfcOpenShell 기반 → IFC 형상 해석 정확
- glb 압축으로 용량 축소
- 단계마다 결과 확인 쉬움
단점
- 부재 속성(층·실·설비) 손실
- 타일 분할·LOD 없음
- 도구 3개 연결
mago 3DTiler · 장점
- CityGML·IFC·glTF 등 입력 → 3D Tiles 한 도구로
- 단순화 단계(LOD)·타일 분할 자동
- 국내 개발(Gaia3D) 오픈소스
단점
- Java 실행 → 큰 입력은 메모리 설정 필요
- 한 번에 변환 → 중간 결과 확인·수정 어려움
- 좌표계·축 옵션 직접 지정 (-c, -rx 등)
IfcConvert + 3d-tiles-tools 요약 파일 방식
- 걸린 시간
- -
- 결과 용량
- -
- 파일 수
- -
- 그릴 수 있는 뷰어
- 2 / 4
변환 단계
1형상만 glb 추출IfcConvert (IfcOpenShell) C++, LGPL-3.0, v0.9.0BIM 표준 IFC → glTF·OBJ 등 일반 3D 포맷.자세히 보기
IfcConvert -q -y --y-up --use-element-names --site-local-placement /raw/Building-Architecture-IFC4.ifc /work/building.glb벽·문 등 요소 → 삼각형 메시. --y-up: glTF 웹용 3D 모델 표준. .gltf: JSON + 외부 파일, .glb: 파일 하나로 묶은 이진 형태. 자세히 규칙대로 위쪽 축 Y. --use-element-names: 요소 이름 유지. --site-local-placement: 대지 기준 좌표.
2웹용 압축glTF Transform TypeScript, MIT, v4.5.1glTF 웹용 최적화 도구. 묶기, 압축, 텍스처 축소.자세히 보기
gltf-transform optimize /work/building.glb /out/model/building.glb --compress meshopt--compress meshopt: 형상 압축, 용량 감소.
3서울시청 앞 배치 타일셋 생성3d-tiles-tools TypeScript, Apache-2.0, v0.5.4Cesium의 3D Tiles 손질 도구. glb 타일셋 감싸기, 버전 올리기.자세히 보기
3d-tiles-tools createTilesetJson -i /out/model/building.glb -o /out/model/tileset.json --cartographicPositionDegrees 126.9783 37.5659 0 -f--cartographicPositionDegrees: 위치(경위도·높이) → tileset.json, Cesium 바로 배치.
결과물
GLB + 놓을 위치glTF (GLB)
형상만 남은 모델, 벽·문 속성 제외. Deck.gl용.
3D Tiles (glb 감싸기)3D Tiles
위치 내장 타일셋. Cesium용.
뷰어별 처리 · IfcConvert + 3d-tiles-tools
OpenLayers 2D미지원
2D 지도 — 3D 건물 모델 미지원.
MapLibre 2.5D미지원
glTF·3D Tiles 기본 레이어 없음.
MapLibre + Deck.gl 3D미검증
- 결과물
- GLB + 놓을 위치 (model/building.glb)
- 처리
ScenegraphLayer
CesiumJS 3D미검증
- 결과물
- 3D Tiles (glb 감싸기) (model/tileset.json)
- 처리
Cesium3DTileset
직접 처리: 원본과 같은 형식을 그대로 읽음. 변환 후 처리: 바꾼 결과물을 읽음. 일부 기능만: 그리지만 빠지는 기능 있음(카드의 주의). 미검증: 성공한 실행 기록 없음.