Skip to main content

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​

PLYSOGStreamed SOGGLBSPZLCC2
SizeLargeSmall (15-20× compression)Small (SOG chunks, loaded on demand)LargeSmall (~10× compression)Small (SOG or SPZ chunks, loaded on demand)
QualityLosslessLossyLossy, view-dependent detailLosslessLossyLossy, view-dependent detail
UseSource/editingRuntime/deliveryVery large scenesglTF interchangeNiantic ecosystemXGRIDS scans
SpeedSlow loadingFast loadingProgressive streamingFast loadingFast loadingProgressive streaming

Workflow​

  1. Train and edit with PLY
  2. Convert to SOG for production using SplatTransform
  3. For very large scenes, convert to Streamed SOG instead
  4. Use GLB when splats need to flow through standard glTF pipelines
  5. Load SPZ directly when assets come from tools like Scaniverse
  6. Load LCC2 directly when scenes come from XGRIDS scanners
  7. Deploy for optimal performance