Skip to content

x4dqn/Open3Dmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Open3DMap Logo

Open3DMap - Mapping the World, Together

Open3DMap

Open3D Scanner Firebase ARCore

Open3DMap is a community-driven initiative to build an open, GPS-anchored 3D mapping infrastructure for spatial computing. Our mission is to let anyone with a smartphone and a browser capture, process, train, share, and reuse high-fidelity 3D scans (Gaussian Splats) of the physical worldβ€”streets, parks, buildings, public spacesβ€”without relying on closed platforms or proprietary ecosystems.

Every scan becomes part of a living digital twin: anchored with transparent metadata using our open SplatJSON format, freely exportable, and interoperable with tools like Unity, WebXR, and Cesium. From education and research to public art and civic planning, Open3DMap is designed to support open participation, long-term accessibility, and real-world utility.

We believe spatial computing should be public infrastructure. Open3DMap is how we build itβ€”together.

Project Status

This repository now includes the web portal and cloud processing we built:

  • Web dashboard for scan management, conversion, and training
  • COLMAP cloud pipeline via Firebase Functions with real-time streaming progress and health checks
  • In-browser training powered by WebAssembly (Brush) and WebGPU
  • Export and upload of trained Gaussian Splat results to cloud storage

We are continuing to support mobile capture and open standards alongside the web platform.

Platform Roadmap

Legend: βœ… = Available now, πŸ”„ = In active development, (unmarked) = Planned for future

Core Platform Components

1. Mobile Capture App

  • βœ… Real-time camera tracking using ARCore
  • βœ… GPS location tracking for outdoor scans
  • πŸ”„ Open SplatJSON metadata export for every scan (in development)
  • Integrated Gaussian splat rendering and real-time feedback
  • Manual scan upload and contributor login flow
  • Incremental scan extension to grow existing scenes
  • Offline-first capture with later sync to cloud
  • On-device suggestions for scan alignment and rescan prompts
  • iOS version and cross-device consistency tooling

2. Cloud Processing & Metadata

  • βœ… User authentication and login system
  • βœ… Web-based scan upload and management
  • βœ… Reconstruction pipeline using COLMAP in Firebase Functions (16GiB RAM, 4 CPU, 60m timeout)
  • βœ… Parallel image downloads with retries; stage-by-stage streaming logs
  • βœ… Health check endpoint verifying COLMAP and dependencies
  • Automatic SplatJSON generation with GPS anchoring and composability metadata
  • Scene composability: support for merging overlapping scans into larger environments
  • Privacy filtering (PII blurring, licensing tags)
  • Incremental scan integration to extend and refine existing scans collaboratively

3. Web Portal and Dashboard

  • βœ… Dashboard with scan cards and contributor views
  • βœ… Training modal integrated directly in dashboard.html
  • βœ… β€œConvert with COLMAP” then β€œTrain with Brush” workflow
  • βœ… Real-time progress updates and final export (PLY)
  • Map-based scan viewer and explorer
  • Export options: .splat, .splatjson, .glb, .ply, .usdz, .obj
  • Contributor-defined license controls (e.g., CC-BY, CC0)
  • Spatial querying, filtering, and version history

4. Open Standards and Developer Access

  • Public API for scan retrieval, query, and integration
  • SDKs for Unity, WebXR, Cesium
  • βœ… SplatJSON specification (standardized, georeferenced scan metadata)
  • GeoPose and OGC-aligned anchoring support for global interoperability

Participatory Infrastructure Roadmap

5. Governance and Community Tools

  • Role-based contributor system (novice β†’ steward)
  • Transparent moderation tools (flag, audit, review)
  • Reputation system and scan attribution
  • Opt-in visibility and ethical scanning defaults

6. Import and Federation

  • Import pipeline from Polycam, Luma, and Scaniverse
  • Open adapters to convert proprietary formats into .splatjson
  • Federated hosting (museums, cities, collectives)
  • Contributor-driven metadata overlays (annotations, stories, tours)

7. Discovery and Social Layer

  • Public feed and scan activity heatmaps
  • Followable mappers and region-based community hubs
  • AR "Moments" from OpenStreetMap-style interface
  • Collaborative collections and spatial storytelling layers

8. Temporal Maintenance

  • Versioning and time-indexing for rescan comparison
  • Change detection tooling (construction, decay, updates)
  • Scheduled re-scan requests and community-driven update tasks
  • Incremental scanning support to grow scenes over time while maintaining spatial consistency

At this stage, the repository includes the web portal for upload, conversion, and training, along with the cloud COLMAP pipeline and in-browser training. Mobile capture and standards continue to evolve in parallel.

Web Portal (Local Dev)

Prerequisites

  • Node.js 18+ (20+ recommended)
  • Chrome 113+ with WebGPU/hardware acceleration enabled
  • Rust + wasm-pack if you want to rebuild Brush WASM (prebuilt artifacts included)

Development

# From repo root
cd open3dmap-web
npm install

# Build Brush WASM (optional if using prebuilt)
node build-brush-wasm.js

# Start local server
node start-dev.js

Open:

  • App: http://localhost:3000/
  • Dashboard: http://localhost:3000/dashboard.html
  • Brush Trainer: http://localhost:3000/brush-trainer.html

Notes:

  • If js/firebase-config.js is missing, the dev script will generate it via build-config.js.
  • Prebuilt WASM artifacts are included: brush_wasm.js, brush_wasm_bg.wasm (and brush-wasm/pkg/).

Browser Training (Brush WASM)

Training runs directly in the browser using WebGPU and a WebAssembly module (Brush).

Workflow

  1. Go to dashboard.html and select a scan
  2. Click the magic wand (πŸͺ„) to open the training modal
  3. If COLMAP results are missing, use β€œConvert with COLMAP” first
  4. Start β€œTrain with Brush” and watch live progress
  5. Download/export the trained PLY; results are uploaded to cloud storage

Cloud COLMAP Pipeline

  • Callable function processCOLMAP executes: download β†’ feature extraction β†’ matching β†’ sparse reconstruction β†’ upload
  • Enhanced parameters improve image registration rates across datasets
  • Parallel downloads with retries; structured logging with timestamps
  • Health check function validates COLMAP, cmake, python3, gcc

Coming Soon: Contributor Login and Cloud Pipeline

We are actively building out contributor workflows across web and mobile to:

  • Log in via email-based authentication (mobile-first)
  • Upload scans automatically to the cloud
  • View and manage uploaded scans on the web
  • Generate and maintain standardized SplatJSON metadata for integration

These features lay the groundwork for a seamless end-to-end contributor experienceβ€”from capture to upload to public sharing.

Mobile App for Data Capture

The Open3DMap Android app allows capturing georeferenced image sequences and sensor data for downstream reconstruction, anchoring, and sharing.

Features

  • Real-time camera tracking using ARCore
  • Automatic frame capture with quality assessment
  • GPS location tracking for outdoor scans
  • IMU data capture (accelerometer and gyroscope)
  • Export functionality
  • Scan management (rename, delete, export)
  • Quality metrics for optimal capture

Prerequisites

  • Android device with ARCore support
  • Android 8.0 (API level 26) or higher
  • Google Play Services
  • Camera and location permissions
  • Storage permissions for exporting data

Installation

Option 1: Download APK (Recommended)

  1. Download the latest APK: Open3DMap APK
  2. Enable "Install from unknown sources" in your Android settings
  3. Install the downloaded APK
  4. Launch the app and grant necessary permissions

Option 2: Build from Source

  1. Clone the repository:
git clone https://github.com/x4dqn/Open3DMap.git
cd Open3DMap
  1. Open the project in Android Studio:

    • Open Android Studio
    • Select "Open an existing project"
    • Navigate to the AndroidApp/Scanner directory
    • Click "OK"
  2. Build and run:

    • Connect your Android device
    • Select your device from the device list
    • Click the "Run" button (green play icon)
    • Wait for the app to install and launch

Usage (Mobile)

Capturing Scans

  1. Launch the app and grant the necessary permissions
  2. Press "Start Scan" to begin a new capture session
  3. Move your device slowly through the space:
    • Keep the camera pointed at textured surfaces
    • Capture several overlapping angles
    • Maintain good lighting conditions
    • Move at a walking pace
    • Avoid rapid movements or rotations
  4. Press "Stop Scan" when finished

Export File Structure

Open3DMaps/Exports/
└── ScanName_YYYY-MM-DD_HH-mm/
    β”œβ”€β”€ images/
    β”‚   β”œβ”€β”€ frame_000.jpg
    β”‚   β”œβ”€β”€ frame_001.jpg
    β”‚   └── ...
    └── metadata/
        β”œβ”€β”€ transforms.json
        └── session_[ID].json
        └── scan_id.splatjson

Using with Brush locally (Optional)

  1. Export your scan from the app
  2. Copy the exported folder to your computer
  3. Convert your scan with COLMAP:
  • Download COLMAP
  • Follow their instructions for binary or CLI conversion

Download Brush binary

After converting, download the Brush binary Brush Releases Locate and extract the binary

Training with Brush

  1. Run brush_app.exe
  2. Zip your COLMAP converted files
  3. Load the zipped file into Brush

The trainer supports interactive camera controls, splat rendering, and training metrics display.

Exporting .ply files

After completing training, press the Export button below the splat renderer

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under CC BY-NC 4.0 - see the LICENSE file for details.

Acknowledgments

  • ARCore team for the excellent tracking capabilities
  • INRIA team for their work on 3D Gaussian Splatting
  • ArthurBrussee for the incredible Brush
  • All contributors and users of the project

About

Open-source platform for GPS-anchored 3D mapping using crowdsourced mobile scans

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •