Niantic Spatial Releases SPZ V4.0

Michael Rubloff

Michael Rubloff

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp
Niantic Spatial SPZ

When Niantic open-sourced SPZ in late 2024, it was one of the earlier compression formats for 3D Gaussian splats. It was ten times smaller than PLY, free for anyone to use. In the sixteen months since, their team has continued to ship updates.

The original SPZ used a single GZip stream, simple, universally supported, but fundamentally serial. Every attribute of every Gaussian (positions, colors, scales, rotations, alphas, spherical harmonics) lived in one compressed block. SPZ 4 splits those into six parallel ZSTD streams, one per attribute class. ZSTD is faster than GZip at comparable compression ratios, and running six streams simultaneously maps cleanly onto modern hardware with multiple cores or memory bandwidth to spare. Now encoding a 34 million splat scene that took three minutes and twenty six seconds now takes one minute and eight seconds. Time to first render drops by 33 to 52 percent depending on the scene.

SPZ 4 files are still about ten times smaller than PLY, and v4 files come in roughly 2.5 percent smaller than v3. Niantic resisted chasing an aggressive compression target that would have required losing the fast path decoding that makes the format practical in realtime viewers.

Several constraints from earlier versions fall away in v4. The 10 million point cap is gone. SPZ 4 can encode scenes with tens of millions of Gaussians without modification, which matters for the kind of large-scale reconstructions that are being created by the AEC and geospatial industries. SH degree 4 is now supported, up from degree 3, bringing an additional layer of view dependent color fidelity to scenes. And SH quantization is now configurable at 3 to 8 bits, with 5 bits identified as the practical sweet spot. The 18x compression at 3-bit is available for low fidelity previews, while 8-bit drops mean-squared error to near zero.

SPZ 4 uses a plaintext 32-byte header with NGSP magic bytes that encodes the point count, SH degree, version, and extension flags. You can read the metadata out of any SPZ file with a text editor or curl, no decompressor required.

The extension system is also new and opens the format to vendor specific features without forking the spec. The first shipping extension is from Adobe, labeled 0xADBE0002, which encodes a Safe Orbit Camera, the viewing parameters needed to reconstruct the orbit behavior used in Photoshop's Rotate Object feature. Other vendors can register extensions for their own use cases while guaranteeing that unrecognized extensions are skipped cleanly.

SPZ 4 can read v2 and v3 files. Older readers that encounter a v4 file return an error.

On the web side, the WASM and TypeScript implementation was rebuilt from scratch. Browser loading is now twenty times faster, the API surfaces proper TypedArray views, and a TypeScript declaration file ships with the package. Niantic also launched a converter tool at nianticspatial.com/spz-converter that runs entirely in the browser via local WASM, no file uploads, no server round-trip.

Adobe has also built SPZ into Photoshop with the addition of their Rotate Object function. In just the last two months, more than 800,000 SPZ files were created in Adobe Photoshop alone.

Scaniverse will add SPZ 4 export support within the next few months. Adobe has extended its Babylon.js SPZ integration to cover the new format. The stated roadmap for v5 includes streaming and progressive loading, spatial chunking and LOD, better SH quantization, and additional vendor extensions. The format is now fast enough to encode at production scale, flexible enough to carry vendor specific data without forking, and stable enough that 800,000 new files a month is apparently a low baseline.

Learn more here. SPZ continues to be open source and MIT Licensed.