Gaussian splat tools explained: what each one actually does in the pipeline
By Atlas World Model EditorialUpdated 5 min read
Independent article. Not affiliated with any vendor on this page.
Key facts
| The confusion | These tool names sit at four different stages, so "which is best" usually has no answer until you say which stage(as of 2026-09-07) |
|---|---|
| Stage 1 — capture | Photos or video of a real place; overlap matters more than camera quality(as of 2026-09-07) |
| Stage 2 — train | Turns the captured images into splats; the step that costs time and compute(as of 2026-09-07) |
| Stage 3 — view | A viewer renders an existing splat file; it never creates one(as of 2026-09-07) |
| Stage 4 — import | Engines need a splat renderer plus a separate collision proxy(as of 2026-09-07) |
| Spark (viewer runtime) | MIT-licensed three.js renderer reading .ply, .spz, .splat, .ksplat and .sog(as of 2026-09-07)source |
| Generative shortcut | The Marble World API returns .spz and .ply splats, a mesh and a video without a capture session(as of 2026-09-07)source |
| How few photos | World Labs says Atlas reconstructs from two or three images — self-reported, not independently reproduced(as of 2026-09-07)source |
Ask which Gaussian splatting tool is best and you will get a list mixing phone apps, desktop trainers, research frameworks, browser renderers and generative APIs — as if they were alternatives to each other. They are not. Most of them cannot do each other’s job at all. Product names below are used only to identify the tools; this page describes the pipeline stage each one occupies rather than benchmarking their output.
The pipeline has four stages
Almost every question about splat tooling dissolves once you know which stage you are asking about.
- Capture — get images of a real place.
- Train — turn those images into a splat.
- View — render a splat file that already exists.
- Import — put it in an engine and make it useful.
A phone scanning app covers stages 1 and 2. A research framework is stage 2 only. A browser viewer is stage 3 and can never be anything else. A generative world model such as Marble skips 1 and 2 entirely. “Best” is only meaningful once the stage is named.
Stage 1: capture
You are giving the trainer enough angles to solve for geometry. What matters, roughly in order:
- Overlap. Every surface should appear in several frames from meaningfully different positions. This is the single biggest determinant of quality, and it is where most first attempts fail.
- Coverage. Walk the whole space, including the boring parts. Gaps become artefacts, and the trainer will confidently invent something wrong.
- Consistent lighting. Move around the light, not the light around the scene. Changing exposure mid-capture confuses the solve.
- Stillness. People, pets and moving leaves become smears. Splats assume the world held still.
Phone capture is genuinely good enough for most scenes. Polycam and Luma are the common consumer entry points, and Scaniverse is a phone-native option in the same space; each hides stage 2 behind their own service, so you capture and receive a result. For classical capture, plan on dozens to hundreds of overlapping photos, which is the working assumption behind the guidance above.
Stage 2: train
This is where the images become splats, and it is the stage with real cost — minutes to hours of GPU time depending on scene size and quality target.
Three ways to get through it:
A hosted service does it. The consumer scanning apps take this route. Least control, least effort, and often the sensible choice.
You run a trainer. Postshot is a desktop route; Nerfstudio is the open-source framework most research work builds on. You get parameter control, local iteration and no upload of your source material — in exchange for setup, a capable GPU, and knowing what the parameters do. This is the right tier if you are producing splats regularly or need them to look a particular way.
You skip it. Generative world models produce the scene directly. The Marble World API takes text, one image, several images, a panorama or video and returns Gaussian splat and GLB mesh exports (World Labs docs) with no capture session and no training run. Atlas goes further on the reconstruction side: World Labs reports faithful results from two or three reference images (The Decoder), a figure that is self-reported and not independently reproduced, and Atlas remains early access.
The distinction that matters between routes two and three: a trainer reconstructs what was photographed, while a generative model invents whatever you did not photograph. For a location that must match reality, that difference is the whole decision.
Stage 3: view
A viewer renders a splat someone else produced. It cannot create one, and no setting inside it will.
This trips people up because viewers are the most visible tools in the category — they are free, they open in a tab, and they are what you meet first when someone shares a scene. Spark, World Labs’ MIT-licensed renderer for three.js, reads .ply, .spz, .splat, .ksplat and .sog, and it is the runtime behind the free splat viewer on this site — drop a file in and it renders locally, with nothing uploaded. If your file will not open at all, the guide to opening splat files walks through the usual causes.
One naming note: several unrelated products are called Spark, including offerings from other large companies. The one in this pipeline is sparkjsdev/spark.
Stage 4: import
Getting a splat into Unity or Unreal takes two things, and the second is the one people discover late.
A renderer. Neither engine draws splats natively, so you need a plugin or runtime that can. This part is well documented by whichever plugin you choose.
A collision proxy. A splat has no surfaces — it is oriented, coloured blobs that reproduce an appearance. Nothing can collide with it, cast a shadow onto it, or be occluded by it in the usual way. So you add an invisible rough mesh, either exported from your scene tool or built by hand out of boxes and planes, and let the player collide with that while looking at the splat.
Skipping the proxy is why so many splat environments are demos rather than levels. The game development use case covers how this lands in practice, and the object-versus-scene split is in 3D object vs 3D scene generation.
Which tool sits where
| Tool | Capture | Train | View | Import |
|---|---|---|---|---|
| Polycam, Luma, Scaniverse | Yes | Hosted for you | In-app | Via export |
| Postshot | No | Yes, desktop | Preview | Via export |
| Nerfstudio | No | Yes, framework | Preview | Via export |
| Spark | No | No | Yes, web | It is the renderer |
| This site’s splat viewer | No | No | Yes, web | No |
| Marble | Not needed | Not needed | Web | Splat and mesh export |
| Atlas | Not needed | Not needed | — | Early access only |
Read the table by column, not by row. Nothing here is a competitor to everything else in its row.
Three ways this goes wrong
Expecting a viewer to generate. Loading photos into a viewer does nothing. Viewers take .ply and .spz files, not JPEGs.
Comparing a service to a framework. “Polycam vs Nerfstudio” is a question about how much control you want over stage 2, not about which produces better splats. A managed service and a research framework are answers to different questions.
Capturing for a splat like you would for a photo. Photography rewards one good angle. Splatting rewards many mediocre ones with heavy overlap. The instinct to find the best shot and move on is exactly what produces holes.
Where to go next
- Free splat viewer — open a
.plyor.spzin the browser - PLY vs SPZ explained — choosing an export format
- How to open Gaussian splat files — when a file will not load
- Gaussian splatting vs NeRF — why splats displaced the earlier approach
- Marble API guide — the generative route, with code
- What is a world model? — where generative scene tools fit in the wider category
Sources
Frequently asked questions
What is the difference between Polycam, Luma and Nerfstudio?
They sit at different points in the same pipeline. Polycam and Luma are consumer-facing: you capture on a phone and their service handles training, so you get a result without running anything yourself. Nerfstudio is an open-source research framework you run, which gives you control over training at the cost of setup. Comparing them directly is comparing a service to a toolkit.
How many photos do I need for a Gaussian splat?
For classical capture-and-train, dozens to hundreds with generous overlap — every surface should appear in several frames from different angles. Generative world models change this arithmetic: World Labs reports Atlas working from two or three images, though that figure is self-reported.
Can I open a .ply splat without installing anything?
Yes. Splat files render in a browser through a WebGL runtime, which is what the free splat viewer on this site uses. Nothing is uploaded to run it. The step-by-step version is in the guide to opening splat files.
If I use Marble, do I still need to capture and train?
No, that is the point of the generative route. You supply text, an image, several images, a panorama or video, and it returns a finished world with Gaussian splat and mesh exports. There is no capture session and no training run to babysit.
What is Spark?
An MIT-licensed Gaussian splat renderer for three.js, published by World Labs on GitHub as sparkjsdev/spark. It reads .ply, .spz, .splat, .ksplat and .sog. It is a renderer, not a generator — it displays splats that something else produced. Note that several unrelated products are also called Spark.
Can I put a Gaussian splat in Unity or Unreal?
Yes, with a plugin or runtime that can render splats, since neither engine handles them natively. You also need a separate collision proxy — a rough mesh — because a splat has no surfaces to collide with. Skipping that step is why players walk through splat environments.
Which splat format should I export?
Broadly: .ply for compatibility and editing, .spz when file size matters. The trade-offs, including what each format keeps and drops, are covered in the PLY vs SPZ guide on this site.
Related guides
- Free Online Gaussian Splat Viewer
- Gaussian splat file formats: .ply, .spz, .splat and .ksplat
- How to open a .ply or .spz Gaussian splat file
- 3D Gaussian splatting vs NeRF
- Image to 3D: object generators and scene generators are not the same tool
- Marble World API explained: endpoints, code examples and exports (independent guide)
- What is a world model? The three kinds, and the one question that separates them
- Atlas World Model for game development: from prompt to Unity and Unreal