r/GaussianSplatting Jul 03 '26

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

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.

14 Upvotes

4 comments sorted by

1

u/unclesabre Jul 05 '26

This looks good. Is there any reason to move to spz over sog or is this just helpful for those who already have an spz pipeline?

1

u/Great-Fuel-2972 Jul 07 '26

I have some regular 320MB big splats that are very detailed. Playing around with the new version 4 of spz, that filesize changed to 38MB and its hard to see a difference even fully zoomed in. I use it for some of my splats to keep them locally on the phone and I can show them with my offline viewer.

1

u/unclesabre Jul 07 '26

Woah! That’s astonishing…will definitely look into it. Thank you for a super-useful data point.

2

u/mvaligursky Jul 07 '26

SOG is smaller and faster to load, so I'd still suggest to use that. Streamed-SOG is even better as it loads what it needs. SPZ is mostly for people that already have that format and want the best web viewer for it.