Shramko SOG LOD Converter
ENESPLRU

Giant splat PLY → SuperSplat-ready Streamed SOG with real LODs

This free tool turns a 3D Gaussian Splatting PLY of any size into a Streamed SOG archive with levels of detail (LOD) and SOG compression, ready to upload to superspl.at. It runs entirely in your browser on your own GPU and CPU: the file is never uploaded, and there is nothing to install.

Converter

1

Choose your PLY

Drop a .ply file here

The file stays on your computer — it is read locally, never sent anywhere.

2

Settings

Pick the kind of scene — each preset sets the levels and streaming chunks for how it will be viewed. “SuperSplat standard” is exactly what superspl.at builds itself. Everything stays editable below.

Advanced settings (optional)
Levels of detail

Fraction of splats each coarser level keeps. 0.5 = SuperSplat's halving.

No new level once a level holds this many splats or fewer. SuperSplat uses 1,000,000 so the first view fits even a phone's budget.

0 = automatic (up to 16).

How coarser levels are made: neighbouring splats are merged into one.

Quality and size

View-dependent colour. Fewer bands = smaller archive. SuperSplat keeps them.

Only matters when SH bands > 0. More = cleaner colour, slower. Default 10.

Lossless WebP compression effort 0–9. Higher = slightly smaller, slower.

Recommended. Broken values would make the LOD writer stop.

Streaming chunks

How the scene is cut into streamable pieces. SuperSplat uses 512 / 16 / 8. For very wide scenes a larger size means fewer, bigger chunks.

Performance

Browsers allow about 16 GB per tab. Use at most half of your PC's RAM. Less RAM = more, smaller tiles and more reading passes — slower but safe.

The scene is processed in spatial tiles that fit in memory. Auto picks the size from the RAM setting.

About 4× faster simplification. Turn off only if the GPU causes errors.

Parallel WebP/SOG encoders. Auto = up to 4.

3

Convert and save

You will be asked where to save the .zip. It is written straight to that file as it is built, so the PC needs free disk space of about 10% of the PLY size.

How it works

  1. Plan the levels like SuperSplat

    The PLY header is read in a split second. The tool plans the levels of detail the same way superspl.at does on its servers: each level keeps half of the previous one, until the coarsest holds at most 1 million splats — 10 levels for a 259-million-splat scan.

  2. Cut the scene into tiles that fit

    A browser tab can hold about 16 GB, and no single array may exceed 2 GB. So the scene is split into spatial tiles sized to the RAM you allow; a few sequential passes over the file load the tiles. That is how hundreds of millions of splats fit in a tab.

  3. Simplify and compress on your hardware

    For every tile, splat-transform (PlayCanvas, MIT) merges neighbouring splats to build each coarser level — on your GPU via WebGPU — and compresses every streaming chunk to SOG: quantised positions, rotations and colours in lossless WebP textures.

  4. Write one archive, then check it

    All chunks stream into one ZIP64 archive on your disk with lod-meta.json at the root, exactly the layout superspl.at accepts. When it is done the tool reads the archive back and checks every level, chunk and file before it says so.

Why real LODs matter (and the mistake they fix)

A Streamed SOG with a single level is just the full-detail scene cut into chunks: the viewer still has to fetch full detail everywhere it looks, and the first frame waits for it. With real levels, SuperSplat shows the coarsest level within seconds and streams finer levels only near the camera, staying inside its 1–4 million splat budget on any device.

Many hand-made bundles have exactly that problem — split into chunks, but with one level, so there is nothing coarser to show. This converter always builds the whole level pyramid, and its final check refuses an archive with one level for any scene over 1 million splats.

How it compares

As of 2 October 2026.

This convertersuperspl.at upload (Auto LODs)superspl.at/convertsplat-transform CLI
Largest inputNo fixed limit — tiles fit any size; tested on 259M splats / 17.6 GB10 GB per uploadWhat fits in one tabYour RAM
Levels of detailYes — halving to ≤ 1M, like SuperSplatYes (on their servers)No Streamed SOG outputYes — two manual steps per level
Runs onYour browser (your GPU + CPU)Their servers (after upload)Your browserYour PC
InstallNothingNothingNothingNode.js 22 + npm
Output checkReads the archive back: levels, chunks, files—Statistics table--info on the folder

What works, what's in progress, what's next

Works

  • Full run on a 259-million-splat / 17.6 GB city scan: 10 levels, 5.9 GB, 1 h 53 min, verified
  • Binary PLY (little/big-endian, SH 0–3) → Streamed SOG .zip with LOD levels and SOG compression
  • Scene presets: SuperSplat standard, city from a drone, streets, interiors, objects, light for phones and VR
  • Scenes far beyond one tab's memory, via spatial tiles
  • ZIP64 archives over 4 GB
  • WebGPU acceleration (Chrome, Edge)
  • Read-back verification of the finished archive
  • Live progress, error display and error reports

In progress

  • Upload of the 259-million-splat test scan to superspl.at

Next

  • Resume after a crash or a closed tab
  • Optional direct upload to SuperSplat with your API token
  • Separate sky / environment layer
  • Compressed PLY and SPZ input

Limits and risks — read before a big run

Questions

How do I upload a PLY larger than 10 GB to SuperSplat?

superspl.at accepts at most 10 GB per upload. Convert the PLY here into a Streamed SOG .zip — usually 5–10% of the PLY size — and upload that .zip at superspl.at → Upload. The archive already contains the levels of detail, so SuperSplat publishes it as-is.

What is Streamed SOG (SSOG) and lod-meta.json?

Streamed SOG is PlayCanvas's streaming format for large Gaussian splat scenes: a lod-meta.json index with a spatial tree, plus many small SOG chunks (meta.json + WebP textures), each holding one level of detail of one region. The viewer downloads only the chunks and levels it needs.

Why does my Streamed SOG have no levels of detail?

Because it was built from a single PLY without decimated levels: splat-transform then writes one level, cut into chunks. Real LODs need the coarser levels to be generated (decimated) and tagged. This tool does that automatically; check “lodLevels” in lod-meta.json — it should be more than 1.

Is my scan uploaded anywhere?

No. The file is read by your browser and processed on your computer. The server only delivers this page. If you allow it, an error report sends technical details (browser, GPU, settings, the error text) — never the file or its name.

Which browser and hardware do I need?

Desktop Chrome or Edge with WebGPU (any recent NVIDIA, AMD, Intel or Apple GPU). 16 GB of RAM or more is comfortable; with 8 GB set “RAM to use” to 4 GB. The tool works without a GPU too, about four times slower.

How long does it take, and how big is the result?

Measured on a workstation with an RTX 4090: 259 million splats (17.6 GB) in 1 h 53 min — about 45 minutes per 100 million splats; a laptop or a run without GPU takes several times longer. The archive is about 12 bytes per splat over all levels for scans without spherical harmonics: 5.9 GB for those 259 million splats (10 levels, 977 chunks).

How many LOD levels are created, and why?

Each level keeps half of the previous one until a level holds at most 1 million splats: 1 + ⌈log₂(N / 1M)⌉ levels — the same policy superspl.at uses when it builds LODs itself. The coarsest level fits the smallest viewer budget, so the first frame appears fast on phones and headsets too.

Can I use the archive outside SuperSplat?

Yes. It is a standard Streamed SOG: unzip it and load lod-meta.json with the PlayCanvas engine's Gaussian splat LOD streaming, or read it back with splat-transform.

Is it free and open source? Can I host it myself?

Yes — free, MIT-licensed, built on PlayCanvas splat-transform (MIT). The code and a Docker setup are on GitHub: AndriiShramko/shramko-sog-lod-converter.

Which preset should I pick?

For a city or landscape scanned from a drone: “City from a drone”. For walk-throughs at street level: “Streets at eye level”. Inside buildings: “Rooms & interiors”. One object: “Object / small scan”. If the scene must open smoothly on phones and VR headsets: “Light”. “SuperSplat standard” reproduces exactly what superspl.at builds itself. The page shows how heavy the first view is for each choice.

For your AI agent

Working with an AI coding agent? Paste this so it knows how to prepare scans for SuperSplat.

Task: prepare a large 3D Gaussian Splatting PLY for superspl.at (limit 10 GB per upload).
Use https://sog.flyreelstudio.eu (runs in the browser, nothing uploaded) or the open-source repo https://github.com/AndriiShramko/shramko-sog-lod-converter.
Output: a Streamed SOG .zip with lod-meta.json at the root and real LOD levels (each level = half of the previous, until <= 1M splats).
Verify before upload: lodLevels > 1, counts decrease, every file in filenames exists (run tools/verify-zip.ts from the repo).
Then upload the .zip at https://superspl.at → Upload.

Who made this, and working together

Andrii Shramko

Andrii Shramko

3D/4D Gaussian splatting · drone & 360° capture · VR · Bydgoszcz, Poland

I'm Andrii Shramko — I scan whole cities and buildings as 3D Gaussian splats with drones and build tools around them. I made this converter because my own scans (250M+ splats) did not fit SuperSplat's upload and the existing tools didn't build real LODs.

Open to interesting people, ready to help teams build ambitious projects — scanning, splat pipelines, viewers, VR, partnerships, licensing or funding.

Write to me

Privacy

Controller: Andrii Shramko, Bydgoszcz, Poland — zmei116@gmail.com. Your PLY files never leave your computer. The server stores only what you send on purpose: feedback and cooperation messages (with a contact if you give one) and, if you allow it, anonymous error reports (browser, GPU, settings, conversion stage, error text — no file, no file name).

Page-use counters are kept without cookies and without IP addresses. Google Analytics is loaded only after you accept it in the banner. Messages and reports are kept for up to 12 months and are used only to reply and to fix the tool.

You can ask for a copy or deletion of your data at any time: write to zmei116@gmail.com.

Feedback

Sent: page version, browser, GPU, screen, your settings, the last errors and the conversion log. Nothing else: no files, no file names, no cookies.