Native Gaussian Splatting in Three.js for WebGPU Renderer

If you haven’t been following the recent PRs, I’ve just contributed to Three.JS a fully native Gaussian Splatting (GS3D) loading system, and WebGPU-based renderer. The renderer supports view-depending rendering using spherical harmonics, and a GPU-based count sort for scalable and good looking results. Currently supported file formats are Nantic’s SPZ (versions 3 and 4), SPLAT, KSPLAT, PLY and glTF.

I describe it fully here:

The PRs are these and they have all been merged into dev:

You can try out the viewer here:

Example imagery:

Would love to se what you do with it and to get your feedback!

7 Likes

this is an awesome contribution, thank you for the work on this! in terms of loading a gaussian splat over the PLY ( possibly gltf also ) file format would it be up to the user to determine if the file was a standard PLY or if it contains GS data? or does the updated PLYLoader handle this internally? obviously these updates are in their early stages but outside of PLY (GLTF) it seems we would use new GaussianSplatMesh for spz, splat and ksplat files, I’m wondering how the logic would change between file types that wouldn’t explicitly use GS data as their primary source of data …

also very excited to see Garret’s contributions to include support for per-mesh boundingBoxes of splats generated with GaussianSplatMesh

1 Like

@bhouston I found your contributions rather interesting and then bothered adapting them for use with WebGL2, specifically gsplat.js and sparkjsdev/spark libraries.

There are currently 3 splat viewers available on my homepage, with most recent being GSPLAT Viewer and Spark SPLAT Viewer using these modified contributions of yours, so if you feel like testing them then go ahead - I kind of wonder where do you have that Jellyfish.spz model tacked away so I could try it myself.

Eventually, I did manage to create a working custom extensions for loading GLB models in both of these new viewers - these extensions are not open-sourced yet but were modeled as per new GLTFGaussianSplatLoaderExtension.js.

Great work on your part.

1 Like

Hi @Lawrence3DPK . I just wrote this blog to explain how to use the new GaussianSplat type with PLY and SPZ and the other loaders. :slight_smile:

1 Like

thanks for the info @bhouston I’ll take a look!

on a side question, have you heard of 4dv ai? do you know if your loaders would support this sort of gaussian video type format?

What what I can tell 4dv.ai is a proprietary format. I could throw Claude at it to reverse engineer it but I am not sure that is valuable because I think they would object. Maybe you can ask them to open source their format? Or publish a spec?

1 Like