WebODM/OpenSplat

Production-grade 3D gaussian splatting with CPU/GPU support for Windows, Mac and Linux 💦

OpenSplat – Fast, open‑source 3D Gaussian‑splatting

What it is – OpenSplat is a C++ implementation of 3‑D Gaussian splatting, a modern neural‑graphics technique that turns a sparse set of camera poses and points (from COLMAP, OpenSfM, ODX, nerfstudio, etc.) into a compact scene made of tiny 3‑D Gaussians. The result can be saved as .ply, .splat, .spz or .rad and viewed or edited with any of the many Gaussian‑splatting viewers.

Why it matters – Gaussian splatting offers real‑time‑ish rendering quality comparable to NeRFs while being far cheaper to train and render. OpenSplat aims to be portable, lean and fast, supporting NVIDIA, AMD and Apple GPUs (via Metal) as well as pure‑CPU fallback.


Key Features (as described in the README)

  • Cross‑platform: builds on Windows, macOS and Linux.
  • GPU acceleration: CUDA, ROCm (HIP) and Apple Metal are supported; CPU‑only mode works (≈100× slower).
  • Simple data ingestion: accepts projects in ODX, OpenSfM, COLMAP, OpenMVG, or nerfstudio formats.
  • Multiple output formats: .ply, .splat, .spz, .rad – ready for viewers like the Antimatter15 web viewer or PlayCanvas.
  • Docker images: ready‑made CUDA and ROCm Dockerfiles for reproducible environments.
  • Training utilities: resume training, mask‑based exclusion of image regions, coordinate‑system preservation, and optional compression.
  • Extensible: open to contributions for AMD support, distributed training, real‑time viewer output, etc.

Getting Started (quick‑start steps)

  1. Install dependencies – OpenCV and a matching LibTorch build (CPU, CUDA, or ROCm). The README lists exact package names for Ubuntu, Homebrew, and Windows.
  2. Build –
    git clone https://github.com/pierotofy/OpenSplat OpenSplat
    cd OpenSplat
    mkdir build && cd build
    cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch/ ..
    make -j$(nproc)   # or use Ninja if preferred
    
    Add -DGPU_RUNTIME="HIP" and -DOPENSPLAT_BUILD_SIMPLE_TRAINER=ON for ROCm, or set -DGPU_RUNTIME=CPU for a CPU‑only binary.
  3. Run – Download a sample dataset (e.g., banana or truck) and execute:
    ./opensplat /path/to/banana -n 2000   # 2000 Gaussians
    
    The program writes splat.ply (or banana.splat with -o) which can be dropped into any compatible viewer.
  4. Optional – Use --resume to continue training an existing .ply, --output-cameras to export camera JSON, or place per‑image masks in a masks/ folder to ignore parts of the images.

Docker usage (summary)

  • CUDA image – docker build -t opensplat . (default Ubuntu/CUDA/libtorch).
  • ROCm image – docker build -f Dockerfile.rocm -t opensplat ..
  • Run the container, mount your data, and invoke ./opensplat inside as shown in the README.

Project status & contribution

  • The code is released under AGPL‑v3 (with some Apache‑2.0 components from the original splatfacto implementation).
  • Current goals include better AMD support, memory‑usage reductions, distributed training, and real‑time viewer output.
  • Contributions are welcomed via pull requests; open issues are labeled for enhancements.

TL;DR

OpenSplat is a practical, open‑source tool for turning photogrammetry outputs into fast‑rendering 3‑D Gaussian splat scenes. It runs on all major GPU platforms, falls back to CPU, provides Docker images, and offers a straightforward CLI for training, resuming, masking, and exporting. Perfect for researchers or developers who need a lightweight, portable Gaussian‑splat pipeline without the overhead of larger NeRF frameworks.

Related

  • Project
  • Project
  • Project
  • Project
  • Project