How Can I Optimize Large 3D Gaussian Splat (.PLY) Scenes for Better Web Performance?

Hi everyone,

I’m working with large 3D Gaussian Splatting (3DGS) files, and I’m trying to figure out the best way to use them efficiently on the web, especially with Three.js.

What are the best techniques for handling very large Gaussian Splatting files in a web environment while maintaining smooth and consistent performance / FPS?

I’m particularly interested in:

How can I optimise large Gaussian Splat files specifically for web use?
What are the best ways to reduce file size without losing too much visual quality?
What compression or quantisation techniques are recommended?
Are there recommended formats for web delivery instead of raw PLY files?
How can I handle very large scenes without loading the entire file into memory at once?
Should I use LOD (Level of Detail), spatial chunking/tiling, streaming, progressive loading, frustum culling, or distance-based culling?
What techniques are available to keep FPS stable when the scene contains millions or tens of millions of Gaussians?
Are there specific Three.js / WebGL / WebGPU techniques that can significantly improve Gaussian Splat performance?
How should I optimise the files themselves versus optimising the rendering pipeline?
Are there any recommended tools or workflows for preprocessing and optimising 3DGS files before deploying them to the web?

My main goal is to be able to use very large/high-quality Gaussian Splatting scenes on the web while keeping loading times, memory usage, GPU usage, and FPS under control.

I’d really appreciate any recommended production-ready workflow, tools, formats, or techniques** for optimising and serving large 3DGS scenes on the web.

I think its a yes for all of these.

Maybe use a different format and/or different library:

These commands should work for spark with npm but do read the documentation first:

npm run build-lod -- --rad ./examples/assets/splats/your_chosen_model.spz
npm run build-lod -- --rad-chunked ./examples/assets/splats/your_chosen_model.spz
npm run build-lod -- --spz ./examples/assets/splats/your_chosen_model.zip