Three.js r186 Introduces Native 3D Gaussian Splatting Support and WebGPU Rendering
Key point
Three.js r186 integrates 3D Gaussian Splatting as a first-class engine feature, enabling realistic 3D rendering via WebGPU.
Details
With the Three.js r186 release, 3D Gaussian Splatting is officially supported as a first-class feature of the engine rather than a community add-on. This technology renders thousands to millions of fuzzy, oriented, colored 3D ellipsoids (point clouds) by sorting them back-to-front, generating photorealistic images without meshing or UV unwrapping.
Core Technologies and Requirements
- WebGPU Required: The
GaussianSplatclass requires WebGPURenderer and performs sorting every frame based on TSL nodes and compute shaders. Therefore,three/webgpuand related modules must be correctly configured in the import map. - Scene Graph Integration: Since
GaussianSplatinherits fromTHREE.Mesh, it is managed in the same way as existing 3D objects, including transform and visibility. - Use Cases: Suitable for capturing photorealistic objects that are difficult to model manually, such as foliage, fur, translucent surfaces, and complex indoor scenes.
- Limitations: Optimized for single captured objects or limited scene ranges, and not suitable for massive scales like entire cities.
Supported Formats and Loaders
Five major loaders are provided for various source compatibilities, all converting to the same internal structure.
- SPZLoader (.spz): Niantic's SPZ format, recommended for its high compression ratio and fast loading speed. Supports v1-v3 (gzip).
- GaussianSplatPLYLoader (.ply): The standard format output by research code and most tools, offering high interoperability but large file sizes.
- SPLATLoader (.splat): The original format from antimatter15/splat, maintained for compatibility.
- KSPLATLoader (.ksplat): A format for the GaussianSplats3D viewer.
- GLTFGaussianSplatLoaderExtension: Supports the glTF extension (KHR_gaussian_splatting), allowing it to be delivered alongside other 3D assets.
Workflow
Getting real-world objects into a Three.js scene consists of four steps: Capture (using apps like Polycam, Scaniverse, Luma AI, etc.), Clean up (editing if necessary), Convert (converting to a suitable format), and Render (loading in Three.js). Notably, Scaniverse allows direct export to the .spz format, which is efficient.
This summary was generated automatically by AI. Check the original for the author's claims and context. Copyright belongs to the original author.
Our guide explains how the AI works. Report summary errors, attribution issues, or removal requests via Contact.