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)
- Install dependencies – OpenCV and a matching LibTorch build (CPU, CUDA, or ROCm). The README lists exact package names for Ubuntu, Homebrew, and Windows.
- Build –
Addgit 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-DGPU_RUNTIME="HIP"and-DOPENSPLAT_BUILD_SIMPLE_TRAINER=ONfor ROCm, or set-DGPU_RUNTIME=CPUfor a CPU‑only binary. - Run – Download a sample dataset (e.g., banana or truck) and execute:
The program writes./opensplat /path/to/banana -n 2000 # 2000 Gaussianssplat.ply(orbanana.splatwith-o) which can be dropped into any compatible viewer. - Optional – Use
--resumeto continue training an existing.ply,--output-camerasto export camera JSON, or place per‑image masks in amasks/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
./opensplatinside 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