Making Gaussian Splatting research repos easier to set up and use, one Dockerfile at a time.
This is a multi-project repository focusing on making Gaussian Splatting research repositories easier to set up and use. I use Tasks and Docker for setting everything up, with Github Container Registry for housing the built images.
Currently, the following projects are available:
task | category | status | note | link |
---|---|---|---|---|
3dgscd |
change detection | 🚧 | OOM during tests; couldn't test 'running the method' | 3D Gaussian Splatting-based Change Detection for Physical Object Rearrangement |
3dgsconverter |
format conversion | ✅ | 3D Gaussian Splatting Converter | |
gsplat |
rasterization | ✅ | includes 3DGUT, PNG compression, and fused bilateral grids | gsplat: An Open-Source Library for Gaussian Splatting |
hierarchical-3d-gaussians , h3dgs |
hierarchy | 🚧 | viewer doesn't work, needs more testing | A Hierarchical 3D Gaussian Representation for Real-Time Rendering of Very Large Datasets |
nerfstudio , ns |
library, segmentation, open-vocab | ✅ | feature-splatting ready for use | Nerfstudio: A collaboration friendly studio for NeRFs |
spatiallm , slm |
scene understanding, point cloud | ✅ | SpatialLM: Large Language Model for Spatial Understanding | |
supersplat , ss |
visualization, editing, compression | ✅ | Supersplat: 3D Gaussian Splat Editor |
✅: done | 🚧: work-in-progress.
Duplicate/rename .env.example
to .env
, and add the path to your datasets folder, e.g.:
DATA_PATH="//c/path/to/datasets"
This path will be bound to a docker volume and become available inside the containers data
folder.
Important
On Windows, the path must start with two forward slashes (/). For a path in the C drive: "//c/path/to/datasets"
Type task
to see all available tasks and their descriptions. For .env
to work, run all tasks from the main root Taskfile.
To work on a specific project, run the tasks associated with that project. For example, with gsplat
, the following should be enough:
task gsplat:pull
task gsplat:run
These will pull the image, run the container, and exec into it. Every project has this set of tasks: clone
, build
, pull
, push
, and run
.
Note
Read the README.md in each project for project-specific instructions.
The -all
tasks are for batch execution of tasks from all projects. For example, to clone all repositories:
task clone-all
Adding new projects follows this workflow:
-
Create and checkout a new branch.
-
Create a folder for the project using the template
.templates/project
. Project folders usually contain the following:project_name/ └── docker/ ├── docker-compose.yml ├── Dockerfile └── README.md └── Taskfile.yaml
-
Rename and edit the template files.
-
Additional files needed for the container go inside the project
docker
folder. -
Check that all tasks from the new project work.
-
Open a PR and wait for the merge!
As of now, multiple things have to be manually updated for version bumping:
docker-compose.yml
:image
version tag.Dockerfile
:COMMIT_ID
ARG.requirements.txt
: if the project has a custom requirements file (e.g.,gsplat
), always double-check if any new requirements have been added.Taskfile.yaml
:VERSION_TAG
andCOMMIT_ID
.