nianticlabs/spz

File format for 3D Gaussian splats. About 10x smaller than the PLY equivalent with virtually no perceptible loss in visual quality. Offered as open source by Niantic Labs. More details at https://scaniverse.com/spz #3dgaussiansplats #gaussiansplatting

What it solves

It provides a highly compressed file format (.spz) and a corresponding library for 3D Gaussian splats. This solves the problem of large file sizes associated with standard .ply files, reducing them by approximately 10x with minimal loss in visual quality.

How it works

The library uses a combination of quantization and compression to shrink 3D Gaussian data. It represents positions as 24-bit fixed-point integers, scales as 8-bit log-encoded integers, and rotations using the smallest three components of a normalized quaternion. It employs ZSTD compression (in version 4) to compress attribute streams independently and in parallel. The library also handles coordinate system conversions (e.g., RUB, LUF) to ensure interoperability between different rendering systems.

Who it’s for

It is designed for developers working with 3D Gaussian splatting who need to store, transmit, or load 3D scenes more efficiently without sacrificing significant visual fidelity.

Highlights

  • 10x Compression: Significantly reduces file size compared to .ply formats.
  • Multi-language Support: Provides implementations in C++, TypeScript (via WASM), and Python bindings.
  • Flexible Quantization: Allows users to configure quantization bits for spherical harmonics to balance file size and quality.
  • Coordinate System Management: Built-in support for 16 named coordinate systems to prevent alignment issues across different platforms.
  • Extensible Format: Supports vendor-specific extensions (ILV records) for additional metadata, such as camera orbit limits.

Related

  • Project
  • Project
  • Dispatch
  • Project
  • Project