# 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. - Author: Avery Wagar - Repository: FuturePresentLabs/agent-skills - Version: 20260202150103 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/FuturePresentLabs/agent-skills - Web: https://mule.run/skillshub/@@FuturePresentLabs/agent-skills~image-to-relief-stl:20260202150103 --- --- name: image-to-relief-stl description: 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. metadata: openclaw: requires: bins: ["python3", "potrace", "mkbitmap"] install: - id: apt kind: apt package: potrace bins: ["potrace", "mkbitmap"] label: Install potrace + mkbitmap (apt) - id: brew kind: brew formula: potrace bins: ["potrace", "mkbitmap"] label: Install potrace + mkbitmap (brew) --- # 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 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 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 `--pixel` parameter controls resolution (smaller = higher detail, bigger STL).