Gaussian Splats3DGSHow ToToolsPostshotPolycamLuma

Creating Gaussian Splats: Postshot, Polycam, Luma

A practitioner guide to creating Gaussian splats with Postshot, Polycam, and Luma AI — capture, processing, costs, and outputs

Alex Tolson

Alex Tolson

May 18, 2026

Gaussian Splatting produces photorealistic, navigable 3D scenes from a video walkthrough or a set of photos. Three tools have made the workflow accessible without writing a line of code: Postshot (Windows desktop), Polycam (mobile + web), and Luma AI (mobile + web). This is the practical guide — what to capture, which tool to use, what comes out, and what it costs.

For the underlying theory, see Gaussian Splats: The Next-Gen 3D Reconstruction. This post assumes you know what a splat is and want to make one.

What you need to capture

The capture step is more forgiving than photogrammetry — no GCPs, no flight plan, no overlap percentage to hit. But the rules below decide whether your splat looks photorealistic or like soup.

Video or photos

Either works. Video is faster to capture and gives the optimiser more data; photos give you sharper input frames. In practice:

  • Video: 4K at 30 or 60 fps, ~1-3 minutes for a typical scene. Walk slowly, keep the camera steady, cover the object from many angles and heights.
  • Photos: 100-400 photos for a typical object or room. Move around the subject in a spiral, taking shots every 15-30 degrees, at several heights.

A phone with a recent main camera (iPhone 13 Pro or newer, Pixel 7+, Samsung S22+) is enough. Wide-angle lenses are fine but avoid the ultra-wide — heavy distortion confuses Structure from Motion.

Coverage

You need to see every surface from at least two angles, ideally three or more. The optimiser builds Gaussians where it has enough information; gaps in coverage show up as smeared blobs or holes.

For an object, orbit it at low, mid, and high heights. For a room, walk every wall, look up at the ceiling, look down at the floor.

Lighting

Even lighting is your friend. Overcast outdoor light is ideal. Indoor scenes need diffuse light — strong directional lighting bakes harsh shadows into the Gaussians. Avoid scenes that change while you capture (clouds moving, lights flickering, people walking through).

What kills a capture

ProblemWhy it hurtsFix
Motion blurSfM can’t find features in blurry framesSlower walk, higher shutter speed, image stabilisation on
Reflective surfacesGaussians overfit to reflections, producing floatersCapture more angles around the reflective surface
Transparent surfacesGlass doesn’t have features to triangulateTreat as missing — splat will be hollow there
Repeating patternsSfM mis-matches features (brick walls, tiled floors)Capture wider context, vary heights
Featureless surfacesBlank white walls, snow, waterAdd temporary markers or accept holes
Scene movementTrees in wind, people, vehiclesCapture early morning or use shorter capture windows

Want to try it now? Open a Gaussian splat in the browser — free, no signup, your file stays on your computer.

The three tools, compared

PostshotPolycamLuma AI
PlatformWindows desktopiOS, Android, webiOS, Android, web
ProcessingLocal GPUCloudCloud
GPU requiredRTX 3060+ recommendedNone (cloud)None (cloud)
Free tierFree beta (no cost yet)10 free captures, watermarkUnlimited free captures
Paid tierExpected $20-30/mo at launch$20/mo (Polycam Plus)$9.99/mo (Luma+)
Typical processing time30-90 min (RTX 4090)15-45 min15-30 min
Max input framesUnlimited (local)250 photos / 2 min video~5 min video
Output formats.ply, .splat, .ksplat, video.ply, .splat, GLB, video.ply, GLB, USDZ, video
Editing toolsCrop, trim, clean up floatersLimitedLimited
Best forQuality-focused users with a GPUMobile capture + AEC workflowsEasiest path, fastest results

Postshot

Postshot is a Windows desktop application from Jawset (the same people behind Jawset Synthesis). It runs the entire pipeline locally — Structure from Motion, training, export. Because everything is on your machine, there are no upload limits, no per-capture fees, and you control every parameter.

You need a CUDA-capable GPU. An RTX 3060 will work for small scenes; an RTX 4070 or better is realistic for production. Training a 1-million-Gaussian scene on an RTX 4090 takes around 30 minutes. The same scene on an RTX 3060 might take 2-3 hours.

The output quality is the highest of the three because you can train for longer, tune the parameters, and clean up floaters before export. Postshot exports .ply, .splat, and .ksplat — covering every browser viewer in current use.

Polycam

Polycam started as a photogrammetry app and added Gaussian Splatting in 2024. The capture experience is excellent — the app guides you through coverage, warns when you’re moving too fast, and uploads automatically. Processing happens in their cloud, so a phone with a basic GPU is fine.

The catch is the free tier. Free captures get a watermark and limited export. The Plus tier ($20/mo) removes both and adds higher quality processing. For occasional captures, the free tier is fine; for client work, you’ll pay.

Polycam also keeps your capture history online, which doubles as a backup. It’s a good fit for AEC users who already use Polycam for room scans and want to add splats to the same library.

Luma AI

Luma is the easiest of the three. Open the app, point the phone, walk around. The capture coaching is the most polished I’ve used — it shows you which angles you’ve covered and which you haven’t, in real time. Processing is cloud-based and free, with unlimited captures on the free tier.

The trade-off is control. You can’t tune training parameters, you can’t easily clean up the output, and the export options are narrower than Postshot’s. But for “I need a splat of this thing today,” Luma is the fastest route.

Luma also supports text-to-3D and image-to-3D generation alongside its splat workflow — separate features, but worth knowing they’re in the same app.

Step-by-step: Postshot

  1. Capture footage: 1-3 minute video walkthrough or 100-400 photos. Save to your machine.
  2. Open Postshot, click New Project, drag your video or photos in.
  3. Run SfM: Postshot uses an internal SfM implementation. Hit Process — this takes 5-15 minutes for a typical capture.
  4. Inspect cameras: Confirm the SfM solution looks correct (camera positions form a smooth path around the subject). Bad SfM means a bad splat.
  5. Train: Set the target Gaussian count (start with 1 million for a small object, 3-5 million for a room) and hit Start Training. Watch the live preview converge over 30-90 minutes.
  6. Clean up: Use the bounding box and floater removal tools to crop the scene and delete stray Gaussians.
  7. Export: Choose .splat for browser delivery, .ksplat for the Three.js Gaussian Splatting renderer, or .ply for maximum compatibility.

Step-by-step: Polycam

  1. Open Polycam, tap Capture, choose Gaussian Splat mode.
  2. Walk around the subject following the on-screen guidance. The app turns the coverage indicator green as you go.
  3. Tap Process when coverage is complete. Upload runs in the background; processing happens in Polycam’s cloud.
  4. Wait 15-45 minutes for the splat to finish. You’ll get a push notification.
  5. Open in the web viewer to inspect. Polycam’s web viewer is decent but not the best — export and view elsewhere for client delivery.
  6. Export: Tap the share menu, choose .ply or .splat. GLB export wraps the splat in a glTF container — useful for some 3D engines, not for browser splat viewers.

Step-by-step: Luma AI

  1. Open Luma AI, tap Capture, select Free Form or Object mode (Object guides you to orbit a central subject; Free Form is for rooms or larger scenes).
  2. Follow the coverage UI — Luma’s is the most explicit, showing you a sphere of camera positions to fill.
  3. Tap Process when ready. Upload happens automatically.
  4. Wait 15-30 minutes. Luma typically processes faster than Polycam.
  5. View in the Luma web app to QA the result.
  6. Export: .ply for splat delivery; GLB or USDZ if you need a mesh fallback (Luma also generates a mesh approximation alongside the splat).

Output file formats

The three formats you’ll see in practice:

FormatCompressionTypical size (1M Gaussians)Viewer support
.plyNone (binary)200-300 MBUniversal — every splat viewer
.splatLight packing150-250 MBSuperSplat, Spark, mkkellogg, most browser viewers
.ksplatOptimised for streaming80-150 MBThree.js Gaussian Splatting (mkkellogg)
.spzNiantic compressed30-60 MBSpark, growing support

For a future-friendly delivery format, .spz from Niantic is the most compact — typically 2-5x smaller than .splat for the same scene. Postshot and the open-source splat-transform tool can convert .ply or .splat to .spz. Expect deeper coverage in a follow-up post on compressed splat formats.

For now: deliver .splat if you want the broadest viewer compatibility, .ksplat if you know the client viewer is mkkellogg, and .spz if file size matters more than universal support.

Common pitfalls

Motion blur in video frames. Cell-phone video at low light shutter speeds produces blurry frames. SfM throws those frames out and the optimiser gets less data. Capture in good light or use a camera with proper image stabilisation.

Reflective surfaces eat your splat. A car bonnet, a polished floor, a window — these reflect the environment differently from each viewpoint, so the optimiser places Gaussians at the reflection rather than the surface. The result is floaters in front of the reflective object. Capture more angles around the reflective surface to give the optimiser enough information to separate reflection from geometry.

Scene scale is unitless. A Gaussian splat has no real-world units by default. The output is dimensionless. If you need to measure anything from the result, that’s the wrong tool — capture with photogrammetry instead. See Gaussian Splats vs Photogrammetry vs NeRF for the full comparison.

Bounded scenes work best. A single room, a single building, a single object. Splatting an entire city block produces a splat that’s too sparse to look good. Capture bounded scenes one at a time.

Don’t try to splat large outdoor sites. Drone-based splatting of a 10-hectare quarry will produce a low-quality splat with massive file sizes. Use photogrammetry or LiDAR for sites at that scale.

Delivering the splat

Once you have a .splat or .ply, the next problem is getting it to a client. Splat files are large (100-300 MB) and need a specialised browser viewer. A Dropbox link to a .splat doesn’t work — there’s nothing on the client’s machine that opens it.

The practical options:

  1. Host the file yourself and link to a public splat viewer (works, but you’re responsible for the page, the viewer, and the hosting).
  2. Use the splat viewer built into the capture tool (Polycam and Luma both have web viewers — fine for casual sharing, not branded).
  3. Use a delivery platform that renders splats in the browser with your brand.

Swyvl accepts .splat, .ply, and .spz uploads and renders them in a sandboxed browser viewer (SuperSplat or Spark, depending on the file). You organise the splat under a site and a capture session alongside the rest of the project — photos, video, point clouds, orthomosaics — and share a single branded link. The client opens the link and navigates the splat in their browser. No app, no download, no separate tool.

For more on splat delivery alongside other spatial data, see How to Share a 3D Model Online.


Gaussian Splatting has moved from research project to practical deliverable in under three years. The three tools above cover almost every realistic capture scenario. For quality and control, use Postshot. For mobile capture and AEC integration, use Polycam. For the fastest, lowest-friction path, use Luma. All three produce splats that a modern browser can render — the rest is just delivery.

Alex Tolson

Alex Tolson

Co-founder of Swyvl. Eight years capturing the world in 3D — underground mines, the Great Barrier Reef, and everything in between. Previously co-founded Lateral Vision, a 3D visualization company and Google Street View contractor.

Share spatial data the right way.

Swyvl lets you upload your LAS, GeoTIFF, drone video, and 3D models and share them with clients via a branded portal — no software required on their end.

Get started free

Not ready to sign up? See Swyvl live in 30 minutes.

Related articles

Back to all posts