harry7557558/spirula-studioPublic

Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.

AI summary: A standalone, cross-vendor 3D Gaussian Splatting trainer that converts videos to meshes via Vulkan or CUDA.

Stars
1.4K
+170 today
Forks
114
Watchers
24
Open issues
40
Open PRs
7
Contributors
~14
Commits
963
Branches
23

C++GPL-3.0Created May 4, 2024Last push 2d agoLatest release v2026.9.30+491 stars this week+660 this month

Quick answers

What is spirula-studio?
A standalone, cross-vendor 3D Gaussian Splatting trainer that converts videos to meshes via Vulkan or CUDA.
What does spirula-studio do?
Spirula Studio is a self-contained application for training 3D Gaussian Splatting models directly from raw photos or videos. It manages the entire pipeline, from generating splats to producing textured meshes, without requiring complex Python, PyTorch, or COLMAP installations. The software is highly optimized, capable of training massive models in just 8 GB of VRAM. It uniquely supports cross-vendor hardware, running seamlessly on NVIDIA, AMD, Intel, and Apple GPUs via the Vulkan API. This dramatically lowers the barrier to entry for high-quality 3D reconstruction.
Who is spirula-studio for?
3D artists, game developers, and hobbyists wanting to experiment with Gaussian Splatting without complex setups. It is ideal for users who do not have high-end NVIDIA hardware but still want fast 3D reconstruction.
How popular is spirula-studio on GitHub?
harry7557558/spirula-studio has 1,371 stars and 114 forks on GitHub, and gained 491 stars in the last 7 days.
What license does spirula-studio use?
harry7557558/spirula-studio is released under the GPL-3.0 license.

Star history

since Sep 23, 2026
05001KSep 2026Sep 2026Sep 2026Oct 2026
1.4K stars as of Oct 2, 2026. Measured daily since Sep 23, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 1 commit2025-10-07: 2 commits2025-10-08: 0 commits2025-10-09: 2 commits2025-10-10: 0 commits2025-10-11: 3 commits2025-10-12: 2 commits2025-10-13: 3 commits2025-10-14: 1 commit2025-10-15: 2 commits2025-10-16: 0 commits2025-10-17: 1 commit2025-10-18: 2 commits2025-10-19: 2 commits2025-10-20: 1 commit2025-10-21: 3 commits2025-10-22: 1 commit2025-10-23: 1 commit2025-10-24: 2 commits2025-10-25: 1 commit2025-10-26: 3 commits2025-10-27: 1 commit2025-10-28: 1 commit2025-10-29: 1 commit2025-10-30: 2 commits2025-10-31: 1 commit2025-11-01: 1 commit2025-11-02: 2 commits2025-11-03: 1 commit2025-11-04: 2 commits2025-11-05: 1 commit2025-11-06: 1 commit2025-11-07: 1 commit2025-11-08: 2 commits2025-11-09: 3 commits2025-11-10: 1 commit2025-11-11: 2 commits2025-11-12: 1 commit2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 1 commit2025-11-16: 2 commits2025-11-17: 1 commit2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 4 commits2025-11-22: 1 commit2025-11-23: 2 commits2025-11-24: 0 commits2025-11-25: 1 commit2025-11-26: 2 commits2025-11-27: 1 commit2025-11-28: 1 commit2025-11-29: 1 commit2025-11-30: 1 commit2025-12-01: 0 commits2025-12-02: 2 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 2 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 1 commit2025-12-15: 1 commit2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 1 commit2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 2 commits2025-12-28: 1 commit2025-12-29: 0 commits2025-12-30: 1 commit2025-12-31: 1 commit2026-01-01: 3 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 1 commit2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 1 commit2026-01-11: 2 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 1 commit2026-01-18: 0 commits2026-01-19: 1 commit2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 1 commit2026-01-25: 0 commits2026-01-26: 1 commit2026-01-27: 1 commit2026-01-28: 2 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 4 commits2026-02-02: 1 commit2026-02-03: 3 commits2026-02-04: 0 commits2026-02-05: 1 commit2026-02-06: 3 commits2026-02-07: 2 commits2026-02-08: 1 commit2026-02-09: 3 commits2026-02-10: 1 commit2026-02-11: 0 commits2026-02-12: 2 commits2026-02-13: 0 commits2026-02-14: 3 commits2026-02-15: 6 commits2026-02-16: 2 commits2026-02-17: 2 commits2026-02-18: 2 commits2026-02-19: 2 commits2026-02-20: 0 commits2026-02-21: 2 commits2026-02-22: 2 commits2026-02-23: 1 commit2026-02-24: 3 commits2026-02-25: 1 commit2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 1 commit2026-03-01: 4 commits2026-03-02: 2 commits2026-03-03: 1 commit2026-03-04: 2 commits2026-03-05: 0 commits2026-03-06: 1 commit2026-03-07: 3 commits2026-03-08: 1 commit2026-03-09: 1 commit2026-03-10: 3 commits2026-03-11: 1 commit2026-03-12: 1 commit2026-03-13: 1 commit2026-03-14: 5 commits2026-03-15: 2 commits2026-03-16: 2 commits2026-03-17: 1 commit2026-03-18: 2 commits2026-03-19: 3 commits2026-03-20: 2 commits2026-03-21: 2 commits2026-03-22: 5 commits2026-03-23: 2 commits2026-03-24: 1 commit2026-03-25: 1 commit2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 1 commit2026-03-29: 1 commit2026-03-30: 0 commits2026-03-31: 2 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 1 commit2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 1 commit2026-04-10: 2 commits2026-04-11: 3 commits2026-04-12: 0 commits2026-04-13: 2 commits2026-04-14: 1 commit2026-04-15: 3 commits2026-04-16: 0 commits2026-04-17: 3 commits2026-04-18: 2 commits2026-04-19: 5 commits2026-04-20: 3 commits2026-04-21: 3 commits2026-04-22: 1 commit2026-04-23: 2 commits2026-04-24: 2 commits2026-04-25: 4 commits2026-04-26: 0 commits2026-04-27: 2 commits2026-04-28: 0 commits2026-04-29: 4 commits2026-04-30: 2 commits2026-05-01: 0 commits2026-05-02: 2 commits2026-05-03: 1 commit2026-05-04: 2 commits2026-05-05: 1 commit2026-05-06: 3 commits2026-05-07: 3 commits2026-05-08: 0 commits2026-05-09: 1 commit2026-05-10: 1 commit2026-05-11: 0 commits2026-05-12: 1 commit2026-05-13: 1 commit2026-05-14: 2 commits2026-05-15: 2 commits2026-05-16: 5 commits2026-05-17: 2 commits2026-05-18: 2 commits2026-05-19: 2 commits2026-05-20: 5 commits2026-05-21: 1 commit2026-05-22: 3 commits2026-05-23: 2 commits2026-05-24: 2 commits2026-05-25: 1 commit2026-05-26: 5 commits2026-05-27: 3 commits2026-05-28: 8 commits2026-05-29: 6 commits2026-05-30: 4 commits2026-05-31: 4 commits2026-06-01: 1 commit2026-06-02: 4 commits2026-06-03: 2 commits2026-06-04: 5 commits2026-06-05: 3 commits2026-06-06: 5 commits2026-06-07: 9 commits2026-06-08: 4 commits2026-06-09: 5 commits2026-06-10: 2 commits2026-06-11: 0 commits2026-06-12: 2 commits2026-06-13: 3 commits2026-06-14: 2 commits2026-06-15: 5 commits2026-06-16: 2 commits2026-06-17: 3 commits2026-06-18: 0 commits2026-06-19: 5 commits2026-06-20: 1 commit2026-06-21: 4 commits2026-06-22: 1 commit2026-06-23: 2 commits2026-06-24: 2 commits2026-06-25: 2 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 2 commits2026-07-02: 2 commits2026-07-03: 2 commits2026-07-04: 2 commits2026-07-05: 3 commits2026-07-06: 3 commits2026-07-07: 1 commit2026-07-08: 2 commits2026-07-09: 0 commits2026-07-10: 6 commits2026-07-11: 6 commits2026-07-12: 7 commits2026-07-13: 0 commits2026-07-14: 1 commit2026-07-15: 2 commits2026-07-16: 3 commits2026-07-17: 6 commits2026-07-18: 4 commits2026-07-19: 6 commits2026-07-20: 6 commits2026-07-21: 4 commits2026-07-22: 5 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 3 commits2026-07-28: 4 commits2026-07-29: 2 commits2026-07-30: 1 commit2026-07-31: 1 commit2026-08-01: 5 commits2026-08-02: 0 commits2026-08-03: 6 commits2026-08-04: 2 commits2026-08-05: 4 commits2026-08-06: 3 commits2026-08-07: 4 commits2026-08-08: 7 commits2026-08-09: 4 commits2026-08-10: 1 commit2026-08-11: 3 commits2026-08-12: 3 commits2026-08-13: 6 commits2026-08-14: 7 commits2026-08-15: 3 commits2026-08-16: 7 commits2026-08-17: 7 commits2026-08-18: 5 commits2026-08-19: 3 commits2026-08-20: 6 commits2026-08-21: 2 commits2026-08-22: 9 commits2026-08-23: 4 commits2026-08-24: 2 commits2026-08-25: 4 commits2026-08-26: 4 commits2026-08-27: 4 commits2026-08-28: 0 commits2026-08-29: 6 commits2026-08-30: 5 commits2026-08-31: 8 commits2026-09-01: 13 commits2026-09-02: 3 commits2026-09-03: 3 commits2026-09-04: 7 commits2026-09-05: 1 commit2026-09-06: 4 commits2026-09-07: 9 commits2026-09-08: 4 commits2026-09-09: 5 commits2026-09-10: 3 commits2026-09-11: 4 commits2026-09-12: 6 commits2026-09-13: 1 commit2026-09-14: 2 commits2026-09-15: 2 commits2026-09-16: 2 commits2026-09-17: 5 commits2026-09-18: 4 commits2026-09-19: 7 commits2026-09-20: 5 commits2026-09-21: 7 commits2026-09-22: 6 commits2026-09-23: 11 commits2026-09-24: 3 commits2026-09-25: 4 commits2026-09-26: 3 commits2026-09-27: 5 commits2026-09-28: 6 commits2026-09-29: 8 commits2026-09-30: 11 commits2026-10-01: 5 commits2026-10-02: 2 commits2026-10-03: 0 commits
777 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Rising fast

    +491 stars this week

  • Very active

    777 commits in 52 weeks

  • Continuous integration

    Automated checks passing

What spirula-studio does

Spirula Studio is a self-contained application for training 3D Gaussian Splatting models directly from raw photos or videos. It manages the entire pipeline, from generating splats to producing textured meshes, without requiring complex Python, PyTorch, or COLMAP installations. The software is highly optimized, capable of training massive models in just 8 GB of VRAM. It uniquely supports cross-vendor hardware, running seamlessly on NVIDIA, AMD, Intel, and Apple GPUs via the Vulkan API. This dramatically lowers the barrier to entry for high-quality 3D reconstruction.

3D artists, game developers, and hobbyists wanting to experiment with Gaussian Splatting without complex setups. It is ideal for users who do not have high-end NVIDIA hardware but still want fast 3D reconstruction.

  • End-to-end pipeline: Processes raw video or images into 3D splats and textured meshes in one tool.
  • Cross-vendor GPU support: Utilizes Vulkan to run on AMD, Intel, and Apple hardware, alongside CUDA for NVIDIA.
  • Self-contained binary: Eliminates dependency hell by removing the need for Python, PyTorch, or COLMAP.
  • VRAM optimization: Trains up to 10 million full-spherical harmonics Gaussians using only 8 GB of video memory.
  • Quantized training: Employs memory-efficient techniques to accelerate the 3D reconstruction process.

Where teams use it

Accessible 3D reconstruction

Generate high-quality 3D models from smartphone video without needing a deep learning engineering background.

Non-NVIDIA rendering

Train Gaussian Splatting models natively on MacBooks or AMD-equipped PCs using the Vulkan backend.

Low-VRAM environments

Process large scenes on consumer-grade GPUs by leveraging the tool's aggressive memory optimizations.

Mesh generation

Convert trained Gaussian splats directly into standard textured meshes for use in game engines or traditional 3D software.

README

master branch

Spirula Studio

GPLv3 License  GitHub Releases  Platform

Download • Build from Source • Gallery • Web Viewer

Spirula Studio trains 3D Gaussian Splatting models – from raw photo/video to splat to textured mesh – in one self-contained binary. No Python/PyTorch, no separate COLMAP install. Runs on NVIDIA, AMD, Intel, and Apple GPUs via Vulkan, trains 10M full-SH Gaussians in 8 GB VRAM, and has native support for fisheye and 360° cameras.

Spirula Studio - Open Source 3D Gaussian Splatting Pipeline

Dataset credit: Garage by Simon Bethke (CC BY-SA 4.0); Flight Systems and Control Lab at UTIAS; MegaDepth-X; Mip-NeRF 360.

Features

  • Cross vendor support via Vulkan compute – Runs on NVIDIA, AMD, Intel, and Apple GPUs

  • One strategy combining advantages of MCMC/IGS+/MRNF – Sharper results, fewer floaters, from objects to large scenes

  • Extreme VRAM efficiency with quantized training – Up to 10 million SH3 Gaussians in 8GB VRAM

  • Native 360° camera and equirectangular support – Load a dataset and train, no undistortion needed

  • Modified Bilateral grid and PPISP for exposure/WB correction – Improving quality without unwanted color shift or darkening

  • Built-in lightning-fast SfM, AI masking, frame extraction from videos – No need to wait for COLMAP or run separate scripts

  • Depth/normal, meshing, skybox, linear color... And more.

News

  • September 23, 2026: Editing and rendering features – Editing features for 3DGS models, sparse reconstructions, meshes, and masks have been added, along with support for exporting image and video renders.

  • September 10, 2026: Metric scale – The dataset creation module now uses telemetry metadata in common video and image formats to recover metric scale and orientation, addressing the popular report that reconstruction results are too large/small or tilted.

  • September 3, 2026: LoMa feature support – The SfM module now supports LoMa for feature detection and matching on difficult datasets.

  • August 14, 2026: macOS support – Support for training on macOS/Apple Silicon has been validated. The app can now be downloaded from Releases page.

  • August 8, 2026: Multilingual support – Multilingual support has been added, available to both GUI and CLI. Supported languages: English, 日本語, 简体中文, 繁體中文, 한국어, Deutsch, Français, Español, Português, Italiano, Nederlands, Русский, Türkçe.

Download

Binaries for Windows, Linux, and macOS can be downloaded from Releases page. Simply select the one for your platform, download and unzip, and double click to open the GUI.

If you are training on remote/cloud GPUs, you may use the CLI – Run spirula --help for details. By default, spirula train command will serve a viewer on an HTTP port, one you can forward over ssh and view training progress in your web browser.

A reconstruction too large for one training run can be split into parts that train one at a time and merge back into one model: the Partition button on the dataset screen, or spirula partition split <dataset> / spirula partition merge <partition.json> on the command line (see docs/notes/scene-partition.md).

Build from source

To build from source, Spirula Studio provides two backends:

  • Vulkan (Recommended): The cross-platform and cross-vendor option. Most tested. Works on all major GPUs. Faster to build and produces smaller binary.

  • CUDA: Legacy option for CUDA-capable NVIDIA GPUs.

Both provide the same training and meshing functionality. CUDA backend may be faster or slower than Vulkan depending on GPU driver, with difference generally within a few percents. Vulkan backend can be slightly more VRAM efficient in some cases.

Backend GPU/Vendor Support Platform Support Dependencies Additional Features
Vulkan NVIDIA, AMD, Intel, Apple Silicon Windows, Linux, macOS Vulkan/MoltenVK, CMake/Ninja Native support for SfM, frame extraction from videos, and AI masking
CUDA Most NVIDIA GPUs Windows, Linux CUDA, CMake/Ninja -
Details for building the Vulkan backend

Make sure you have Vulkan SDK installed. On macOS, MoltenVK is automatically fetched by CMake. Clone the repository and run the commands:

Windows with MSVC:

cd spirula-studio\
.\build_develop.bat -DSS_BACKEND=vulkan -DSS_ENABLE_PATENTED=ON

If it builds successfully, you get build_vulkan\spirula.exe.

Windows with GCC/Clang:

cd spirula-studio\
cmake -G Ninja -B build_vulkan -DCMAKE_BUILD_TYPE=Release -DSS_BACKEND=vulkan -DSS_ENABLE_PATENTED=ON -DCMAKE_MAKE_PROGRAM=Ninja
cmake --build build_vulkan -j

Pass -DCMAKE_C_COMPILER and -DCMAKE_CXX_COMPILER to the first cmake command if needed.

If it builds successfully, you get build_vulkan\spirula.exe.

Linux:

cd spirula-studio/
bash build_develop.bash -DSS_BACKEND=vulkan -DSS_ENABLE_PATENTED=ON

If it builds successfully, you get build_vulkan/spirula binary.

macOS:

cd spirula-studio/
bash build_develop.bash -DSS_BACKEND=vulkan -DSS_ENABLE_PATENTED=ON
cmake --build build --target macos_app
cmake --build build --target macos_dmg

macOS has only the one backend, so it builds into build/ rather than into a per-backend tree. If it builds successfully, you get build/spirula binary similar to Linux. Additionally, it wraps that binary in a double-clickable build/Spirula Studio.app, as well as disk image build/Spirula Studio.dmg. MoltenVK is statically linked by default and will run on a Mac without dependency installed.

Notes regarding third-party licensing

-DSS_ENABLE_PATENTED=ON enables decoding video on the GPU instead of shelling out to ffmpeg (about 15x faster frame extraction, and without need to install ffmpeg). However, AVC/HEVC bitstream parsers carry third-party patent exposure. If you turn this on, you are responsible for ensuring compliance with local patent laws regarding AVC/HEVC playback.

Masking needs a SAM checkpoint, which the GUI downloads on first use and caches. The checkpoints are Meta's models under Meta's licenses – SAM 2.1 is Apache-2.0, SAM 3 is under Meta's own, non-standard license. They are never bundled, and the GUI shows the terms before fetching anything. On the command line, point --model at a file you downloaded yourself.

Details for building the CUDA backend

Make sure you have a recent version of CUDA installed. On Windows, you also need MSVC compiler compatible with your CUDA version. Clone the repository and run the commands:

Windows:

cd spirula-studio\
.\build_develop.bat -DSS_BACKEND=cuda

If it builds successfully, you get build_cuda\spirula.exe.

Linux:

cd spirula-studio/
bash build_develop.bash -DSS_BACKEND=cuda

If it builds successfully, you get build_cuda/spirula binary.

Gallery

You can find some professional-quality splats trained by Spirula Studio from Megascapes Library and their SuperSplat page.

Collection of splats created by the users of Spirula Studio can also be found on SuperSplat page.

Some splats created by the author of Spirula Studio can also be found on my SuperSplat page.

Trivia

Spirula Studio (formerly spirulae-splat) is named after the now-inactive project spirulae, which was named after the deep-ocean cephalopod mollusk.

Spirula Studio is developed and maintained almost entirely by one person. Issues and PRs welcome – I sometimes respond late, but rest assured that I do review them all.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

13 total
  1. v2026.9.30v2026.9.30Sep 30, 20261.4K downloads

    Changelog - General speed improvement in dataset creation - Support splitting a large dataset into multiple parts, then train separately and merge - Support natural language prompt for SAM 2.1 masking models - Support [BiRefNet](https://github.com/zhengpeng7/birefnet) masking model - Improved training ETA estimation, and added training VRAM forecasting and OOM warning - Reduced chance of "VkResult -4" error in dataset creation and meshing - Improved support for using telemetry information in dataset creation - Support pen tool for masks - Support using a separate fixed-area mask for each camera in dual-fisheye setups - Fixed error loading PLY saved from a resumed training - Fixed COLMAP dataset parsing error with relative paths - Fixed video decoding issues with some drivers Notes: - This release carries difference in SfM intended to be improvement. Please submit an issue if you notice significant regression in accuracy or speed compared to previous versions. - The default masking model has been changed from SAM 3 to SAM 2.1 Base+ with Grounding DINO, which provides 2-3x faster masking with slightly reduced accuracy. SAM 3 remains available as a non-default option.

  2. v2026.9.24v2026.9.24Sep 24, 20262.5K downloads

    Changelog - Added editing features for 3DGS models, sparse reconstructions, and meshes - Support exporting image and video renders - Support manually refine masks (#96) - Improved SfM for sequential datasets with repetitive features - Improved fisheye border detection - Support insp and lrv input formats - Improved auto alignment after sparse reconstruction, especially when no telemetry data is available - Support saving and loading hand-edited masks for fixed areas of frames - Support extracting every single frame from a video, by filling 0 for fps - Support explicit control over color space of input point cloud in training - Added MCP server for agentic workflows - Added ModelScope mirror for downloading of model checkpoints Notes: - Editing and rendering features are experimental. Bug reports, feature requests, suggestions for UI/UX enhancements, and anything related are welcome. - This release carries difference in SfM intended to be improvement. Please submit an issue if you notice significant regression in accuracy or speed compared to previous versions.

  3. v2026.9.20v2026.9.20Sep 20, 20261.3K downloads

    Changelog - Support adaptive frame extraction from videos - Improved SfM for 360 cameras with rig constraints - Support warm start training from an existing 3DGS PLY file (#26) - Support presets and batch processing for dataset creation and meshing - Support specifying GPU to use for dataset creation and meshing (#76) - Support generating masks without masking feature points in dataset creation - Improved HDR training on exposure bracketed captures - Support training on RGBA images - Support specifying a fixed background color - Fixed SfM rerun when adding depth and normal maps beside a dataset in GUI - Fixed "VkResult -4" error when meshing on large models Note: - This release carries difference in SfM intended to be improvement. Please submit an issue if you notice significant regression in accuracy or speed compared to previous versions.

  4. v2026.9.13v2026.9.13Sep 13, 2026769 downloads

    Changelog (since v2026.9.8) - Support recovering metric scale and orientation using telemetry metadata extracted from images and videos - Support resuming a partially failed or cancelled dataset creation process - Support rig constraint for SfM, generally improves robustness and accuracy for dual-fisheye systems - Fixed occasional rotated and upside-down reconstructions caused by EXIF orientation - Fixed occasional "fogs" in perspective EWA projection renders in native GUI - Added dataset centering options, addressing floating point precision for datasets in ECEF frame - Support creating dataset from GoPro .360 video format Notes: - Metric scale and orientation requires parsing non-standard telemetry metadata formats. If you believe your dataset contains sufficient telemetry information (like IMU and GPS) but are unused or misused by Spirula Studio, please submit an issue, or otherwise [reach out to the maintainer](https://harry7557558.github.io/contact.html) and provide a sample dataset. - This release carries difference in SfM quality and speed intended to be improvement. Please submit an issue if you notice significant regression compared to previous versions.

  5. v2026.9.10v2026.9.10Sep 10, 2026pre-release104 downloads

    This pre-release is intended to collect community feedback, particularly regarding metric scale from 360 cameras (#34, #53, #56, #63). Background - With conventional settings, SfM reconstruction can appear tilted, upside down, excessively large or small, etc., since it is mathematically impossible to recover scale and orientation from purely RGB images. - A lot of cameras (especially 360 cameras) store metadata in recorded images and videos, which provide information that can be used to recover scale and orientation. Changes compared to v2026.9.8 - Support recovering metric scale (in meters) and orientation from IMU and GPS, common in videos recorded by 360 cameras - Support creating dataset from GoPro `.360` video format Tested telemetry formats: - .jpg/.jpeg - optional GPS from EXIF - .insv (maintainer's Insta360 X5 captures) - accelerometer and gyroscope measurements - optional GPS, only available when captured with phone connected and geolocation enabled - .osv (community datasets) - accelerometer measurements and orientation quaternion - .360 (community datasets) - accelerometer, gyroscope, and GPS measurements Community feedback welcome: - When creati

Commits per week

last 52 weeks
400Week of 2025-10-05: 8 commitsWeek of 2025-10-12: 11 commitsWeek of 2025-10-19: 11 commitsWeek of 2025-10-26: 10 commitsWeek of 2025-11-02: 10 commitsWeek of 2025-11-09: 8 commitsWeek of 2025-11-16: 8 commitsWeek of 2025-11-23: 8 commitsWeek of 2025-11-30: 5 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 3 commitsWeek of 2025-12-21: 2 commitsWeek of 2025-12-28: 6 commitsWeek of 2026-01-04: 2 commitsWeek of 2026-01-11: 3 commitsWeek of 2026-01-18: 2 commitsWeek of 2026-01-25: 4 commitsWeek of 2026-02-01: 14 commitsWeek of 2026-02-08: 10 commitsWeek of 2026-02-15: 16 commitsWeek of 2026-02-22: 8 commitsWeek of 2026-03-01: 13 commitsWeek of 2026-03-08: 13 commitsWeek of 2026-03-15: 14 commitsWeek of 2026-03-22: 10 commitsWeek of 2026-03-29: 4 commitsWeek of 2026-04-05: 6 commitsWeek of 2026-04-12: 11 commitsWeek of 2026-04-19: 20 commitsWeek of 2026-04-26: 10 commitsWeek of 2026-05-03: 11 commitsWeek of 2026-05-10: 12 commitsWeek of 2026-05-17: 17 commitsWeek of 2026-05-24: 29 commitsWeek of 2026-05-31: 24 commitsWeek of 2026-06-07: 25 commitsWeek of 2026-06-14: 18 commitsWeek of 2026-06-21: 12 commitsWeek of 2026-06-28: 8 commitsWeek of 2026-07-05: 21 commitsWeek of 2026-07-12: 23 commitsWeek of 2026-07-19: 21 commitsWeek of 2026-07-26: 16 commitsWeek of 2026-08-02: 26 commitsWeek of 2026-08-09: 27 commitsWeek of 2026-08-16: 39 commitsWeek of 2026-08-23: 24 commitsWeek of 2026-08-30: 40 commitsWeek of 2026-09-06: 35 commitsWeek of 2026-09-13: 23 commitsWeek of 2026-09-20: 39 commitsWeek of 2026-09-27: 37 commitsOct 5, 2025Sep 27, 2026
777 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 7 commitsSun 1:00 — 6 commitsSun 2:00 — 2 commitsSun 3:00 — 3 commitsSun 4:00 — 2 commitsSun 5:00 — 2 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 1 commitsSun 9:00 — 3 commitsSun 10:00 — 4 commitsSun 11:00 — 4 commitsSun 12:00 — 10 commitsSun 13:00 — 11 commitsSun 14:00 — 12 commitsSun 15:00 — 8 commitsSun 16:00 — 7 commitsSun 17:00 — 6 commitsSun 18:00 — 12 commitsSun 19:00 — 9 commitsSun 20:00 — 6 commitsSun 21:00 — 8 commitsSun 22:00 — 14 commitsSun 23:00 — 19 commitsMon 0:00 — 5 commitsMon 1:00 — 2 commitsMon 2:00 — 1 commitsMon 3:00 — 4 commitsMon 4:00 — 3 commitsMon 5:00 — 1 commitsMon 6:00 — 1 commitsMon 7:00 — 3 commitsMon 8:00 — 3 commitsMon 9:00 — 2 commitsMon 10:00 — 4 commitsMon 11:00 — 2 commitsMon 12:00 — 3 commitsMon 13:00 — 4 commitsMon 14:00 — 7 commitsMon 15:00 — 8 commitsMon 16:00 — 5 commitsMon 17:00 — 9 commitsMon 18:00 — 6 commitsMon 19:00 — 8 commitsMon 20:00 — 11 commitsMon 21:00 — 9 commitsMon 22:00 — 14 commitsMon 23:00 — 24 commitsTue 0:00 — 12 commitsTue 1:00 — 8 commitsTue 2:00 — 2 commitsTue 3:00 — 3 commitsTue 4:00 — 3 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 1 commitsTue 9:00 — 3 commitsTue 10:00 — 7 commitsTue 11:00 — 0 commitsTue 12:00 — 6 commitsTue 13:00 — 3 commitsTue 14:00 — 5 commitsTue 15:00 — 6 commitsTue 16:00 — 5 commitsTue 17:00 — 9 commitsTue 18:00 — 8 commitsTue 19:00 — 9 commitsTue 20:00 — 13 commitsTue 21:00 — 13 commitsTue 22:00 — 17 commitsTue 23:00 — 9 commitsWed 0:00 — 7 commitsWed 1:00 — 6 commitsWed 2:00 — 2 commitsWed 3:00 — 2 commitsWed 4:00 — 1 commitsWed 5:00 — 1 commitsWed 6:00 — 1 commitsWed 7:00 — 3 commitsWed 8:00 — 4 commitsWed 9:00 — 1 commitsWed 10:00 — 1 commitsWed 11:00 — 0 commitsWed 12:00 — 8 commitsWed 13:00 — 2 commitsWed 14:00 — 2 commitsWed 15:00 — 4 commitsWed 16:00 — 3 commitsWed 17:00 — 8 commitsWed 18:00 — 6 commitsWed 19:00 — 9 commitsWed 20:00 — 13 commitsWed 21:00 — 15 commitsWed 22:00 — 14 commitsWed 23:00 — 13 commitsThu 0:00 — 7 commitsThu 1:00 — 5 commitsThu 2:00 — 1 commitsThu 3:00 — 1 commitsThu 4:00 — 1 commitsThu 5:00 — 2 commitsThu 6:00 — 1 commitsThu 7:00 — 2 commitsThu 8:00 — 2 commitsThu 9:00 — 0 commitsThu 10:00 — 1 commitsThu 11:00 — 3 commitsThu 12:00 — 4 commitsThu 13:00 — 1 commitsThu 14:00 — 1 commitsThu 15:00 — 5 commitsThu 16:00 — 6 commitsThu 17:00 — 5 commitsThu 18:00 — 4 commitsThu 19:00 — 4 commitsThu 20:00 — 10 commitsThu 21:00 — 13 commitsThu 22:00 — 12 commitsThu 23:00 — 15 commitsFri 0:00 — 7 commitsFri 1:00 — 5 commitsFri 2:00 — 2 commitsFri 3:00 — 4 commitsFri 4:00 — 2 commitsFri 5:00 — 2 commitsFri 6:00 — 1 commitsFri 7:00 — 1 commitsFri 8:00 — 2 commitsFri 9:00 — 1 commitsFri 10:00 — 3 commitsFri 11:00 — 1 commitsFri 12:00 — 0 commitsFri 13:00 — 2 commitsFri 14:00 — 2 commitsFri 15:00 — 3 commitsFri 16:00 — 3 commitsFri 17:00 — 10 commitsFri 18:00 — 10 commitsFri 19:00 — 8 commitsFri 20:00 — 10 commitsFri 21:00 — 9 commitsFri 22:00 — 10 commitsFri 23:00 — 18 commitsSat 0:00 — 9 commitsSat 1:00 — 8 commitsSat 2:00 — 3 commitsSat 3:00 — 2 commitsSat 4:00 — 0 commitsSat 5:00 — 2 commitsSat 6:00 — 1 commitsSat 7:00 — 3 commitsSat 8:00 — 1 commitsSat 9:00 — 4 commitsSat 10:00 — 6 commitsSat 11:00 — 4 commitsSat 12:00 — 4 commitsSat 13:00 — 5 commitsSat 14:00 — 8 commitsSat 15:00 — 9 commitsSat 16:00 — 6 commitsSat 17:00 — 17 commitsSat 18:00 — 10 commitsSat 19:00 — 10 commitsSat 20:00 — 9 commitsSat 21:00 — 10 commitsSat 22:00 — 13 commitsSat 23:00 — 15 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits767 (97%)
Community commits26 (3%)

793 commits in total over the last year.

DateListRankStars gained
Sep 24, 2026daily#13+86
Sep 23, 2026daily#13+86