Three.js r186, 3D Gaussian Splatting 네이티브 지원 및 WebGPU 렌더링 도입
·2026.09.07 09:00
핵심 내용
Three.js r186에서 3D Gaussian Splatting이 엔진의 1급 기능으로 내장되어 WebGPU 기반의 사실적 3D 렌더링이 가능해졌다.
자세히 보기
Three.js r186 릴리스를 통해 3D Gaussian Splatting이 커뮤니티 애드온이 아닌 엔진의 first-class 기능으로 공식 지원된다. 이는 수천에서 수백만 개의 fuzzy, oriented, colored 3D ellipsoid(point cloud)를 back-to-front로 정렬하여 렌더링하는 기술로, meshing이나 UV unwrapping 없이도 photorealistic한 이미지를 생성한다.
핵심 기술 및 요구사항
- WebGPU 필수:
GaussianSplat클래스는 WebGPURenderer를 사용해야 하며, TSL nodes와 컴퓨트 셰이더를 기반으로 매 프레임 정렬을 수행한다. 따라서three/webgpu및 관련 모듈이 import map에 올바르게 설정되어야 한다. - Scene Graph 통합:
GaussianSplat은THREE.Mesh를 상속하므로 transform, visibility 등 기존 3D 객체와 동일한 방식으로 관리된다. - 활용 분야: foliage, fur, 반투명 표면, 복잡한 실내 장면 등 수동 모델링이 어려운 실사 객체 캡처에 적합하다.
- 한계점: 단일 캡처된 객체나 제한된 범위의 장면에 최적화되어 있으며, 대규모 도시 전체 같은 거대한 스케일에는 적합하지 않다.
지원 포맷 및 로더
다양한 소스 호환성을 위해 5가지 주요 로더가 제공되며, 모두 동일한 내부 구조로 변환된다.
- SPZLoader (.spz): Niantic의 SPZ 포맷으로, 압축률이 높고 로딩 속도가 빨라 권장된다. v1-v3(gzip)도 지원한다.
- GaussianSplatPLYLoader (.ply): 연구 코드 및 대부분의 툴에서 출력하는 표준 포맷으로 상호 운용성이 높으나 파일 크기가 크다.
- SPLATLoader (.splat): antimatter15/splat의 원본 포맷으로 호환성 유지용이다.
- KSPLATLoader (.ksplat): GaussianSplats3D 뷰어용 포맷이다.
- GLTFGaussianSplatLoaderExtension: glTF 확장(KHR_gaussian_splatting)을 지원하여 다른 3D 자산과 함께 전달될 수 있다.
워크플로우
실제 세계의 객체를 Three.js 씬에 넣기까지는 Capture(Polycam, Scaniverse, Luma AI 등 앱 사용), Clean up(필요시 편집), Convert(적합한 포맷으로 변환), Render(Three.js에서 로드)의 4단계로 구성된다. 특히 Scaniverse는 .spz 포맷으로 직접 내보내기 가능하여 효율적이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.