04 -- 3DGS Workflow

0 4 -- 3DGS Workflow

📑 Table of Contents — click to navigate

Applies to: C1 and S20 (unified unless noted)
Related: Master Index | 02-PointCloud-Studio | 05-Hybrid-Workflows | 07-Troubleshooting


Overview

3D Gaussian Splatting (3DGS) creates photorealistic viewable scenes from your scan data. The C1/S20 onboard cameras provide the images; the LiDAR provides scale and camera positioning.

Two paths to produce 3DGS:
1. In PointCloud Studio -- simpler, integrated, but limited to ~10-minute scans
2. External pipeline -- Reality Capture + Postshot/Lichtfeld -- handles longer scans, better quality


GPU Requirements

Requirement Minimum Recommended
NVIDIA GPU RTX 3060 / 12GB RTX 4090 / 24GB+
VRAM 12 GB 24 GB+
CUDA 12.8+ Latest
Disk SSD NVMe (3000+ MB/s)

Real-world performance:
- RTX 3060 12GB: ~10-13 hours for medium quality on large scan (avsupport)
- RTX 5090 32GB: 3-4 hours for ~10-minute scan; 12+ hours for 0.2s interval scan (mr_red1991_63830)
- Bottleneck is GPU memory -- "2% an hour because of memory of GPU" (mr_red1991_63830)


Method 1: PointCloud Studio (Integrated)

When to Use

  • Scans under 10 minutes
  • Simple, single-scan projects
  • Don't need external camera integration

Step-by-Step

Beta.7 and earlier:
1. Process point cloud first (see 02-PointCloud-Studio)
2. Ensure boxes checked during processing: Undistort Left, Undistort Right, Export colorized point cloud
3. After point cloud is finished -> click "3D Gaussian" button in Data Management
4. Click "+" -> browse to project's output/ folder
5. Match the "task name" to your project
6. Select quality settings (see below)
7. Click "Process"

Beta.9 (current):
1. During Data Calculation setup, enable "Gaussian Generation" checkbox
2. 3DGS generates automatically after point cloud processing
3. If you forgot: click "Data Calculation" again -> select project -> enable "Gaussian Generation" (Luna)

Quality Settings

Setting VRAM Usage Processing Time Output Quality
Speed Low Fastest Basic
Balanced Medium Moderate Good
Quality High Slow Best (may exceed VRAM)

Start with lowest settings first (avsupport). Even on RTX 5090 32GB, both Balanced and Quality go into the red for VRAM (iris.digital.pl).

3DGS Process Stages

  1. GLOMAP/SfM stage: CPU-bound -- VRAM doesn't affect this stage. May appear stuck at 14% or 45% for hours -- this is normal.
  2. Gaussian training: GPU-bound -- this is where VRAM matters most.

What to Watch During Processing

  • CPU activity = processing is happening (even at "dreadful 14%")
  • GPU activity = training stage
  • Do NOT let PC go to sleep -- screensaver is fine, sleep is not (avsupport)
  • Processing time scales roughly 1:4 (30-minute scan 2 hours processing)

Quality Improvements by Version

  • Beta.1->Beta.4: Background separation improved (less "falling sky" where sky fuses with trees); some transparency introduced in difficult areas (avsupport)
  • Beta.7: Greyscale masks now include values outside 0/255 -- improved edge handling
  • Beta.4->Beta.7: Significant improvement in point cloud coloring (philippkreiser)

Method 2: External Pipeline

Use when scans exceed 10 minutes or you need higher quality than PCS produces.

Reality Capture -> Postshot Pipeline

This is the community-standard pipeline developed by iris.digital.pl.

Step 1: Export Data from PCS

Process point cloud in PCS with these settings:
- Undistorted Photo Output: ON (generates Undistort/ folder)
- Export colorized.las: ON

You need these files:
- colorized.las (dense colored point cloud)
- xyzopk.txt from Undistort/ folder
- All folders from Undistort/ (left, right, left_mask, right_mask)

Step 2: Import into Reality Scan 2 (RS2)

  1. Import images: Add ALL undistorted images from Undistort/left/ and Undistort/right/
  2. With masks OR without masks -- community is unsure which is correct
  3. Import external photos: Add any supplementary phone/camera photos
  4. Import trajectory: In Alignment menu -> Import Trajectory -> select xyzopk.txt
  5. Settings for trajectory import (verified working by AVsupport):
    • Image X = lon Image Y = lat Image Z = alt
    • Omega Phi Kappa
    • Euler as XYZ photogrammetric OPK conversion
    • Coordinate system: Computer Vision
    • Ignore first line: Yes
    • Local Euclidean
    • Use de focal length to group camera intrinsics
    • Accuracy from file and edit missing components
  6. Import LiDAR: Import colorized.las
  7. Mobile LiDAR Exact Geo=Yes
  8. Local Euclidean
  9. Use camera poses from priors
  10. Single camera

Step 3: Alignment in RS2

  1. With all images in the project, click "Alignment"
  2. This takes ~2 hours for a 10-minute scan (iris.digital.pl)
  3. LiDAR cloud + C1 camera reproductions should appear in RS2

Step 4: Export from RS2

Export cameras: Export as .csv or COLMAP format

CSV header fix: The exported CSV first line may be incorrect. Replace with:

#name,x,y,alt,yaw,pitch,roll,f,px,py,k1,k2,k3,k4,t1,t2

Paste this line in if the export is wrong (iris.digital.pl).

Export sparse point cloud: This file is large -- go to CloudCompare for cleanup.

Step 5: CloudCompare -- Point Cloud Prep

  1. Import the sparse point cloud from RS2
  2. Run subsampling to reduce point count
  3. Run SOR filter (Statistical Outlier Removal) to remove noise
  4. Save the clean, light version
  5. Minimum number of gaussians = number of points -- plan accordingly for your desired splat size

Step 6: Postshot -- Train 3DGS

  1. Import into Postshot:
  2. cameras.csv from RS2
  3. ALL photos (C1 undistorted + external)
  4. Subsampeled point cloud from CloudCompare
  5. Postshot v1.1 has 4 quality levels for camera alignment
  6. Train the gaussians

Postshot vs PCS quality: "Most of the GS I've posted was trained in Postshot" (iris.digital.pl). Postshot consistently produces better quality than PCS.

Alternative: Reality Capture -> Lichtfeld Studio

Same RS2 workflow, but export as COLMAP and import into Lichtfeld Studio (free, open-source). See 08-Third-Party-Tools.


Upload & Sharing

SuperSplat (Free)

  • Purpose: Editor and viewer -- cannot train splats
  • Upload .ply from PCS or Postshot output
  • Features: color correction, black point adjustment, cleanup
  • Public sharing via superspl.at links
  • Note: By uploading you agree to their terms -- they may own your data (avsupport)

Arrival.space

  • Web-based viewer with portal navigation
  • Connect multiple scans via portals for virtual tours
  • Embedding capability

Known Issues

"Falling Sky" / Background Bleed

  • Symptom: Sky/background color bleeds into trees, building edges
  • Cause: Poor foreground/background segmentation + overexposed images
  • Improved in Beta.4+ but still present
  • Workaround: None in PCS. External pipeline (RS2->Postshot) may produce better results.

Scan Duration Limit

  • Critical: Scans >10 minutes universally fail 3DGS creation in PCS (iris.digital.pl)
  • Point clouds are fine -- only the GS generation fails
  • Fix: Use Reality Capture + Postshot pipeline

3DGS for Multi-Scan (Stitched) Projects

  • Problem: Can create 3DGS from individual scan, but unclear if possible from combined/stitched point cloud
  • Community question: Unresolved -- likely requires external pipeline

Transparency in Difficult Areas

  • Some Beta versions introduced transparency in gaussians where geometry is ambiguous
  • "It's not pretty" on poor segmentation cases

Best Practices

  1. Use lowest quality setting first -- test before committing to long processing
  2. Disable computer sleep -- processing may fail on resume
  3. Keep scans under 10 minutes for PCS 3DGS
  4. Use 0.5s interval (GS mode) for balanced quality/size
  5. For longer scans: External pipeline (RS2->Postshot) is mandatory
  6. NVMe SSD significantly improves processing speed (mda237_10136)
  7. Point Cloud mode + 0.2s gives more images but much heavier files -- only for advanced use
← Back to Manual Index

Get the Weekly Field Report

Drone intel before it hits the blog. Plus early access to the DMA After Action Report every Friday.

Sign Up