When Scan Data Isn't Locked: Building a COLMAP Bridge in 10 Weeks

Trending Searches
Blog / Community Ecosystem

When Scan Data Isn't Locked: Building a COLMAP Bridge in 10 Weeks

A SHARE C1 user built pose2colmap.py with SHARE3DCAM open raw data and community support, connecting scan pose data to COLMAP, RealityCapture, Open3D, Python, and SuperSplat workflows.
Community Ecosystem
Published: 2026-07-15
SHARE3DCAM Community Team
When Scan Data Isn't Locked: Building a COLMAP Bridge in 10 Weeks
Quick Summary
A SHARE C1 user built pose2colmap.py with SHARE3DCAM open raw data and community support, connecting scan pose data to COLMAP, RealityCapture, Open3D, Python, and SuperSplat workflows.

When a question appeared in SHARE3DCAM's Discord community — "Can I use SHARE3DCAM scan data in COLMAP?" — the answer wasn't a product feature. It was a user who took the initiative, used SHARE3DCAM open raw data and community technical support to build a practical solution to their own workflow problem.

Meet AVsupport (Peter Graf), a SHARE C1 user and early backer of the SHARE3DCAM Kickstarter campaign. Over ten weeks, Peter went from identifying a workflow gap to becoming the primary author of pose2colmap.py — a Python script that converts SHARE3DCAM pose export data into standard formats for COLMAP and RealityCapture.

Peter's story is worth telling on its own terms. But it also points to something broader: when scan data isn't locked behind proprietary walls, the people who use the equipment every day can roll up their sleeves and improve their own workflows. From a Kickstarter backer with a question, to a working format conversion tool — that arc says more about open data than any product page ever could.

The core value of this case is clear: SHARE3DCAM is not only about delivering point clouds, 3DGS models, or CAD outputs. It is also about giving professional users a data foundation they can connect with their own photogrammetry, reconstruction, and development workflows.

Why Open Data Matters Here

Before getting into the details, it's worth understanding the industry backdrop — because it's what made Peter's approach possible.

The Default: Raw Sensor Data Is Usually Inaccessible

In handheld LiDAR scanning and spatial data capture, one persistent reality shapes what users can and can't do: what users typically receive is the manufacturer's processed output — colorized point clouds, meshes, reports — not the raw sensor data captured during the scan. Raw LiDAR frames, IMU inertial streams, camera image sequences, calibration parameter files — on most platforms, these remain locked inside proprietary processing pipelines, inaccessible for direct access or export.

This isn't unique to any one manufacturer. It's the industry's operating default. For manufacturers, locking data controls product quality, ties users to the software ecosystem, and simplifies technical support. But for users, it means one thing: beyond the boundaries of vendor-provided functionality, you cannot explore, reprocess, or integrate your own data.

A typical example: you want to feed your scanner's raw data into COLMAP for dense reconstruction, or optimize the trajectory with a custom algorithm, or reprocess archived data five years later with a new technique. On most platforms, these things are either technically impossible without the vendor's software environment, or require additional commercial licensing and proprietary tooling. Not because the data doesn't exist — but because you can't get to it.

How SHARE3DCAM Handles Data

SHARE3DCAM takes a different approach. Through SHARE PointClouds Studio, users receive professional-grade deliverables: dense colorized point clouds, 3DGS/Gaussian Splatting models, and CAD drawing exports. These are the finished outputs most projects need.

Alongside those results, SHARE3DCAM also provides access to raw data packages behind the processed outputs. From the entry-level SHARE C1 to the professional S100 series, the device workflow is designed not only for finished deliverables, but also for preserving the underlying sensor data that can support later verification, reprocessing, and third-party tool integration.

What follows is the content of a single-mission SHARE3DCAM data delivery:

Raw Capture Data Package

Data ItemDescription
**ROSBAG (*.bag)**Core raw data container. Holds LiDAR point cloud frames, IMU inertial data, camera image frames, and timestamps — the foundation for high-precision trajectory optimization, spatiotemporal synchronization, and model recomputation
frame_pose.txtPer-frame LiDAR position and attitude, ordered by timestamp. Usable for trajectory visualization, extrinsic correlation, and registration verification
ROVER_PPKRAW.binRaw GNSS satellite observations. Combined with base station data, enables PPK post-processing for improved absolute trajectory accuracy
info/Camera intrinsic parameters, LiDAR/IMU sensor calibration data, and extrinsic transformation matrices between sensors
pointcloud.pcdPreview point cloud for rapid assessment of scan coverage and completeness
project_info.jsonStructured metadata: device model, project name, capture time, task attributes
control_points_photos/On-site GCP reference photographs
log/Complete operation log: task start/end, capture status, anomalies and errors

Undistorted Image Data Package (Post-Processing Output via SHARE PointClouds Studio)

Data ItemDescription
left / rightLens-distortion-corrected image sequences from left and right cameras
left_mask / right_maskPixel validity masks
ImgPose.txtPer-image position, roll/pitch/yaw, quaternion, and timestamp — designed for programmatic parsing and sensor fusion
xyzopk.txtCamera pose expressed as Omega/Phi/Kappa — compatible with traditional photogrammetry software interfaces
TransformedCam.jsonStructured per-image intrinsic and extrinsic parameters
**\\\\\\\\_undistort.opt / \\\\\\\\_undistort_intrinsic.txt**Post-undistortion camera model, focal length, principal point, and distortion parameters

What Having the Raw Data Enables

When raw data is available in open formats, three things become possible:

  1. Freedom to build. Process the data with any programming language and algorithm framework. COLMAP, Open3D, OpenCV, custom Python scripts — no format barriers.
  1. Workflow autonomy. No lock-in to a single software ecosystem. SHARE PointClouds Studio is the recommended starting point, not the mandatory destination. Data can move into COLMAP, RealityCapture, Metashape, CloudCompare, AutoCAD, Revit, or other trusted professional tools.
  1. Future-proof archives. Data stored in open formats. Five years from now, when a new algorithm emerges or a project needs reprocessing, project teams still have a path to re-validate, reconstruct, or extend the workflow from the original data.

This is the environment Peter was working in: open data was not an abstract slogan, but the condition that allowed him to start from SHARE C1 project data, test ideas, convert formats, and validate a real workflow.

The Problem Peter Saw

SHARE3DCAM scanners can capture high-quality 3D data. SHARE PointClouds Studio processes that data into professional outputs such as point clouds, 3DGS models, and CAD exports. But many professional users — surveyors, architects, heritage documentation specialists — also need to feed data into established photogrammetry pipelines like COLMAP or RealityCapture for tasks such as dense mesh reconstruction, multi-sensor fusion, or integration with existing professional workflows.

The challenge: SHARE3DCAM's pose output format used camera models and coordinate conventions that didn't map cleanly onto standard photogrammetry formats.

For most users on most platforms, this is where the story would end — with a support ticket and a wait. But because the raw data was open, Peter could access calibration parameters, sensor extrinsics, and per-frame poses directly. What would normally be a vendor feature request became a solvable engineering problem.

He saw the gap. And closed it.

RealityCapture 2 alignment view showing SHARE C1 image poses and point cloud data converted by pose2colmap.py, with orange camera positions overlaid on a hybrid dataset.
RealityCapture 2 alignment view showing SHARE C1 image poses and point cloud data converted by pose2colmap.py, with orange camera positions overlaid on a hybrid dataset.

Ten Weeks, Four Development Phases: How Peter Built It

Peter developed pose2colmap.py as an independent open-source project, drawing on SHARE3DCAM's open data, public documentation, and community resources. The development was iterative and public — playing out in SHARE3DCAM's Discord channels from mid-April to late June, progressing from early versions to v1.12.

Phase 1: Foundational Architecture (mid-April to mid-May)

  • Dual-camera support (Left + Right stereo baseline, ~79.4mm along X-axis)
  • Automatic folder discovery from SHARE PointClouds Studio exports
  • Multiple viewer conventions (RealityCapture 2, LichtFeld Studio, PostShot)
  • Fisheye camera model mapping (SHARE3DCAM POLYFISHEYE → COLMAP OPENCV_FISHEYE — work-in-progress; no trivial conversion exists, interim estimated bridges in place)
  • Camera and point cloud transform decoupling (independent --camera-pitch/yaw/roll controls)

Phase 2: The Chirality Problem (mid-May to late May) — the most technically demanding phase

The rotation matrices in TransformedCam.json had a determinant of -1 (left-handed coordinate system), while COLMAP requires +1 (right-handed). The mismatch caused cameras to "explode" upon import.

Peter's initial attempt — detecting the determinant and negating a rotation matrix column — destroyed the rotation itself. The real breakthrough came from a mathematical insight: expanding the camera center formula C = -R_colmap^T @ t_colmap revealed that the rotation and position transforms could be fully decoupled, simplifying to C = S_pos @ t_slam. This meant camera orientation (for chirality correction) and position (for world-coordinate alignment) could be controlled independently — solving two contradictory requirements simultaneously.

Building on this breakthrough, further iterations confirmed the final yaw+90° orientation correction. Every version was validated against real scan data in public Discord channels.

Phase 3: Calibration Precision (late May to early June)

  • Metashape XML calibration support (EquisolidFisheye → OPENCV_FISHEYE conversion, work-in-progress)
  • POLYFISHEYE → Kannala-Brandt curve-fitting fallback
  • Multiple rounds of distortion coefficient sign convention tuning (k1-k4 negation strategy)
  • C1 camera hardcoded reference calibration values

Phase 4: Productionization (June)

  • Cross-platform compatibility fixes
  • --upscale flag for SHARE PointClouds Studio image upsampling during undistortion
  • RS2 trailing newline format fixes (RS2 has since received updates addressing these issues through this process)
  • Non-fisheye mode crash fix, comprehensive error handling
PowerShell window showing pose2colmap.py command-line examples for RS2 output, LFS output, camera axis settings, point cloud axis settings, and .las point cloud import options.
pose2colmap.py command-line examples for RS2 output, LFS output, camera axis settings, etc

What Is pose2colmap.py?

pose2colmap.py is an independent open-source Python command-line tool, developed and maintained by Peter Graf. Its core function is converting SHARE3DCAM handheld scanner pose export data into standard formats that can be read by photogrammetry software like COLMAP and RealityCapture. Current version: v1.12, approximately 2,300 lines of code.

Key capabilities:

  • Auto-discovers and reads pose files, images, and calibration parameters from SHARE PointClouds Studio export directories
  • Maps SHARE3DCAM's POLYFISHEYE camera model to COLMAP's OPENCV_FISHEYE model
  • Supports dual-camera stereo baselines (Left + Right) with automatic chirality correction
  • Outputs COLMAP format with different conventions to suit RS2 (RealityCapture 2) and PS/LichtFeld Studio workflows, using the same underlying images.txt / cameras.txt / points3D.txt structure
  • Compatible with multiple viewer conventions including RS2 (RealityCapture 2) and LichtFeld Studio
  • Provides --upscale flag to match SHARE PointClouds Studio image upsampling during undistortion

Who it's for:

  • Users who need to import SHARE3DCAM scan data into COLMAP for dense point cloud reconstruction or mesh generation
  • Survey and engineering teams using RealityCapture for high-precision photogrammetry processing
  • Researchers and developers building custom algorithms on top of SHARE3DCAM raw data
  • Professional users with existing Metashape calibration data seeking higher-accuracy pose conversion

A note on the fisheye challenge: using ultra-wide fisheye images directly in 3D reconstruction without undistortion remains a technically challenging area, because undistortion can introduce image quality loss and field-of-view reduction. LichtFeld Studio is among those exploring this direction. In the interim, pose2colmap.py provides a practical bridge: when Metashape calibration data (EquisolidFisheye) is available, the script can use it to connect SHARE3DCAM's native Polyfisheye format to COLMAP-supported fisheye models, enabling testing and workflow development that would otherwise be blocked.

Where to get it:

pose2colmap.py is hosted on GitHub at github.com/grafpez/pose2colmap. Documentation, command-line usage guides, and version history are maintained in the SHARE3DCAM Official Discord Community.

PowerShell terminal showing pose2colmap.py v1.12 completing a COLMAP_RS2 export, generating cameras.txt, images.txt, points3D.txt, xyzopk.txt, and image folders.
LichtFeld Studio and SuperSplat training interface showing a 3DGS model generated from SHARE C1 data, with a training complete dialog after 305,800 iterations and about 14 hours of training.
 A 3DGS model generated from SHARE C1 data, with a training time of about 14 hours

What SHARE3DCAM Provided

Peter built pose2colmap.py — the code, architecture decisions, real-world testing, and feature direction were all his. No SHARE3DCAM engineers wrote the script.

SHARE3DCAM's role was providing the conditions that allowed this work to happen and keep moving:

  • Open Raw Data — Raw data packages such as ROSBAG, IMU, calibration parameters, and pose data can be accessed and parsed, reducing the friction created by encrypted or proprietary-format barriers.
  • SHARE3DCAM Bot — An AI assistant powered by OpenClaw, equipped with a product knowledge base, integrated directly into the Discord community. Peter used it as a real-time technical reference throughout the project.
  • Knowledge Base — Internal documentation, calibration models, and technical specifications shared with the community.
  • Community Space — Discord channels for public iteration, testing, and feedback.

What This Took

Peter had the skills, the initiative, and ten weeks. He also had a key condition: direct access to the raw data behind the project.

When sensor streams, calibration parameters, and per-frame poses are available in open formats, someone with the right expertise can identify a gap, prototype a solution, and validate it against real data — without starting from reverse-engineering undocumented formats. That's what happened here: a practical attempt by a user to improve their own workflow, using SHARE3DCAM open raw data and community technical support.

If you work with scan data every day and see something that could work better — the raw data is there. The Bot is there. The community is there. What Peter did isn't reserved for one person.

SHARE3DCAM Data Delivery vs. Common Industry Practice

DimensionCommon Industry PracticeSHARE3DCAM
Raw sensor data (LiDAR frames / IMU / camera)Often packaged inside proprietary pipelines; direct access can be difficultROSBAG + text formats, supporting raw data delivery
Camera / IMU calibration parametersOften not part of standard user-facing deliveryProvided in the info/ directory for parsing and validation
GNSS raw observationsMay not be exportable or may require additional workflow stepsROVER_PPKRAW.bin can be included as part of the project data package
Third-party tool integrationOften depends on vendor-supported formats or authorized integrationsEasier access to workflows such as COLMAP, RealityCapture, Open3D, and related tools
Community developmentGenerally outside the scope of standard vendor supportSupported through open data, AI assistant, and community channels

What's Next

pose2colmap.py is available to the SHARE3DCAM community and beyond. If you're working with COLMAP, RealityCapture, or any photogrammetry pipeline, this tool bridges the gap.

Peter also shared SuperSplat model previews generated through this workflow, so community members can inspect the results directly:

SuperSplat editor showing a 3DGS model of the Carrington Council Chambers historic building, with the scene manager on the left and the reconstructed building facade in the viewport.
SuperSplat editor showing a 3DGS model of the Carrington Council Chambers historic building

If you're building on SHARE3DCAM's open data — or just want to see what other users are doing with theirs — join the SHARE3DCAM Official Discord Community. From calibration parameter deep-dives, to COLMAP integration questions, to the next community tool idea — this is where the conversation happens.

https://discord.gg/qyKcmjez6a


Development BTS AVsupport interact with SHARE3DCAM bot in the official community

Development Behind-the-scenes: AVsupport interacts with the SHARE3DCAM bot in the official community


pose2colmap.py is developed and maintained by Peter Graf as an independent open-source project. SHARE3DCAM provided open raw data, the Bot, knowledge base, and collaborative space that supported the development. Special thanks to Peter and the broader SHARE3DCAM Discord community for testing, feedback, and technical discussion.

We use cookies to understand how users interact with our website
This website uses cookies to provide and improve user experience. For more details on how we use cookies and how to adjust your cookie settings, please refer to our Cookie PolicyCookie Policy
Accept
Decline
取消
热门搜索: