PlayCanvas Open Sources SOG: The WebP of Gaussian Splatting
Goodbye SOGS. Hello SOG! ๐
Back in May, PlayCanvas announced support for SOGS, a revolutionary super-compressed format for 3D Gaussian splats. While SOGS was a huge leap beyond other compression techniques, we were still not satisfied! So we set about designing a new and improved iteration of the format.
Today, we are proud to introduce SOG: Spatially Ordered Gaussians.
The Skate Park above is not a video! Navigate around the scene and explore! The splat was scanned by Christoph Schindelar. It has 4 million Gaussians but is compressed to a mere 42MB with SOG. The original PLY was 1GB, meaning a ~95% reduction in file size.
What is SOGโ
SOG shares a great deal in common with its predecessor. It is still a meta.json
file that reference multiple .webp
images. So what's new and why is it better?
๐ฆ More convenient: Your SOG splats can now also be written to a single .sog
file
โก Faster to load: SOG stores splat data in Morton order meaning its 'GPU-ready' and doesn't require processing on load
๐๏ธ Easier to compress: SOGS compression required CUDA but SOG only needs WebGPU so it runs anywhere
๐ฏ More precision: SOG minimizes compression artifacts by making smarter use of the same number of bits
Converting to SOG with SplatTransformโ
To create .sog
files (or unbundled .json
+ .webp
files), we provide the open source SplatTransform CLI tool. To install it, just issue this command:
npm install -g @playcanvas/splat-transform
And to convert, do:
splat-transform input.ply output.sog
What could be easier? ๐
Engine Support for SOGโ
As you might expect, the open source PlayCanvas Engine is the first graphics runtime to support SOG. Support was introduced in the 2.11.0 release and we have thoroughly tested and stabilized it with a number of subsequent patches.
PlayCanvas React and PlayCanvas Web Components have also been updated to support SOG.
Editor Support for SOGโ
Bundled SOG files (.sog
) are now natively supported in the PlayCanvas Editor! Simply drag and drop a .sog
file into your ASSETS panel to create a new gsplat
asset.
Dragging the gsplat
asset into the viewport triggers the creation of a new Entity
with the asset assigned to a GSplatComponent
.
Unbundled SOG scenes (.json
+ .webp
) are not natively supported in the Editor. Stick to .sog
!
SuperSplat Support for SOGโ
SuperSplat, the #1 platform publishing 3D Gaussian Splats, has been updated to compress your scans with SOG. Since it provides around 2-3x the compression of Compressed PLY, your creations will load much faster and will load on more memory constrained devices.
Open Sourcing SOGโ
Today, we are officially open sourcing the specification for SOG. SplatTransform provides a reference writer for the format. And the PlayCanvas Engine provides a reference implementation for loading and rendering SOG.
We encourage other engine and tools developers to integrate support for SOG into your products/projects. And we invite the open source community to join our open source effort and contribute to PlayCanvas' codebases in any way that you can.
Creditsโ
We would like to recognize the work of some incredible people from the open source community that made all of this possible:
- Wieland Morgenstern from Fraunhofer HHI who developed the original SOGS format.
- Vincent Woo who did the original integration of SOGS into PlayCanvas.
Let's continue this tradition and work together to keep 3DGS technology free and open source.
Come and Meet Us Todayโ
If you want to chat about SOG, SuperSplat or 3D Gaussian Splatting in general, then you have to join the PlayCanvas Discord Server. Some of the world's premier splat creators hang out there, so come and join the conversation!