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:runThese 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-allAdding 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
dockerfolder. -
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:imageversion tag.Dockerfile:COMMIT_IDARG.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_TAGandCOMMIT_ID.