Introduction
The compressed PLY is a smaller way to store a Gaussian splat scene, from PlayCanvas. Its splat editor, SuperSplat, and its command line tool, splat-transform, write it, and the PlayCanvas engine loads it. It is still a valid PLY file, but its elements and properties are quite unlike those of the 3D Gaussian Splatting PLY it is made from.
Splats are taken in groups of 256, called chunks. Each chunk stores the smallest and largest position, scale and colour of its splats, and each splat stores its values as fractions of those ranges, packed into four 32-bit words. Spherical harmonics, when kept, take one byte each. A scene with degree 3 harmonics takes about a quarter of the space of the original PLY.
Structure
The header names three elements, in this order. The data is binary and little-endian.
0Headerply,format binary_little_endian 1.0, comments, the three elements,end_headertext…chunk one item per 256 splats: 18 floats of ranges72 bytes each…vertex one item per splat:packed_position,packed_rotation,packed_scale,packed_color16 bytes each…sh one item per splat:f_rest_0on, a byte each; only when there are harmonics9, 24 or 45 bytes each
A reader knows the layout by the chunk element and the four
packed_ properties of the vertex element. Some files have only 12
floats a chunk, without the colour ranges, and the PlayCanvas decoder reads both.
In this reference
- Chunks and packing – the chunk ranges, the bit layout of each packed word and how to turn them back into a Gaussian
Also used for
- 3D Gaussian Splatting PLY – The training code’s splat layout: one float vertex a splat, 248 bytes at degree 3.
- Polygon File Format – Stanford’s mesh and point cloud format, with a header that declares every property.
Variants
- 3D Gaussian Splatting PLY – the training code’s layout: one float vertex a splat, 248 bytes at degree 3
- PlayCanvas compressed PLY – chunks of 256 splats with ranges, and four packed words a splat
Links
Software
- SuperSplat – PlayCanvas’s free open source splat editor, which saves this layout (web)
Developers
- splat-transform – converts splat scenes to and from compressed PLY (JavaScript)
- PlayCanvas engine – web 3D engine that loads and draws compressed PLY scenes (JavaScript)
Reference
- gsplat-compressed-data.js – the PlayCanvas engine’s decoder