Skip to main content

PlayCanvas Open Sources SOG: The WebP of Gaussian Splatting

ยท 4 min read

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.

info

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:

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!