SkySplat is a Blender addon that simplifies the workflow for creating 3D Gaussian Splats from drone footage. It provides a comprehensive set of tools to streamline the process from video import to frame extraction, and loose integration of Blender with COLMAP and Arthur Brussee's rust based Brush App (pre-compiled binaries included).
-
Video Import & Management
- Load drone videos directly into Blender
- Automatic detection and loading of SRT metadata files
- Smart path management for project organization
-
Automatic Frame Extraction
- Extract frames with customizable parameters (start, end, step)
- Automatic output folder creation based on video filename
- Optimized for aerial footage processing
-
COLMAP Integration
- A loose integration between COLMAP and Blender, arrange files and launch COLMAP
- Path synchronization between video processing and reconstruction
-
Gaussian Splatting Integration
- A loose integration of the Brush App for gaussian splatting training.
- Configuration of gaussian-splatting training from Blender
- Running of gaussian-splatting in a subprocess
- Blender 4.0.0 or newer
- COLMAP (for reconstruction features)
- Brush App from Arthur Brussee.
Note: The Brush App for Gaussian Splatting is now bundled with the addon - no separate installation required!
-
Download the latest release zip file from SkySplat Releases
OR
Download the latest development version via the GitHub Download ZIP link under the code button at skysplat_blender
-
Open Blender and navigate to Edit → Preferences → Add-ons
-
Click "Install..." and select the downloaded ZIP file
-
Enable the addon by checking the box next to "3D View: SkySplat: 3DGS Blender Toolkit"
COLMAP is required for the Structure from Motion reconstruction features. Choose the installation method for your operating system:
brew install colmap
The executable will be installed to /opt/homebrew/bin/colmap
(Apple Silicon) or /usr/local/bin/colmap
(Intel).
Ubuntu/Debian:
sudo apt update
sudo apt install colmap
Fedora/RHEL:
sudo dnf install colmap
Arch Linux:
sudo pacman -S colmap
The executable will typically be installed to /usr/bin/colmap
.
- Download the latest Windows release from COLMAP GitHub Releases
- Extract the ZIP file to a location like
C:\Program Files\COLMAP\
- The executable will be at
C:\Program Files\COLMAP\bin\colmap.exe
- Optionally, add the
bin
directory to your system PATH for easier access
Note: For SkySplat to work properly, you'll need to know the path to the COLMAP executable. The addon will attempt to auto-detect common installation paths, but you can manually specify the path in the COLMAP panel if needed.
The brush app from brush app is needed for the 3DGS training of the scene. The brush binaries for all mac/linux/windows are included with this addon, however, when Blender installs an addon via a zip file, it changes the permissions on the extracted files (this is for everyone's benefit), and these cannot be executed by default.
You have 3 options for running brush from this addon:
After installing the SkySplat addon, you'll need to make the bundled brush binaries executable:
macOS/Linux:
-
Open Terminal
-
Navigate to your Blender addons directory:
- macOS:
~/Library/Application Support/Blender/4.0/scripts/addons/skysplat_blender/binaries/
- Linux:
~/.config/blender/4.0/scripts/addons/skysplat_blender/binaries/
- macOS:
-
Make the binary executable:
# For macOS chmod +x brush_app_mac
# For Linux chmod +x brush_app_linux
Windows:
Windows executables should work without permission changes, but if you encounter issues, right-click on brush_app_windows.exe
→ Properties → Security → and ensure your user has "Full control" permissions.
If you prefer to download the binaries separately, you can get them directly from the Brush repository releases:
- Windows: Download
brush_app_windows.exe
from Brush Releases - macOS: Download
brush_app_macos
from Brush Releases
On macos, if you get an error something to the effect of "Apple could not verify "brush_app_mac" you may need to remove the quarantine from the downloaded file. This applies to downloads from the brush repo as well as the skysplat repo.
xattr -d com.apple.quarantine /path/to/brush_app_mac
- Linux: Download
brush_app_linux
from Brush Releases
You can also get the compiled binaries in the skysplat_blender repo
- Windows:
brush_app_windows.exe
- macOS (Apple silicon):
brush_app_mac
- linux:
brush_app_linux
Important: You will need to know the full path to where you downloaded these binaries, as you'll need to specify this path in the SkySplat 3DGS panel's "Brush Executable" field.
For the most up-to-date version or if you want to modify the source code:
-
Install Rust (if not already installed):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env
-
Clone and build Brush:
git clone https://github.com/ArthurBrussee/brush.git cd brush cargo build --release
-
Locate the executable:
- Windows:
target/release/brush_app.exe
- macOS/Linux:
target/release/brush_app
- Windows:
Important: You will need to know the full path to the compiled executable (e.g., /home/username/brush/target/release/brush_app
) as you'll need to specify this path in the SkySplat 3DGS panel's "Brush Executable" field.
Note: The SkySplat addon will automatically attempt to detect the bundled binaries first, then fall back to common build locations like ~/projects/brush/target/release/brush_app
. If none are found, you can manually specify the path in the 3DGS panel.
To monitor the detailed output of COLMAP processing, Brush training, and other operations, it's recommended to run Blender from the command line. This allows you to see real-time console output and debug information that isn't visible in the Blender GUI.
macOS:
/Applications/Blender.app/Contents/MacOS/Blender
Linux:
blender
Windows:
"C:\Program Files\Blender Foundation\Blender 4.0\blender.exe"
- COLMAP Output: See detailed reconstruction progress, feature detection statistics, and any error messages
- Brush Training: Monitor training iterations, loss values, and performance metrics in real-time
- Debug Information: View Python error traces and addon-specific logging
- Process Monitoring: Track subprocess execution and completion status
When running operations like "Run COLMAP" or "Run Brush Training", the detailed output will appear in the terminal where you launched Blender, making it much easier to troubleshoot issues or monitor progress.
-
Accessing the Toolkit
- Open the sidebar in the 3D View (press N)
- Select the "SkySplat" tab
-
Loading Drone Footage
- You can download the example video used in this walkthrough at windsor_silo (right click and save as) (This is a new video of the silo that tends to work better in COLMAP)
- Select your video file in the "Video File" field in the 3D Viewport
- If available, the SRT metadata file will be detected automatically
- Click "Load Video and SRT" to import into the Video Sequencer
-
Extracting Frames
- Set your desired frame range and step value, Version 0.3.0 of SkySplat will automatically select the frame step value to get the total number of extracted frames to about 170. Smaller step size means more frames and better reconstruction, but also longer processing times.
- Confirm or modify the output folder
- Click "Extract Frames" to process
-
COLMAP Workflow
- Configure COLMAP settings in the SkySplat COLMAP panel
- COLMAP Executable should auto populate with your systems default path, however you can manually set it if needed (on MacOS this path will be /opt/homebrew/bin/colmap if you used the homebrew as the install method as described above)
- If the input and output paths for the models aren't loaded, you can click the chain link icon to auto populate them from the video file path and defaults.
- The defaults for the other settings should be sufficient for your first few runs.
- Click "Run COLMAP" to begin processing your video frames into a sparse point cloud (you can monitor the console running blender for detailed colmap output)
-
COLMAP Model Transformation This step was the main reason I came up with this workflow. COLMAP will default the coordinate frame to the frame of the initial camera pose. This means that for many gaussian splatting drone videos, it is slightly tilted down and at the first camera origin, rather than being at a natural center of the scene. The colmap transformation panel lets you load the COLMAP output model, scale, rotate, and translate the parent object in blender to a more natural scale, position, and orientation, and then export the model before gaussian splatting training.
- Click "Load COLMAP Model" after running COLMAP and it will load the output COLMAP model into blender. You can also go straight to this step in Blender if you already processed your images outside of SkySplat.
-
If the loaded COLMAP model looks sparse with few points or few cameras, try running frame extraction again with a smaller step size.
-
To transform this model, make sure you transform the parent "COLMAP_Root" empty object, not individual cameras or points.
- For the example silo video, I rotated it so the natural ground was in the X-Y plane, and the origin was at the base of the silo. You can also use a google maps or OSM image with a scale so that you can right size the COLMAP and hence 3DGS models. I have included a screen shot of a map from this silo video at silo reference map
This is one of the highlights of working with COLMAP and 3DGS in Blender, the ability to include other 3D assets, models, and features in a cohesive 3d environment.
Now I can export the model scaled and rotated into a more natural coordinate system, and the 3DGS code will start with these parameters when it fits the gaussians.
-
Click "Export COLMAP Model" after you have finished transforming and adjusting your model, this will export a new model in the /transformed/ directory.
-
Click "Prepare Brush Dataset" to prepare a dataset for training with the Gaussian Splatting Brush. This will arrange your COLMAP model and images into a directory that brush can import.
-
Brush Training (3D Gaussian Splatting)
- Configure Brush settings in the SkySplat 3DGS panel (as shown in the image below)
- The Brush Executable path will auto-populate with the bundled binary for your platform (Windows, macOS, or Linux)
- Use the chain link icon next to the Source Path to automatically sync with your COLMAP output
- The Source Path should point to your transformed COLMAP model or prepared brush dataset
- Set your Export Path where the trained .ply files will be saved
- Configure training parameters:
- Total Steps: Number of training iterations (default: 30000)
- Max Resolution: Maximum image resolution for training (default: 1920)
- With Viewer: Enable this to pop up the interactive viewer application that shows real-time training progress
- If you want to watch the brush app training live you can click the "viewer" button. This will run brush with the UI and show the 3DGS model as it is trained.
- Advanced options are available by expanding the "Show Advanced Options" section for fine-tuning learning rates, refinement parameters, and dataset options
- Click "Run Brush Training" to start the process
- Unlike the original Gaussian Splatting implementation, Brush runs as a subprocess so it won't block the Blender UI
- Monitor progress in the Blender console, or if you enabled "With Viewer", watch the training progress in the dedicated viewer window
- The training process will automatically export .ply files at specified intervals to your Export Path
- 3DGS Loading There is already a rich Blender addon ecosystem for loading 3D gaussian splats into Blender. I recommend KIRI Innovation's 3DGS Render Addon and you can see it in my Blender screen shots above if you look closely. I recommend loading the ply file without transforming from COLMAP to Blender coordinates mainly because we already did a transformation and scaling in the previous step. If everything worked you will now have your transformed COLMAP model, any helper "reference silos" you created in blender, and the 3D Gaussian Splat ready to create whatever awesome render or animation you are working on.
The best thing someone can do is try this workflow with their own drone videos and please tell me about your experience. This is the very first iteration of this and I know with an engaged open source community we can create some amazing splats, renders, experiences and art.
I did this development on Linux and while I tried (or more acurately Claude tried) to make sure it is platform agnostic, I would love if people wanted to try this out on Windows or MacOS and could provide feedback or contribute to the project.
I also have many comments above to the effect of "future versions will include...", and "I still need to work on..." etc.
If you have any ideas for further features, or bug reports, or want to help work on documentation, please feel free to fork the code and send a pull request or reach out.
SkySplat_blender is licensed under the MIT License. A single file was forked from COLMAP (utils/read_write_model.py) and it retains the original copyright.
Brush is built separately and no code is included in SkySplat. Also, it is licensed under Apache v2, and this license should be adhered to.
None of the code from Gaussian Splatting is included in this repo, however, if you use it all of its copyright and license conditions should be adhered to.
- ✅
Package the brush app with the blender addonCOMPLETED! - Brush binaries are now bundled for all platforms - Integration of SRT metadata for improved COLMAP initialization
- Enhanced UI for batch processing multiple videos
- Direct integration with more 3D Gaussian Splatting viewers
Without these open source (or source available in one case) projects, I would have nothing in this project. If you find this workflow useful, please consider giving these projects a star or following them on GitHub to stay updated with their development.
- Blender
- COLMAP
- Brush App - Current preferred implementation for 3dgs
- Gaussian Splatting - Original source for performing Gaussian Splatting
- RedShot AI Tutorial - I used this tutorial extensively as I was working my way through my first gaussian splats
- KIRI Innovation's 3DGS Render Addon
Happy Splatting!🎨
Kyjohnso
Legacy - Install GraphDeco-INRIA's gaussian-splatting python package
The original SkySplat addon used the GraphDeco-INRIA's gaussian-splatting software. These install instructions are provided for completeness.
- clone the repository
git clone [email protected]:graphdeco-inria/gaussian-splatting.git --recursive
cd gaussian-splatting
- Virtual Environment - I highly recommend installing the gaussian-splatting software in a virtual environment to avoid conflicts with other python packages you may have installed. Here is how you would create and activate a virtual environment in bash:
python3 -m venv venv
source venv/bin/activate
pip install plyfile tqdm
The submodules in the gaussian splatting repository depend on torch. You can install torch a variety of ways, but I find it most continent to install it via pip, just like the other dependencies. We will give pip a index url that is for your specific CUDA version (in this example I am installing 12.6). You can find your specific CUDA version by running;
nvcc --version
Then install torch via pip;
pip install torch --index-url https://download.pytorch.org/whl/cu126
At this point, I find it useful to verify that the installed torch version is compatible with your CUDA version and GPU. You can run the following commands in a python interpreter or put them in a file and run it.
#!/usr/bin/env python3.11
verify_cuda_torch.py
import torch
if torch.cuda.is_available():
print("CUDA is available! You have", torch.cuda.device_count(), "GPU(s).")
print("Device name:", torch.cuda.get_device_name(0))
else:
print("CUDA is not available. Check your installation.")
Note: I have occasionally had problems with creating a venv, activating it, and then the python command pointing to a different version of python. Depending on your version of python and how you setup your environment, you may need to adjust how you call this file that you just created. For instance, I called the above file with the command:
python3.11 verify_cuda_torch.py
If you encounter issues, try creating a new venv and reinstalling torch there.
Now you should be able to install the gaussian-splatting dependencies:
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
Make note of where you cloned the code to and where the virtual environment directory is located, these will be needed in blender to call the gaussian-splatting software