05 -- Hybrid Workflows
0 5 -- Hybrid Workflows
📑 Table of Contents — click to navigate
- 01 — Hardware Setup Device specs, firmware, SD cards, batteries, connectivity, accessories
- 02 — PointCloud Studio Installation, versions, settings, project management, data processing
- 03 — Scanning Workflows Field scanning strategies, movement, environment, multi-scan projects
- 04 — 3DGS Workflow Gaussian splat generation, settings, GPU requirements, processing time, quality
- 05 — Hybrid Workflows Combining LiDAR with external cameras, drones, RealityScan, Postshot pipelines
- 06 — RTK & GCP RTK setup, GNSS fusion, coordinate systems, control points, accuracy
- 07 — Troubleshooting Common issues and community-verified solutions
- 08 — Third-Party Tools CloudCompare, RealityScan, Postshot, LFS, D5 Render, Blender, BricsCAD
- 09 — Bot Knowledge Official answers, product specs, known limitations from bot and support team
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.
- Export from PCS:
colorized.las,xyzopk.txt, allUndistort/folders - Import all into Reality Scan 2 (RS2)
- Add external photos (phone/DSLR)
- Align -- RS2 uses LiDAR cloud for camera alignment
- Export cameras as CSV (fix header line)
- Export sparse point cloud -> CloudCompare -> subsample + SOR filter
- Import cameras CSV + photos + subsampled point cloud into Postshot
- 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
- Scan with C1 normally
- Fly drone for aerial imagery
- In RS2: import undistorted C1 images first, apply trajectory
- Import drone images as separate component
- Align all together
- 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)
- Film with Insta360 X5 on 3m selfie stick
- Extract stills using 360 Extractor Blender Add-on by Ollie (jrameau)
- Create separate camera group for each video
- Camera tracking done in Postshot
- 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
- Scan with C1 at 0.5s (GS mode)
- After scan: set up tripod at key positions
- Shoot on auto settings (JPG is fine -- Postshot photometric compensation averages all photos)
- In RS2: import C1 undistorted images + trajectory + LiDAR cloud + DSLR photos
- 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.
- Place GCP targets visible in both scans
- Scan each area separately
- Import into CloudCompare
- Use targets to place alignment markers
- 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
- For professional-quality 3DGS: C1 scan + external DSLR photos via RS2->Postshot
- For quick results: PCS-only 3DGS on scans under 10 minutes
- For water/non-capturable surfaces: Mix point cloud with GS
- For presentations: Combine GS with 3D models in D5 Render
- Always export from RS2 before closing -- clear cache in Workflow/Settings to avoid 1KB export files