3단계 · PDAL + mago 3DTiler 레시피
웹 형태 변환
브라우저가 바로 읽는 포맷으로 변환. 뷰어별 처리 방식.
방식·도구 고르기
포인트 클라우드 · 데이터 상태별 (크기 기준은 어림)
| 데이터 상태 | 방식 | 고르는 이유 · 형태 |
|---|---|---|
| LAS·LAZ 원본 | 파일 | 3D Tiles (pnts·glTF 점): 옥트리 LOD로 보이는 점만. 원본 통째 로드는 수백만 점부터 첫 화면 지연·메모리 부담. |
| 수억 점 · 고화질 표현 | 엔진 | Cesium for Unreal: 같은 3D Tiles를 데스크톱 GPU로. 점 감쇠(attenuation)·조명. |
카드 안 도구 선택 → 아래 단계·결과 전환. ?: 고르는 기준·장단점.
파일 방식
맞는 경우
- 갱신 드문 데이터 (연 1회 공개 등)
- 서버 운영 없는 배포: 정적 호스팅·CDN
- 미리 구운 타일 → 요청마다 연산 없음, 동시 접속에 강함
한계
- 원본이 바뀌면 다시 굽기
- 속성 조건 조회 불가 → 받은 범위 안 클라이언트 필터만
- 타일 수만~수백만 개 → 올리기·저장 부담 (PMTiles 한 파일로 완화)
결과를 파일로 구워 정적 호스팅. 브라우저가 파일을 직접 읽음.
도구
PDAL + mago 3DTiler · 장점
- 옥트리 분할·LOD 자동
- 16비트 정수 좌표 양자화 → 용량 축소
- Deck.gl·CesiumJS 모두 표시
단점
- Java 실행 → 큰 점군은 메모리 설정 필요
- 입력 좌표계 지정 필수 (-c)
PDAL + py3dtiles · 장점
- pip 설치 → Python 흐름에 통합
- 대용량 점군 병렬 처리
- 지구 중심 좌표(ECEF) 출력 → 뷰어 배치 정확
단점
- refine 값 보정 필요 (루트만 REPLACE → Deck.gl 하위 타일 미요청)
- 출력 옵션 적음
엔진 (Cesium for Unreal)
맞는 경우
- 화질: 조명·그림자·재질·후처리
- 시뮬레이션·VR·다른 3D 에셋과 합성
- 브라우저 메모리 한계를 넘는 장면 (데스크톱 GPU)
한계
- 브라우저 밖: 설치형 앱 빌드 또는 Pixel Streaming
- GPU 필요, 화면 확인 수동
- 3D Tiles·지형만. 2D 벡터·영상은 지형 위 덧씌움(WMS·WMTS·XYZ)
같은 결과 파일(3D Tiles·quantized-mesh)을 언리얼에서 읽음. 엔진 전용 변환 없음.
엔진이 읽는 결과를 만드는 도구
PDAL + mago 3DTiler · 장점
- 옥트리 분할·LOD 자동
- 16비트 정수 좌표 양자화 → 용량 축소
- Deck.gl·CesiumJS 모두 표시
단점
- Java 실행 → 큰 점군은 메모리 설정 필요
- 입력 좌표계 지정 필수 (-c)
PDAL + py3dtiles · 장점
- pip 설치 → Python 흐름에 통합
- 대용량 점군 병렬 처리
- 지구 중심 좌표(ECEF) 출력 → 뷰어 배치 정확
단점
- refine 값 보정 필요 (루트만 REPLACE → Deck.gl 하위 타일 미요청)
- 출력 옵션 적음
PDAL + mago 3DTiler 요약 파일 방식
- 걸린 시간
- -
- 결과 용량
- -
- 파일 수
- -
- 그릴 수 있는 뷰어
- 2 / 4
변환 단계
13D Tiles(pnts) 분할mago 3DTiler Java 21, MPL-2.0, v1.16.3국내 Gaia3D의 만능 3D Tiles 변환기. 모델·점군·건물 바닥면을 한 도구로.자세히 보기
mkdir -p /work/in && cp /work/clean.las /work/in/ && mago-3d-tiler -i /work/in -o /out/tiles -it las -c 3857 -tv 1.0 -q-i: 폴더 단위 입력 → 정리한 LAS를 폴더에 복사. -c 3857: 입력 좌표계 (EPSG) 지구 위 위치를 숫자로 적는 약속. EPSG:4326: 위경도, EPSG:3857: 웹 지도 미터 좌표, EPSG:5186: 국내 중부원점. 자세히. 타일 범위: 위경도 상자(region) → 뷰어 위치 계산 단순. 좌표: 16비트 정수 양자화 → 용량 축소.
결과물
3D Tiles (pnts)3D Tiles
tileset.json(타일 트리) + .pnts(점 묶음). Deck.gl·Cesium 3D 점군.
뷰어별 처리 · PDAL + mago 3DTiler
OpenLayers 2D미지원
2D 지도 — 3D 점군 미지원.
MapLibre 2.5D미지원
점군·3D Tiles 레이어 없음.
MapLibre + Deck.gl 3D미검증
- 결과물
- 3D Tiles (pnts) (tiles/tileset.json)
- 처리
Tile3DLayer (loaders.gl Tiles3DLoader)
CesiumJS 3D미검증
- 결과물
- 3D Tiles (pnts) (tiles/tileset.json)
- 처리
Cesium3DTileset
직접 처리: 원본과 같은 형식을 그대로 읽음. 변환 후 처리: 바꾼 결과물을 읽음. 일부 기능만: 그리지만 빠지는 기능 있음(카드의 주의). 미검증: 성공한 실행 기록 없음.