Splat File Formats
PlayCanvas supports six formats for 3D Gaussian Splat data:
PLY Format - Source & Interchange
The industry standard for Gaussian splat data. Uncompressed, full precision, and universally compatible.
- Use for: Training, editing, archival storage
- File size: Large (anything up to several GB)
- Quality: Lossless
SOG Format - Runtime & Delivery
Compressed format optimized for web delivery. 15-20× smaller than PLY with lossy compression.
- Use for: Web apps, real-time rendering, CDN delivery
- File size: Small (compressed)
- Quality: Visually optimized
Streamed SOG Format - Large-Scene Streaming
SOG chunks organized into a spatial tree with multiple levels of detail. Viewers stream in only the chunks and detail levels needed for the current camera.
- Use for: Very large scenes (tens of millions of Gaussians), progressive loading
- File size: Small per chunk, loaded on demand
- Quality: Visually optimized, view-dependent detail
GLB Format - Standards-Based Interchange
Binary glTF with the Khronos KHR_gaussian_splatting extension. Splats travel through standard glTF pipelines and can be combined with regular mesh content.
- Use for: Interoperability, standard glTF tooling and pipelines
- File size: Large (uncompressed, similar to PLY)
- Quality: Lossless
SPZ Format - Compressed Interchange
Niantic's open source compressed splat format, roughly 10× smaller than PLY. Loaded via a parser script that ships with the engine.
- Use for: Assets from the Niantic/Scaniverse ecosystem
- File size: Small (compressed)
- Quality: Visually optimized
LCC2 Format - XGRIDS Large-Scene Streaming
XGRIDS' level of detail tree of splat files, stored as SOG or SPZ. The engine streams .lcc2 scenes directly, so scenes exported by XGRIDS software need no conversion.
- Use for: Large scans from XGRIDS scanners and LCC Studio
- File size: Small per chunk, loaded on demand
- Quality: Lossy, view-dependent detail
Quick Comparison
| PLY | SOG | Streamed SOG | GLB | SPZ | LCC2 | |
|---|---|---|---|---|---|---|
| Size | Large | Small (15-20× compression) | Small (SOG chunks, loaded on demand) | Large | Small (~10× compression) | Small (SOG or SPZ chunks, loaded on demand) |
| Quality | Lossless | Lossy | Lossy, view-dependent detail | Lossless | Lossy | Lossy, view-dependent detail |
| Use | Source/editing | Runtime/delivery | Very large scenes | glTF interchange | Niantic ecosystem | XGRIDS scans |
| Speed | Slow loading | Fast loading | Progressive streaming | Fast loading | Fast loading | Progressive streaming |
Workflow
- Train and edit with PLY
- Convert to SOG for production using SplatTransform
- For very large scenes, convert to Streamed SOG instead
- Use GLB when splats need to flow through standard glTF pipelines
- Load SPZ directly when assets come from tools like Scaniverse
- Load LCC2 directly when scenes come from XGRIDS scanners
- Deploy for optimal performance