Pipeline Tutorial

Rendering Tutorial For 3D Gaussian Splatting

How to inspect, clean, compress, publish, and integrate splats after training.

Step 4: RenderingPractical workflow

Tutorial Scope

What This Page Covers

Rendering is where the trained asset becomes usable. The job is not only to open a PLY file. You need to inspect visual quality, remove artifacts, choose a delivery format, tune performance, and decide whether the splat belongs in a web viewer, an editor, a game engine, or a rendered video workflow.

This guide covers viewer choice, file formats, cleanup, compression, coordinate systems, web delivery, engine integration, media export, and QA before publishing.

Start With Inspection, Not Compression

The first render should answer a simple question: is the trained splat worth delivering? Open the source PLY or checkpoint export in a viewer that can orbit, zoom, and inspect the whole scene. Look for floaters, doubled surfaces, missing backsides, unstable colors, giant outlier Gaussians, and areas that only look good from training cameras.

Do this before compression because lossy runtime formats can hide the cause of a problem. If the source PLY has a floater, compression did not create it. If the source is clean but the runtime output shimmers or loses detail, the conversion settings or viewer are likely responsible.

  • Check the scene from training-like views and from slightly novel views.
  • Inspect silhouettes, floors, mirrors, windows, vegetation, and thin wires.
  • Confirm up direction, scale, center, and camera orbit target.
  • Keep the source model untouched until the final runtime file is approved.

Clean And Edit The Splat

Most real splats need a cleanup pass. Browser editors such as SuperSplat are useful for selecting and deleting floaters, cropping unwanted floor or sky, adjusting orientation, and exporting optimized versions. The safest cleanup approach is iterative: remove obvious junk, save a new copy, inspect again, and avoid deleting ambiguous details near silhouettes.

Unlike mesh editing, splat editing changes a cloud of appearance primitives. A selected blob may contribute to multiple views, especially near transparent or reflective regions. Use multiple camera angles before deleting a cluster. If a tool supports brush, lasso, sphere, or box selection, combine them with camera navigation rather than relying on a single screen-space rectangle.

  • Delete isolated floaters in empty space first.
  • Crop capture rigs, operators, black panorama nadirs, and accidental surroundings.
  • Do not over-clean fuzzy edges until you verify from multiple views.
  • Re-export the cleaned model under a new filename.

Understand Runtime Formats

PLY is the common source and interchange format. It is large and slow to download, but it preserves data and is widely supported. SPZ, SOG, SPLAT, and KSPLAT are runtime or compressed formats with different viewer ecosystems. Pick the format based on where the model will run, not only on file size.

For web delivery, SOG and SPZ are especially important because they reduce transfer size dramatically. SOG is designed around PlayCanvas and web delivery, with compressed WebP-backed data and streaming options. SPZ is an open mobile-friendly format from Niantic and is useful when Scaniverse or SPZ-compatible viewers are in the pipeline.

  • PLY: archive, editing, compatibility, large files.
  • Compressed PLY: smaller but still close to source workflow.
  • SPZ: compact mobile-friendly splat exchange format.
  • SOG: web delivery format with strong PlayCanvas and SuperSplat support.
  • HTML viewer export: useful for sharing a self-contained demo.

Web Viewer Strategy

A web viewer has different constraints from a desktop preview. The model must download quickly, decode without blocking too long, fit GPU memory, and remain interactive on a range of devices. A 300 MB PLY may be fine on a workstation and miserable on a phone. Convert or stream before publishing.

Use a viewer that matches your needs. A general viewer is enough for preview and sharing. SuperSplat is better when the scene needs cleanup, publishing, or authoring. PlayCanvas is a strong route for interactive web scenes and apps. Spark and GaussianSplats3D are useful when you are building custom Three.js or WebGL/WebGPU integrations.

  • Set a target size budget before exporting, such as under 30 MB for normal web pages.
  • Use lazy loading, progress UI, and CDN caching for public pages.
  • Test on Safari, Chrome, desktop, and mobile when possible.
  • Avoid shipping source PLY as the default runtime file unless the audience expects large downloads.

Engine And App Integration

Game engines and 3D apps treat splats differently from meshes. A splat provides appearance, not collision, UVs, rigging, or physically meaningful surfaces. In Unity, Unreal, Blender, or PlayCanvas, plan how the splat should interact with cameras, lighting, UI, collision, and other geometry.

For interactive apps, you may need a companion mesh or voxel collision representation. Some workflows generate collision or navigation data separately from the splat, then render the splat as the photorealistic visual layer. This separation is normal: use splats for captured appearance and meshes for physics, occlusion proxies, or gameplay logic.

  • Check coordinate system conversion between PLY, SPZ, SOG, Unity, Three.js, and GLB.
  • Create proxy meshes when collision or occlusion is needed.
  • Use cutouts or crop volumes to remove unwanted visual areas in engines.
  • Keep source splat, runtime splat, and proxy geometry versioned together.

Rendering Images, Video, And QA

For image and video output, a splat editor with camera animation can be faster than bringing the scene into a full DCC tool. Set the camera path, choose resolution, render a still or video, then inspect edges and depth ordering artifacts. If the same scene will be embedded on a website, test both media render and real-time navigation.

Final QA should include visual checks and performance checks. Look for sudden detail loss during camera movement, transparency artifacts, popping in streamed LOD, orientation mistakes, and excessive load time. If the model is part of a public product page, add fallback imagery or a smaller format for devices that cannot render the full asset.

  • Render a few hero stills for quick visual review.
  • Record a short orbit video to catch popping or unstable regions.
  • Measure load time, memory, and FPS on target devices.
  • Reopen the exported runtime file in a second viewer to catch format issues.

Common Failure Modes

  • Publishing source PLY files can make pages slow even when the model renders well locally.
  • Deleting floaters from one view can accidentally remove real surface detail visible from another view.
  • Coordinate systems differ across PLY, SPZ, SOG, Unity, Three.js, GLB, and app-specific imports.
  • Splat scenes do not automatically provide collision, shadows, editable topology, or clean mesh geometry.
  • Compression should be validated visually because file-size wins can hide rare-view damage.

Handoff To The Next Step

  • Keep an archived source model, a cleaned edit model, and a runtime delivery model.
  • Document format conversion commands and coordinate system assumptions.
  • For web delivery, store compressed runtime assets on a CDN-friendly path.
  • For engines, pair the splat with proxy meshes or collision data when interaction is required.
  • Run final QA in the exact viewer or app that users will open.

Reference Tutorials And Docs

These sources were used as research input. The guide above is written as a consolidated 3DGS workflow rather than copied from any single tutorial.