05 -- Hybrid Workflows

0 5 -- Hybrid Workflows

📑 Table of Contents — click to navigate

Applies to: C1 and S20 (unified unless noted)
Related: Master Index | 04-3DGS-Workflow | 08-Third-Party-Tools


Overview

Hybrid workflows combine SHARE scanner data with external cameras (DSLR, drone, phone, 360 cameras). The goal: LiDAR provides accurate geometry and camera positioning -- external cameras provide high-resolution imagery to produce professional-quality 3DGS.


C1 + External Photos Pipeline

Prerequisites

  • C1 scan at 0.5s interval (GS mode)
  • Point cloud processed with Undistorted Photo Output ON
  • External camera: DSLR, mirrorless, or phone

Method 1: Reality Scan 2 -> Postshot (Iris Digital Workflow)

This is the community-validated pipeline. Full step-by-step in 04-3DGS-Workflow.

  1. Export from PCS: colorized.las, xyzopk.txt, all Undistort/ folders
  2. Import all into Reality Scan 2 (RS2)
  3. Add external photos (phone/DSLR)
  4. Align -- RS2 uses LiDAR cloud for camera alignment
  5. Export cameras as CSV (fix header line)
  6. Export sparse point cloud -> CloudCompare -> subsample + SOR filter
  7. Import cameras CSV + photos + subsampled point cloud into Postshot
  8. Train 3DGS

Key insight: RS2 is used BEFORE Postshot -- to leverage LiDAR for camera alignment instead of Postshot calculating cameras from scratch (iris.digital.pl).

Method 2: C1 Images + External Photos -- Postshot Only

For scans under 10 minutes where PCS 3DGS works:
1. Process point cloud in PCS with Undistorted Photo Output ON
2. In Postshot: import ALL photos (C1 undistorted + external)
3. Import trajectory from xyzopk.txt
4. Train directly in Postshot

Method 3: External Camera Only (No LiDAR in GS)

For maximum quality when LiDAR data isn't needed in the splat:
1. Sony a7rIII on tripod -- walk a loop around subject (13mm + 35mm lens)
2. Phone photos for supplementary coverage
3. Import everything directly into Postshot v1.1
4. Postshot v1.1 with 4 alignment quality levels produces high-quality GS
5. "There is no C1 data in that scan" -- pure photogrammetry GS works for architectural visualization (iris.digital.pl, May 26)


C1 + Drone Integration

Challenge

Combining terrestrial LiDAR with drone imagery is complex. Several users have attempted this with mixed results.

Reality Scan 2 Approach

  1. Scan with C1 normally
  2. Fly drone for aerial imagery
  3. In RS2: import undistorted C1 images first, apply trajectory
  4. Import drone images as separate component
  5. Align all together
  6. Problem: RS2 may reject LiDAR point cloud without relevant images -- C1 undistorted images must be imported first (avsupport)

Metashape Approach

  • Limitation: Metashape Standard does NOT import LiDAR point clouds -- Pro version required (avsupport)
  • If you have Pro: C1 trajectory can provide camera positioning for drone alignment
  • RTK data from C1 would give better camera alignment in Metashape/RS2 (pierro5261)

360 Camera Integration

Insta360 X5 + Sony A7rIII (iris.digital.pl)

  1. Film with Insta360 X5 on 3m selfie stick
  2. Extract stills using 360 Extractor Blender Add-on by Ollie (jrameau)
  3. Create separate camera group for each video
  4. Camera tracking done in Postshot
  5. Postshot workflow: Postshot checks only visual matching -- doesn't build photogrammetric model. Better results than Reality Scan for pure visual quality (iris.digital.pl)

DJI Osmo Pocket 3

  • Crisp quality, no GPS data
  • Blend with DJI Mini 3 Pro for GPS coordinates (jrameau)
  • Osmo picks up greenery better than drone
  • Process in RealityScan for combined GPS + imagery

C1 + DSLR on Tripod

Equipment

  • Sony a7rIII (42 MP)
  • Tripod
  • Lenses: 14mm (wide), 35mm (detail)

Workflow

  1. Scan with C1 at 0.5s (GS mode)
  2. After scan: set up tripod at key positions
  3. Shoot on auto settings (JPG is fine -- Postshot photometric compensation averages all photos)
  4. In RS2: import C1 undistorted images + trajectory + LiDAR cloud + DSLR photos
  5. Align -> export to Postshot -> train

Results

  • 86 phone photos on auto settings = excellent results for cafe interior (iris.digital.pl)
  • 40 phone photos + 20-minute C1 scan = high-quality town square splat (iris.digital.pl)
  • Key: C1 provides LiDAR accuracy + camera positioning; external camera provides image quality

Scan Merging (Multi-Scan Projects)

Aligning Interior + Exterior Scans

Challenge: Glass doors/windows create separation between interior and exterior scans.

Approach (ser0ka, paulosilva3d):
1. Scan exterior and interior as SEPARATE scans
2. Use common features visible in both (doors, thresholds, windows)
3. Align in CloudCompare using ICP (Iterative Closest Point)
4. OR: use Ground Control Points at overlapping areas

Alternative (Leica Register 360):
- Create outer cloud + inner cloud separately
- Combine in Leica Register 360 -- "looks perfect" (paulosilva3d)
- In inner cloud: erase noise outside walls from glass/mirror reflections

Stitching Multiple Scans with GCPs

See 06-RTK-GCP for full GCP workflow.

  1. Place GCP targets visible in both scans
  2. Scan each area separately
  3. Import into CloudCompare
  4. Use targets to place alignment markers
  5. Apply ICP refinement

Video tutorial: Payo's YouTube -- "How to merge two 3D scans from a laser scanner in CloudCompare" (ser0ka)


Point Cloud + 3DGS Mixing

Technique: Mix Point Clouds with GS for Water

  • Water doesn't capture well with GS alone
  • "Images have a little 'mix' of point clouds and 3DGS, makes the uncapturable water look nicer" (avsupport, Apr 29)
  • Combine colorized point cloud with GS for hybrid visualization

3DGS + 3D Models (BIM/ArchViz)

D5 Render

  • Free/pro tier
  • Supports 3DGS import (latest update)
  • Much easier than Blender (mr_red1991_63830, avsupport)
  • Limitation on free plan: Saved 3DGS disappears on file reload -- only the 3D model remains (avsupport)
  • Demo: https://youtu.be/OW0PGUMjlDw (avsupport)

Blender

  • Kiri Engine free 3DGS plugin (urienofrheged)
  • Steep learning curve
  • Splats not natively supported in Blender

Unreal Engine

  • 3DGS plugin exists but was unstable ~1 year ago (jrameau)
  • Requires beefy computer

Twinmotion

  • Does point clouds but NOT 3DGS (avsupport)
  • Point clouds look "a little difficult to look at for the untrained eye" -- GS is more credible (avsupport)

BricsCAD BIM

  • Structural CAD modeling from LiDAR data
  • Tutorial: Payo -- "From LiDAR Scan to CAD" https://youtu.be/Y0LpGf1ui84
  • See 08-Third-Party-Tools for CAD workflow details

File Format Conversions

C1 -> COLMAP (for third-party 3DGS tools)

Community-developed pose2colmap.py script (AVsupport Peter Graf + bot) converts C1 data to standard COLMAP format.

Version: v67 (May 19, 2026)
Key features:
- OPENCV_FISHEYE camera model
- Supports LFS, Postshot, and RS2 viewer conventions
- Coordinate transform: PCS (Z-up, left-handed) -> COLMAP (Y-up, right-handed)

Current known-good defaults (v67):
- LFS/PS: --viewer-conventions=LFS (default), --swap-lr enabled, camera axis=x-yz pitch=-90, points axis=xyz pitch=90 yaw=-90
- RS2: --viewer-conventions=RS2, backslashes, images in sparse/

See 09-Bot-Knowledge for full coordinate transform chain.


Hosting & Sharing

Platform Cost Features
SuperSplat Free Editor + viewer; cannot train
Arrival.space Free Web viewer with portals
SplitView Studio Free? Merge point clouds

pose2colmap.py -- S20 to COLMAP Converter

⚠️ Work in Progress: This script is actively developed (currently near v100). Known bugs and limitations exist. Check the Bot Knowledge section for the latest version and updates. The bot upload links change frequently -- do not use direct download links from older posts.

Script: pose2colmap.py (included in this manual's directory)
Latest version: v89 (May 27, 2026) -- 2,051 lines
Author: Developed collaboratively by AVsupport (Peter Graf) and @SHARE3DCAM bot
Purpose: Converts SHARE C1/S20 PointCloud Studio output to standard COLMAP format for use in RealityScan 2, Lichtfeld Studio, and other third-party tools.

What It Does

Converts the Undistort/ folder from PCS into a standard COLMAP sparse reconstruction:
- TransformedCam.json -> cameras.txt + images.txt (camera poses + intrinsics)
- colorized.las -> points3D.txt (dense point cloud points)
- Supports POLYFISHEYEFULL_OPENCVcamera model (RS2-compatible) - Reads factory calibration fromcalibration.yaml`
- Outputs standard COLMAP directory layout

Installation

pip install laspy pyyaml numpy

Usage

Basic (auto-discover mode):

python pose2colmap.py --folder "H:/my_scan/Output/Undistort"

With calibration YAML (recommended for fisheye):

python pose2colmap.py --folder "H:/my_scan/Output/Undistort" --fisheye --calibration-yaml "H:/my_scan/Output/info/calibration.yaml"

With LFS viewer conventions:

python pose2colmap.py --folder "H:/my_scan/Output/Undistort" --viewer-conventions=LFS --swap-lr

Output Structure

<COLMAP>/
 images/              <- junction links (or copies) of undistort/left/ and right/
 sparse/
     cameras.txt      # Camera intrinsics (FULL_OPENCV model)
     images.txt       # Camera poses (world-to-camera, COLMAP convention)
     points3D.txt     # Dense point cloud from colorized.las

Known-Good Defaults (v89)

Setting Value Purpose
--viewer-conventions LFS (default) Lichtfeld Studio axis convention
--swap-lr Enabled by default Fixes left/right camera swap
Camera axis x-yz, pitch=-90 COLMAP camera orientation
Points axis xyz, pitch=90, yaw=-90 COLMAP point cloud orientation

Coordinate Transform Chain

PCS TransformedCam.json (c2w, Z-up, det=-1 left-handed SLAM)
     invert
world-to-camera (w2c)
     apply S_cam matrix
COLMAP images.txt (w2c, Y-up right-handed)

Development History

Version Date Key Change
v10 Apr 20 Standard COLMAP layout + junction links
v11 Apr 22 LAS -> points3D.txt conversion
v21 Apr 25 project.ini + database.db for COLMAP GUI
v27 Apr 28 Camera-up fix (+90 X-axis) -- later disabled by default
v46 May ~10 Chirality fix improvements
v77 May ~20 Fisheye circular mask radius fix
v89 May 27 calibration.yaml support -- current latest

Download script: See the Bot Knowledge section for the latest version. Direct download links change frequently -- the bot section always has the most current version.


Best Practices Summary

  1. For professional-quality 3DGS: C1 scan + external DSLR photos via RS2->Postshot
  2. For quick results: PCS-only 3DGS on scans under 10 minutes
  3. For water/non-capturable surfaces: Mix point cloud with GS
  4. For presentations: Combine GS with 3D models in D5 Render
  5. Always export from RS2 before closing -- clear cache in Workflow/Settings to avoid 1KB export files
← 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