image-to-relief-stl
// Turn a source image (or multi-color mask image) into a 3D-printable bas-relief STL by mapping colors (or grayscale) to heights. Use when you have an image from an image-gen skill (nano-banana-pro, etc.) and want a real, printable model (STL) via a deterministic pipeline.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameimage-to-relief-stl
descriptionTurn a source image (or multi-color mask image) into a 3D-printable bas-relief STL by mapping colors (or grayscale) to heights. Use when you have an image from an image-gen skill (nano-banana-pro, etc.) and want a real, printable model (STL) via a deterministic pipeline.
metadata[object Object]
image-to-relief-stl
Generate a watertight, printable STL from an input image by mapping colors (or grayscale) to heights.
This is an orchestrator-friendly workflow:
- Use nano-banana-pro (or any image model) to generate a flat-color image.
- Run this skill to convert it into a bas-relief model.
Practical constraints (to make it work well)
Ask the image model for:
- exactly N solid colors (no gradients)
- no shadows / no antialiasing
- bold shapes with clear edges
That makes segmentation reliable.
Quick start (given an image)
bash scripts/image_to_relief.sh input.png --out out.stl \
--mode palette \
--palette '#000000=3.0,#ffffff=0.0' \
--base 1.5 \
--pixel 0.4
Grayscale mode
bash scripts/image_to_relief.sh input.png --out out.stl \
--mode grayscale \
--min-height 0.0 \
--max-height 3.0 \
--base 1.5 \
--pixel 0.4
Outputs
out.stl(ASCII STL)- optional
out-preview.svg(vector preview via potrace; best-effort)
Notes
- This v0 uses a raster heightfield meshing approach (robust, no heavy CAD deps).
- The
--pixelparameter controls resolution (smaller = higher detail, bigger STL).