There is a new way to put rich, realistic 3D scenes on screens that don’t have top‑tier GPUs. It looks like magic because it plays like a video but lets you move the camera. The secret is 3D Gaussian splatting. It trades traditional meshes for millions of tiny, colored “splats” that render fast and look great, even on phones. In this guide, you’ll learn what it takes to capture a scene, train the model, compress the result, and render it on the web. We will keep the language simple and the steps practical so you can ship something real.
Why Gaussian splatting is getting attention
Traditional 3D pipelines rely on polygon meshes, UVs, and baked textures. NeRFs (neural radiance fields) brought photorealistic results but often needed heavy compute to render. Gaussian splats sit in the sweet spot. They use a cloud of oriented ellipsoids (Gaussians) with color and opacity, fit directly from photos. The rendering step is surprisingly fast because you can draw them as points and blend. The results are smooth, natural, and handle complex details like foliage or cables that meshes struggle with.
What makes them useful today:
- Speed: Real‑time on laptops and many phones with a decent browser.
- Quality: Soft edges, less “polygon feel,” and good detail preservation.
- Capture simplicity: A phone and some patience are enough.
- Distribution: You can stream splats over the web and interact in the browser.
If you build products in real estate, cultural heritage, e‑commerce, design reviews, or education, splats can reduce effort and shorten time‑to‑demo while delivering visual fidelity people understand at a glance.
What you need before you start
Hardware
You can get useful results with modest gear. Aim for:
- Phone camera with stabilization. Newer iPhones and Android flagships do well.
- Computer with GPU for training. A single NVIDIA GPU with 8–12 GB VRAM works for small scenes. For faster work, 24–48 GB helps.
- Tripod or gimbal if you’re scanning delicate objects.
Software
Pick a friendly toolchain. A solid, end‑to‑end stack looks like this:
- Nerfstudio for data import and training (includes COLMAP and splatting support).
- COLMAP for camera pose estimation (included in many bundles).
- Viewer library for the web such as the community Gaussian splat viewers, or a three.js plugin.
- Optional: A WebGPU‑capable browser for best mobile performance, with fallback to WebGL.
This setup lets you capture, reconstruct, and export in a format you can host on a CDN and embed in a web page.
Capture that works in the real world
Good capture is the single biggest factor in your result. You are not just “taking pictures”; you are building a consistent record of a scene from many angles that a solver can stitch together. Here’s a simple, reliable field method:
Scene prep
Clean the area. Remove moving objects like people or pets. Turn off flickering lights or TVs. If you can, stabilize anything that might sway, like plants near a fan. Lock exposure and white balance on your phone. A fixed look makes the training more stable and reduces ghosting.
Walk pattern
- Move slowly around the subject at a radius that keeps it centered and fills about two‑thirds of the frame.
- Do a full loop at eye level, then a loop slightly higher, then a loop slightly lower.
- Vary distance for context if you need a wider area, but keep overlap between passes.
- Aim for 500–1,500 frames for a room or a small exterior scene; more for complex geometry.
Settings and formats
- Shoot 4K video at 30 or 60 fps, or take rapid photo bursts if your tool prefers stills.
- Use the same lens for the whole capture. Avoid switching ultrawide/tele mid‑scan.
- Disable HDR if it changes exposure per frame. Consistency beats dynamic range here.
What to avoid
- Glass and glossy metal. They reflect the environment and trick reconstruction. If you must, add matte markers nearby to help the solver.
- Fast motion. If the scene contains moving leaves or people, either exclude those parts or capture when wind and traffic are calm.
- Uniform textures. Blank walls and white ceilings are hard. Add a temporary poster or painter’s tape as features, then remove it later.
When in doubt, slower and steadier wins. Reduce micro‑jitter by using two hands or a gimbal. Keep your feet soft and your path smooth.
From frames to splats: training and tuning
Once you have your footage, the pipeline has three steps: extract frames, solve camera poses, and fit the Gaussians. Many tools do this for you with simple commands. The process below illustrates the typical flow; check your chosen toolkit’s docs for exact commands.
1) Extract frames
Split your video into images. A frame every 2–3 frames is often enough. You want overlap between views but not 10,000 near‑duplicate images. Store frames in a dedicated folder. Keep filenames simple.
2) Estimate camera poses with COLMAP
The solver finds where each image was taken and the camera intrinsics. Good coverage, stable exposure, and enough features will lead to a clean sparse point cloud and robust poses. If the solve fails, prune blurry or redundant frames, or add a short additional loop to improve coverage.
3) Fit the splats
Splat training initializes a cloud of Gaussians and iteratively refines position, size, orientation, color, and opacity to match the images. Most tools give you defaults that work out of the box. You can watch a live preview that gets sharper over time.
Useful knobs that actually help
- Max Gaussians: More splats help detail but inflate the file. Start small (1–5 million) for a medium room; scale up only if needed.
- Pruning thresholds: Remove tiny, low‑opacity splats that do not contribute much. It cuts size with minimal visual cost.
- Sh degree or color model: Controls how view‑dependent color is handled. Use simple color for static matte scenes; higher complexity for shiny surfaces.
- Learning rate schedules: Stick to defaults unless the training plateaus early. A short warm‑up followed by a steady decay is common.
On a modern single GPU, a small object can converge in 20–40 minutes. A full room may take 2–3 hours. If times explode, check your frame count; you might be feeding far more images than needed. Less but better often wins.
Compressing and packaging splats for the web
Raw splat files can be large. A medium scene can hit hundreds of megabytes. You can get that down a lot with careful pruning and quantization while keeping quality high.
Prune like a gardener
- Drop splats with minimal opacity or tiny size below a threshold. Many are noise or floaters.
- Cluster near‑duplicate splats and merge them. Slight quality loss, big size savings.
Quantize what viewers won’t notice
- Positions: 16‑bit quantization per axis within a known bounding box is often indistinguishable from 32‑bit for most scenes.
- Colors: Compress to 8 bits per channel. Dither to reduce banding.
- Orientation/scale: Keep precision higher here to avoid shape blur; try 16 bits if quality holds.
Stream smart
Users should see something quickly. Organize splats into chunks so the viewer can draw a coarse version first, then refine:
- Front‑to‑back tiling: Order chunks by camera‑facing priority for your starting view.
- Octree or grid bins: Spatially sort splats to allow view‑dependent loading.
- HTTP range requests: Host single packed files with an index so the browser can request just the bytes it needs.
- CDN: Use a CDN with good small‑file performance or enable range caching.
It is normal to get a 300–600 MB raw scene down to 60–120 MB with careful pruning and quantization, while still looking great on a phone. If you need smaller, accept some blur or remove secondary details in the background.
Rendering on phones and the web
You have two options: WebGL and WebGPU. Both can work. WebGPU gives you more headroom on modern devices, but you need a fallback because not all browsers enable it.
Viewer choices
- Dedicated splat viewers: Lightweight, fast, and ready to embed. Many support mobile and simple UI controls.
- three.js plugins: If your site already uses three.js, a splat renderer plugin lets you integrate with existing scenes, UI, and post‑processing.
- Custom WebGPU: If you need tight control, write your own pipeline. This is more work but can unlock unique streaming and shading tricks.
Performance budgets that keep you honest
Budget by device class. You want 30–60 fps and smooth camera motion:
- High‑end phone: 1–2 million visible splats, medium shader complexity.
- Mid‑range phone: 500k–1 million splats, fewer overdraw layers, simpler shading.
- Low‑end phone or older laptop: 200k–500k splats, static exposure, no fancy effects.
Implement frustum culling and distance fade. If the camera is far away, you don’t need all the tiny splats. LOD (levels of detail) for splats looks like increasing their size slightly and dropping count at distance. This prevents “sparkle” and reduces fragment load.
Interaction and UI
At minimum, offer orbit, pan, and zoom. Add focus points for quick teleports to notable views. For product pages, predefine 3–5 hotspots with callouts that do not block the view. Keep controls simple. Never fight the scroll on mobile; respect touch gestures and avoid hijacking default behavior where possible.
Using splats in AR and product experiences
Splat scenes are great context layers in AR. You can anchor them to a plane or a known marker. Because splats are not meshes, certain AR effects (like real shadows on the floor) need extra steps, but you can still deliver convincing overlays.
Anchoring
- For table‑top objects, use an image marker or a physical card to guarantee repeatable placement.
- For rooms, align the splat’s floor plane with the detected AR plane, then offer a manual nudge for fine alignment.
Occlusion and lighting
Mix a simple depth mask from the AR engine with your splat to hide parts behind real furniture. For lighting, add a soft directional light aligned to the main light in the capture. Consistency matters more than accuracy here.
When to switch to a mesh
For physics or collision, you need a mesh. Use splats to show the scene, then derive a coarse mesh from the depth of the splat cloud for interactions. Keep it invisible and only use it for hits and shadows. This hybrid approach often gives the best of both worlds.
Quality assurance that saves time
You do not need lab‑grade metrics for a commercial rollout, but you should have a short checklist so viewers trust what they see.
Visual checks
- Spin around the subject slowly. Look for floaters (stray splats), holes, and mushy details.
- Check exposure consistency. If colors shift between angles, training may need more frames or a better white balance lock.
- Test on the slowest device you support. Stutter in the first second is okay; sustained jitter is not.
Simple metrics
- File size target: Aim for under 120 MB for general audiences; under 60 MB if your users are on cellular.
- Load time target: First image within 1.5 seconds on Wi‑Fi; 3 seconds on 4G.
- Frame rate target: 30 fps stable on a mid‑range phone.
Troubleshooting common issues
Scene looks fuzzy
Likely too few Gaussians, too aggressive pruning, or camera poses with drift. Increase max splats modestly, reduce pruning thresholds, or refine COLMAP with a few more frames covering weak areas.
Floating artifacts
These are often reflections or moving elements captured inconsistently. Manually mask frames that include moving people or cars. After training, use an editor that lets you select and delete rogue clusters.
Color flicker by angle
If the scene shimmers between viewpoints, your color model may be too simple for reflective materials. Increase view‑dependent capacity or re‑capture with more angles and steadier exposure.
Won’t run on some phones
Provide a WebGL fallback if WebGPU is not available. Lower the default LOD and let the user opt into “High quality.” Avoid shader branches and keep buffers tightly packed to reduce memory.
Team workflow and cost control
If you plan to produce splats at scale, treat the process like a light production line. You do not need a huge team; small improvements compound quickly.
Define your pipeline
- Capture checklist: exposure locked, three loops, coverage landmarks.
- Ingest script: frame extraction, downsampling, metadata logging.
- Training profiles: “Object,” “Room,” and “Facade” with sensible defaults.
- QA template: side‑by‑side viewer and go/no‑go rules.
- Export steps: prune, quantize, index, upload, publish.
Compute planning
A single prosumer GPU can complete 3–5 medium scenes per day with hands‑off training. If you outgrow local hardware, rent a cloud GPU on demand. Watch VRAM usage and training time per scene to forecast capacity. Keep logs; they will tell you when your capture improved or an update changed behavior.
Versioning and rollback
Treat each published scene like a release. Store the capture frames, the training config, and the exported splat. Use semantic versions for changes that affect look or size. If a user reports a problem on a specific device, you need a quick way back to the previous known‑good version.
Shipping responsibly: privacy and licensing
When you digitize places, you also capture people, art, and private details. Keep ethics simple and practical:
- Ask before you scan in homes and offices. Put a “recording in progress” sign in public spaces.
- Blur faces and license plates in frames before training where you can detect them reliably. Removing them after training is harder.
- Respect artwork and brand marks. Get permission for commercial use, or mask them out.
- State how the scene was captured and if any edits were made. This builds trust with viewers.
For internal projects, keep capture data in a restricted bucket. For public projects, include a simple license note on your landing page and a contact for takedown requests. A little clarity goes a long way.
Where splats fit today
Splats are not the answer to every 3D problem. They shine when you need realistic visuals with minimal modeling effort and you can accept a somewhat “soft” geometry layer. Use them for:
- Spaces: Apartments, venues, and showrooms that need quick visual walk‑throughs.
- Objects with fine detail: Plants, textiles, craft items, collectibles.
- Context capture: Backgrounds for AR scenes where exact mesh geometry is not required.
Choose meshes when you need precise dimensions, CAD interoperability, or physics‑heavy interactions. Use both together when you need a convincing backdrop and a few interactive elements.
A realistic first project plan
Here is a simple starter project you can complete in a weekend and share on the web:
- Pick a small, interesting object (a chair or a sculpture) and a well‑lit corner.
- Capture two full loops at two heights, about 600–900 frames total from 4K video.
- Train with a standard “Object” profile for one hour. Watch the preview to confirm sharpness.
- Prune aggressively, then quantize positions to 16 bits. Target under 40 MB.
- Embed in a simple web page with a viewer. Add a caption and a few hotspots.
- Test on a mid‑range phone over cellular. If it loads in three seconds and stays above 30 fps, you nailed it.
This project teaches you the end‑to‑end flow. The second time, you will be faster. The third time, you will start tuning for your audience and brand.
Future‑proofing without overcomplicating
The ecosystem is moving quickly. You do not need to chase every update, but you can make two smart bets:
- Keep raw captures. Future tools can often re‑train faster or better. Frames are forever; models are temporary.
- Choose open formats or at least documented ones. If a viewer disappears, you can still migrate your content.
Expect better mobile rendering paths, smarter pruning, and hybrid pipelines that mix splats and meshes in one scene. Plan for change, but ship today.
Summary:
- 3D Gaussian splatting offers fast, realistic results from simple phone captures and runs well on the web.
- Good capture matters most: steady motion, locked exposure, varied height loops, and enough overlap.
- Training is straightforward: extract frames, solve camera poses, fit splats, and watch the preview sharpen.
- Prune and quantize to cut file size; stream in chunks so mobile users see results fast.
- Use WebGPU where available with a WebGL fallback; budget visible splats by device class.
- For AR, anchor carefully and add a hidden proxy mesh for collisions or shadows if needed.
- Set simple QA targets for file size, first paint, and frame rate; test on the slowest device you support.
- Treat production like a pipeline: capture checklist, training profiles, versioned exports, and rollbacks.
- Handle privacy and licensing early: blur faces, ask permission, and document edits.
- Start small with an object or corner scene, then scale up once the workflow feels repeatable.
External References:
- 3D Gaussian Splatting for Real-Time Radiance Field Rendering (original paper)
- GraphDECO Gaussian Splatting reference implementation
- Nerfstudio: end-to-end tools for NeRFs and splatting
- COLMAP: Structure-from-Motion and Multi-View Stereo
- three.js JavaScript 3D library
- MDN Web Docs: WebGPU API
- antimatter15/splat: web-based Gaussian splat viewer
