You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Instead of representing 3D scenes with standard polygonal meshes and textures, 3D Gaussian Splatting (3DGS) represents space as millions of tiny, semi-transparent 3D ellipsoids (splats). This technique captures complex features like reflections, glass, thin structures, and fuzzy boundaries (like leaves or hair) with photorealism.
Your output is directly limited by the quality of your inputs. Reconstruction algorithms need sharp, consistent images to compute camera paths and splat densities.
Camera Movement & Coverage
Move Slowly: Keep camera panning slow and deliberate. Motion blur will ruin tracking.
The Orbit Technique: Walk in a circle (360 degrees) around your subject.
Do this at three different heights: looking slightly down, looking straight ahead, and looking slightly up.
Maintain Overlap: Ensure each photo overlaps the last one by at least 70–80%. If capturing a video, do not swing the camera around too quickly.
Lighting & Environment
Avoid Harsh Shadows: Direct sunlight creates sharp shadows and glare that change depending on camera angle. Diffuse, even lighting (like an overcast day or a well-lit indoor room) is ideal.
Static Scenes Only: Any movement in the scene (moving cars, wind blowing leaves, shifting light) will break the alignment phase. Ensure the scene remains perfectly static during capture.
Material Restrictions
Highly Reflective Materials: Mirrors, polished metal, and glass confuse camera solvers because the reflections shift as you move.
Featureless Surfaces: Pure white walls or completely smooth plastic are difficult for alignment software to lock onto. Textures provide the points the software uses to track positions.
You can generate photorealistic Gaussian Splats of virtual characters, weapons, or environments directly from video games by capturing screenshots using built-in photo modes or community-made camera mods.
Step 1: Getting a Free Camera
To capture the 360-degree coverage needed for training, you must be able to move the camera independently of the character.
Official Photo Modes: Games like Marvel's Spider-Man, God of War (2016 & Ragnarok), Space Marine 2, and Cyberpunk 2077 have built-in photo modes. Pause the gameplay and activate the free-camera mode.
Community Mods: For games without native free-cameras (e.g., Elden Ring, Dark Souls series, or The Witcher 3), you can use custom injection tools or camera mods (such as Otis_inf's camera tools or cheat engine tables) to freeze gameplay and unlock the camera.
Step 2: The Capture Process
Once the game action is frozen:
Disable HUD & UI: Ensure all menu overlays, grids, and UI buttons are hidden.
Turn Off Depth of Field (DoF): Set DoF to 0. Background blur will corrupt the training dataset. The entire frame needs to be as sharp as possible.
Lock the Lighting: Do not change filters, brightness, contrast, or the game's time-of-day clock during the orbit, as the solver expects lighting to remain constant.
Capture your Orbit:
Rotate the free camera around your subject, snapping screenshots at regular intervals (aim for 80–150 images).
Take shots from multiple heights (looking down, looking straight, looking up) keeping consistent overlap between frames.
Export: Move the screenshots into a single folder on your PC.
Step 3: Reconstruction
Because screenshots are digital and contain no physical noise, they reconstruct beautifully.
Option A: Drag the folder directly into Postshot or LichtFeld Studio to align camera poses and train the model locally.
Option B: Upload the zipped screenshots folder to a cloud builder like Polycam or KIRI Engine.
Option C: Process the screenshots folder in COLMAP to generate camera tracking data, which can then be imported into desktop training programs.
Training locally gives you total control over privacy, resolution, and output files, but it requires a Windows PC with an NVIDIA GPU (minimum 6GB VRAM, 8GB+ recommended) and CUDA drivers installed.
Step 1: Camera Alignment (SfM)
Before training a splat, software needs to calculate the exact 3D position and angle of the camera for each frame. This is called Structure-from-Motion (SfM).
How to do it: Use RealityScan (mobile app that syncs to Epic Games' cloud) or a local photogrammetry solver like COLMAP.
The Output: You need to export the aligned camera data in COLMAP format (a directory containing a sparse point cloud folder and camera metadata).
Step 2: Training with Postshot (GUI-focused)
Postshot is one of the fastest and easiest local GUI programs for training splats.
Import: Drag and drop your folder of photos or video file directly into the Postshot GUI.
Align Cameras: Postshot has a built-in tracker. Click Import and let it calculate camera positions. You'll see a sparse cloud of points representing camera locations.
Train: Click Train. The 3D viewport will show the splat refining in real-time, sharpening from a cloudy haze into a clear object.
Crop & Export: Use the GUI bounding box tool to crop out background noise. Once satisfied with the quality (usually 5–15 minutes), click Export to save as a .ply file.
Note: Advanced users can automate and batch-process jobs in Postshot via its command line interface (CLI).
Step 3: Training with LichtFeld Studio (GUI-focused)
LichtFeld Studio is a powerful, open-source workstation for training, editing, and managing Gaussian Splats.
Import Aligned Project: Drag and drop your pre-aligned COLMAP project folder (generated in Step 1) into the LichtFeld Studio GUI.
Configure Settings:
Strategy: Select the MRNF training strategy (highly recommended for balanced quality).
Max Gaussians: Set based on scene size (typically 3,000,000 to 12,000,000).
SH Degree: Usually set to 1, 2, or 3 (lower values use less VRAM).
Train: Click Start Training. Watch the model converge live in the viewport.
Interactive Cleanup: LichtFeld Studio features powerful selection tools. Use the brush or lasso tools directly in the viewport to highlight and delete unwanted "floaters" or background structures.
Export: Export the cleaned splat as .ply, .sog, .spz, or as a standalone web viewer.
Note: While the GUI is the primary way to interact with LichtFeld Studio, you can also control and script it via CLI arguments for automated pipeline integrations.
If you want to turn a digital 3D model (mesh) into a Gaussian Splat instead of a physical object, you can use synthetic splatting.
Normally, camera alignment (SfM) is the most time-consuming and error-prone phase of Gaussian Splatting because software has to "guess" camera angles from photos. With a digital model in Blender, we know the exact camera coordinates mathematically. By rendering the model from multiple angles and exporting the exact camera matrices, we can skip tracking altogether and train the splat immediately.
The Automation Scripts
By running two Python scripts inside Blender, you can automate this entire dataset generation process.
Script 1: Camera Sphere Setup
This script creates a collection of cameras uniformly distributed in a sphere pointing directly at your target object, using the Fibonacci Sphere algorithm for even coverage.
importbpyimportmath# PARAMETERSDISTANCE=50.0# Distance of cameras from target objectCOUNT=300# Total cameras to generateTARGET_NAME=""# Put target object name here, or leave empty for (0,0,0)defsetup_camera_sphere(radius, count, target_obj_name=""):
collection_name="Splat_Cameras"ifcollection_nameinbpy.data.collections:
col=bpy.data.collections[collection_name]
forobjincol.objects:
bpy.data.objects.remove(obj, do_unlink=True)
else:
col=bpy.data.collections.new(collection_name)
bpy.context.scene.collection.children.link(col)
target_loc= (0, 0, 0)
iftarget_obj_nameandtarget_obj_nameinbpy.data.objects:
target_loc=bpy.data.objects[target_obj_name].locationphi=math.pi* (3.-math.sqrt(5.)) # Golden angle in radiansforiinrange(count):
y=1- (i/float(count-1)) *2rad=math.sqrt(1-y*y)
theta=phi*ix=math.cos(theta) *radz=math.sin(theta) *radpos= (x*radius+target_loc[0],
y*radius+target_loc[1],
z*radius+target_loc[2])
cam_data=bpy.data.cameras.new(name=f"SplatCam_{i}")
cam_obj=bpy.data.objects.new(f"SplatCam_{i}", cam_data)
col.objects.link(cam_obj)
cam_obj.location=posconstraint=cam_obj.constraints.new(type='TRACK_TO')
ifnotbpy.data.objects.get("Splat_Target"):
empty=bpy.data.objects.new("Splat_Target", None)
empty.location=target_locbpy.context.scene.collection.objects.link(empty)
constraint.target=bpy.data.objects["Splat_Target"]
constraint.track_axis='TRACK_NEGATIVE_Z'constraint.up_axis='UP_Y'print(f"Successfully created {count} cameras in collection '{collection_name}'")
setup_camera_sphere(DISTANCE, COUNT, TARGET_NAME)
Script 2: Rendering & Metadata Export
This script renders the target mesh from every camera generated by Script 1, extracts high-contrast alpha masks (which tell the training algorithm to ignore the background), and exports the camera parameters into standard COLMAP text files (cameras.txt, images.txt, points3D.txt).
Open Blender and import your 3D model. Center it at (0, 0, 0).
Go to the Scripting tab. Create a new script, paste Script 1, and run it. You will see a sphere of cameras appear around your model.
Create another script, paste Script 2.
Edit BASE_PATH (line 9) to point to an empty directory on your drive.
Select the target mesh in Blender, then run Script 2.
Blender will render the mesh from each camera, generate corresponding black-and-white alpha masks, and export cameras.txt, images.txt, and points3D.txt directly to the sparse/0 subfolder.
Launch LichtFeld Studio or Postshot and drag-and-drop the generated folder directly into the GUI.
Since the camera matrices are already fully defined in the files, the software skips alignment and starts training your Gaussian Splat instantly!
Cloud services process your models on remote servers. This is ideal if you have a recorded video file (MP4/MOV) and want high-quality processing without using a powerful desktop GPU.
Scaniverse processes Gaussian Splats completely locally on modern iOS and Android mobile devices. No cloud uploads, subscriptions, or desktop hardware required.
Setup & Capture
Download Scaniverse from the App Store or Google Play.
Tap New Scan and select Splat mode.
Move slowly around your target, aiming to fill in the colored overlay shown in the viewport. Make sure to capture it from multiple vertical angles.
Processing & Exporting
Tap Stop once coverage is complete.
Choose Standard (fast) or High (slower, more detail) processing.
The app trains the splat locally using your phone's processor.
Once completed, inspect the 3D model.
Tap Share or Export to export as a .ply file to your computer for further editing.
Trained splats often contain unwanted background noise, ground planes, or floating artifacts ("floaters") in areas the camera couldn't resolve clearly. You can clean these up using a visual editor.
Editing in SuperSplat
SuperSplat is a free, web-based editor designed for editing .ply files.
Drag and drop your .ply file directly into the window.
Selection Tools: Use the brush, lasso, or bounding box tools in the toolbar to select the messy areas or floaters you want to remove.
Delete: Hit Delete or use the trash icon to clear the selected Gaussians.
Alignment: Use the transform gizmo (W/E/R keys) to rotate, scale, or reposition the entire splat to align it with the grid.
Export: Export the cleaned and optimized file.
Critical: Export Formats & File Sizes
When exporting your clean splat, you will have several file format choices. If you plan to load your splat into the Splatter app on Reddit, pay attention to the format:
.ply (Standard): Large, uncompressed file size. Great for archiving or editing in other software, but too heavy for web applications.
.sog (Splats on Grid - Recommended): This is the smallest, most optimized format your splat can easily get. It compresses the data onto a grid structure, significantly reducing the memory footprint and download size without visible quality loss.
Why .sog is required: Reddit imposes strict upload file size limitations on media and application assets. The Splatter app is designed to load .sog files to ensure instant load times and conform to these Reddit platform constraints.