Gaussian Splatting in macOS 100% free

After watching Olli Huttunen’s gaussian splatting experiments with both, the Insta360 and the Antigravity A1 I wondered if there was an option to do the same, but with an Apple Silicon Macintosh and using free/libre software, and the answer is a resounding yes, it can be done.

Update: Thanks to a comment from @ichsan2895 I switched to PyCOLMAP and it runs quite fast now, the whole project in less that 3 hours, vídeo guide:

With the current economy thanks to stupid unnecessary wars, I’m unable to get the Antigravity A1, but we have some sample footage, source in the previous article, so here are the steps, first I stitched the VID_20251107_081816_126.insv using the Antigravity A1 Studio desktop app, make sure to set the Preset Viewing Direction to Free View:

Then export the video in 360 format, I use Apple ProRes to avoid image degradation, this is up to you because it requires some hard drive space:

Now that we have an equirectangular video, we can use some command line tools like Sharp Frames to get just the best frames from the video, PyCOLMAP for reconstruction and Brush for gaussian splatting, and to make things easier, I created some scripts and I made a cheat sheet with installations instructions: https://github.com/rodrigopolo/clis/tree/main/GaussianSplatting

Once the command line interface apps (CLIs) are installed, and the scripts are downloaded, we can run each command, assuming that our 360 video is in our desktop with the filename input.mov and that we aim to export the project into a folder called Project in the desktop, let’s extract the sharp frames:

# Exctract sharp frames and diretory structure creation
~/clis/GaussianSplatting/Exctract.sh \
--scenedir ~/Desktop/Project \
--fps 3 \
~/Desktop/input.mov

Now for the scene reconstruction, let’s run all COLMAP commands:

# Run COLMAP reconstruction using PyCOLMAP
~/clis/GaussianSplatting/A1PyColmap.py \
--scenedir ~/Desktop/Project

And finally, Brush for gaussian splatting

# Run Brush selecting the best sparse
~/clis/GaussianSplatting/Brush.sh \
--scenedir ~/Desktop/Project

The process for this video took around 8 hours and 11 minutes, the slowest tasks were the COLMAP matcher and Brush, and after some tests I got to know it took around 6 minutes per 1k steps or 10k steps per hour, here is the broken-down timeline:

TaskTime
hh:mm:ss
Sharp frames exctraction, 63 frames1:07
COLMAP reconstruction using PyCOLMAP18:30
Brush 30k steps 4M splats2:05:12
Total:2:24:49

And here is the result:

Not bad for a gaussian splatting made without an NVIDIA GPU and without trowing money at some proprietary software, now, I’m new into the gaussian splatting thing, I guess more experience users could improve the scripts, tell you which amount of splats are recommended and how many steps, in my short experience, 30k steps is more than enough:

If you find this information useful and want to support truly independent creators, you can donate here: https://www.paypal.com/paypalme/RodrigoPolo

Small update

To make sure everything works as expected and 100% automatic, I ran the following commands by just pasting all at once in the macOS console and let it run:

scenedir=~/Desktop/Test2
input=~/Desktop/input.mov

~/clis/GaussianSplatting/Exctract.sh \
--scenedir ${scenedir} \
--fps 3 \
${input} && \
~/clis/GaussianSplatting/A1PyColmap.py \
--scenedir ${scenedir} && \
~/clis/GaussianSplatting/Brush.sh \
--scenedir ${scenedir}

2h 31m later I got this:

Leave a Reply

Your email address will not be published. Required fields are marked *

Releated

DJI Avata 360, a work in progress

As I did with the Antigravity A1 footage analysis, I wanted to check out the footage quality of the DJI Avata 360. Thanks to a kind user online, we gained access to some DJI Avata 360 sample footage. It is impossible not to compare the DJI Avata to the Antigravity A1, as it is not […]

Corridor Crew keyer

The Corridor Crew created an amazing project, and showed the world the wonders of free open source projects, there is not too much to say, watch the video: