PlayCanvas Releases splat-transform v3.0.0, Bringing 7X Speed Up

Michael Rubloff

PlayCanvas has released splat-transform v3.0.0, a ground-up rewrite of its open source tool and library for working with Gaussian splats. It converts between formats, thinning scenes down to a target size, building level of detail pyramids, and compressing captures for the web. The tool can now be pointed at scenes far larger than the machine's memory. Every version until now loaded a whole capture into RAM at once, so the largest scene you could process was capped by how much memory you had; v3.0.0 streams each scene through the pipeline in small, fixed size chunks instead, so peak memory is set by the chunk size rather than the total Gaussian count.
The tool began as a straightforward converter, firmed up into a stable 1.0, and grew into a broader transform and LOD toolchain at 2.0, but across all of it the tool held everything in a single in-memory table. The "DataTable," one row per Gaussian, which kept the internals simple at the cost of pinning peak memory to the splat count. Version 3.0.0 demotes that table to a compatibility layer and makes streaming the default. Inputs are read, transformed, and written a chunk at a time, with PLY, SPZ, and .splat streaming natively and SOG, LCC, and LCC2 arriving through container readers. The decimator was rebuilt the same way. It reduces a scene to an exact target splat count without ever holding all of it at once, spilling intermediate data to a new scratch-dir when the target is large, and the format writers, the statistics pass, and the GPU clustering step were all reworked to run in that same streaming fashion.
Now it's running both faster and much lighter. On a 10M splat PLY run through a --filter-nan pass, v3.0.0 is roughly 7× faster while using about one fifth the peak memory of 2.7.1, and, more consequentially, decimation and LOD builds now complete on scenes above a hundred million Gaussians that the old whole scene path could not hold at all. It now requires Node 22 (up from 18), the library API is reorganized around streaming sources rather than the old table, and the command line flags have been renamed and tidied (with new --info and --stats inspection modes), so existing scripts will need updating.
It lands just as large format containers push scene sizes up. XGRIDS' second generation LCC, which splat-transform reads directly through its container sources, targets the large scale hundred million splat captures this rewrite is built to stream. A conversion tool whose memory ceiling is a tunable chunk size rather than the scene it is handed changes what an ordinary workstation can be pointed at.
It is available now.
New to Gaussian Splatting? Start here





