Skip to content

feat: add SOG compression for smaller splat delivery#23

Open
mohamedsobhi777 wants to merge 1 commit intoaukilabs:developfrom
mohamedsobhi777:feature/sog-compression
Open

feat: add SOG compression for smaller splat delivery#23
mohamedsobhi777 wants to merge 1 commit intoaukilabs:developfrom
mohamedsobhi777:feature/sog-compression

Conversation

@mohamedsobhi777
Copy link
Copy Markdown

Summary

  • Adds SOG (Spatially Ordered Gaussians) compression as a post-processing step after the existing .splat conversion
  • Uploads the compressed .sog file first (smaller, faster viewer load), then the lossless .splat as backup
  • SOG compression is best-effort — if it fails, the pipeline still succeeds with the .splat output
  • No domain-viewer changes needed — it already maps splat_data_sog to the PCSOGSZIP format

Changes

  • New: compress_sog.py — converts PLY to SOG using 3dgsconverter
  • Modified: run.py — adds non-fatal SOG compression step after convert_ply2splat
  • Modified: server/rust/runner/src/lib.rs — uploads SOG as splat_data_sog before .splat upload
  • Modified: Dockerfile — adds 3dgsconverter dependency and compress_sog.py
  • New: docs/specs/2026-03-30-sog-compression-design.md — design spec

Test plan

  • Verify compress_sog.py converts a PLY file to SOG format
  • Verify run.py completes successfully with SOG step
  • Verify run.py completes successfully when 3dgsconverter is unavailable (fallback)
  • Verify Rust runner uploads both .sog and .splat artifacts
  • Verify domain-viewer loads the SOG file correctly
  • Compare file sizes between .splat and .sog outputs

Add a post-processing step that compresses the Gaussian Splat PLY output
to SOG (Spatially Ordered Gaussians) format using 3dgsconverter, achieving
~2.5-20x file size reduction depending on SH content. The SOG file is
uploaded first (smaller, faster for viewers), followed by the lossless
.splat as backup. SOG compression is best-effort — if it fails, the
pipeline still succeeds with the .splat output.

The domain-viewer already supports SOG via the splat_data_sog data type,
so no viewer changes are needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant