Gaussian Splatting v2: 1-Minute 3D Scanning
Needed to 3D scan products for e-commerce. Traditional photogrammetry took hours and required a professional setup. Gaussian Splatting v2 changed everything - grabbed my phone, walked around the object, and got a usable 3D model in under a minute.
Problem
Scanned a coffee cup from 50 photos. Reconstruction worked, but had noticeable
artifacts: floating blobs, weird shadows, and the handle wasn't connected properly.
Model looked "ghostly" with transparency issues.
Warning: High splat variance in regions [x,y,z]
What I Tried
Attempt 1: Took 100 more photos - made artifacts worse, not better.
Attempt 2: Changed lighting conditions - introduced new artifacts.
Attempt 3: Tried denoising parameters - model lost detail.
Actual Fix
The issue was poor photo coverage and inconsistent camera angles. Gaussian Splatting v2 is sensitive to capture quality. The fix: 1) Use the camera guide to ensure even coverage, 2) Enable adaptive density control, and 3) Use the "refine" pass which was added in v2 specifically for this.
# Improved reconstruction setup
from gsplat import GaussianSplattingPipeline
pipeline = GaussianSplattingPipeline(
device="cuda",
refine_iterations=5000, # v2: refinement pass
)
# Training with artifact reduction
output = pipeline.train(
image_dir="photos/coffee_cup/",
config={
# Adaptive density control
"adaptive_density": True,
"density_thresh": 0.5,
# Refinement pass (v2 feature)
"refine": {
"enabled": True,
"iterations": 3000,
"lambda_dssim": 0.2, # Perceptual loss
"lambda_normal": 0.5, # Surface normal consistency
},
# Splat pruning
"prune": {
"enabled": True,
"threshold": 0.01, # Remove weak splats
"frequency": 100, # Prune every 100 iterations
},
# Camera optimization
"optimize_cameras": True,
"camera_refinement": True,
}
)
# Export clean model
output.export("coffee_cup_clean.ply")
Problem
Used iPhone 14 Pro for scanning. Quality was noticeably worse than DSLR examples.
What I Tried
Attempt 1: Enabled ProRAW mode - too slow, processing took forever.
Attempt 2: Tried 4K video instead of photos - better but motion blur issues.
Attempt 3: Used telephoto lens - couldn't focus close enough.
Actual Fix
Mobile phone issues come from: small sensor noise, lens distortion, and rolling shutter. The v2 mobile mode specifically addresses these. Also, the video frame extraction quality parameter needs to be higher than default.
# Mobile-optimized configuration
pipeline = GaussianSplattingPipeline(
mode="mobile", # v2 mobile mode
mobile_config={
# Video processing
"video_fps": 60, # Higher FPS for better coverage
"extract_quality": "high", # Not "medium"
"frame_skip": 2, # Extract every 2nd frame
# Mobile-specific corrections
"rolling_shutter_correction": True,
"lens_distortion_correction": True,
"noise_reduction": {
"enabled": True,
"strength": 0.3,
},
# Image enhancement
"sharpening": 0.2,
"contrast_enhancement": 1.1,
}
)
# For best results, use video + photo hybrid
# 1. Capture 10-second video circling object
# 2. Add 10-15 static detail photos
# 3. Process together
What I Learned
- Lesson 1: Even photo coverage matters more than quantity - use the camera guide.
- Lesson 2: Mobile mode requires specific corrections - don't use default config.
- Lesson 3: Refinement pass in v2 is essential for clean models - don't skip it.
- Overall: Gaussian Splatting v2 is incredible for quick scans, but technique matters.
Production Setup
# Install Gaussian Splatting v2
git clone https://github.com/nerfstudio-project/gsplat.git
cd gsplat
# Install dependencies
conda create -n gsplat python=3.10
conda activate gsplat
pip install -r requirements.txt
# For mobile scanning
pip install opencv-python-headless pillow
# Test installation
python -c "from gsplat import GaussianSplattingPipeline; print('OK')"