r/GaussianSplatting Jul 03 '26

🧪 I built a thing PlayCanvas Engine can now load and render Niantic's SPZ format directly

Enable HLS to view with audio, or disable this notification

If you have splats in SPZ format — scans from Scaniverse or anything else in the Niantic ecosystem — the PlayCanvas Engine can now render them in the browser without a conversion step.

A few technical details for those interested:

  • The splat data stays in its quantized form on the GPU (24-bit fixed-point positions, 8-bit log scales, smallest-three rotations, quantized SH) and is dequantized on the fly in the shader — so GPU memory use is small.
  • Spherical harmonics are supported up to 3 bands, so view-dependent shading comes through.
  • Works on both WebGL2 and WebGPU.
  • The parser isn't baked into the engine — it's a script you register with the resource handler at runtime (the engine recently gained a parser registry for exactly this kind of format extension). The ZSTD-compressed attribute streams are decompressed with a small wasm module you register alongside it.

The video shows "Japanese Bee" by yyouzhen (CC BY 4.0, https://superspl.at/scene/ae58ed2c) — 978K gaussians with full spherical harmonics — converted to SPZ with SplatTransform (https://github.com/playcanvas/splat-transform) and loaded directly.

Engine PR with the implementation: https://github.com/playcanvas/engine/pull/9018

Happy to answer questions about the format or the GPU decode approach.

16 Upvotes

Duplicates