Drawing With Machines: Colors

Axidraw

p5.js

Python

vpype

Overview

A drawing system designed to translate images into layered, hatched SVGs for pen plotting with colored markers. The project combines color segmentation with physical ink layering to produce plotted paintings that negotiate between mechanical precision and painterly abstraction.

How can a precision machine make something painterly?

Pen plotters are designed for precision. This project explores how to make them behave otherwise. I wanted to work with less controlled materials that bleed, layer, and has more texture. Over the course of this project I experimented with watercolor, acrylic, and alcohol markers on yupo, printmaking, watercolor, and Xuan paper. These led to the development of a custom pipeline that converts photographs into multi-color hatched drawings that read more like paintings than prints.

The main challenge: Colors!

A photograph contains way more colors than a set of markers.

The algorithm identifies a small palette of foundation inks. Layered strokes then create a richer range of colors than any marker could produce alone.

The layering logic is similar to painting, light colors first as a base layer, and darker tones build on top. Colors in the same hue family share territory and contrasting colors stay strictly separate.

Paper absorbency, marker pressure, and ink bleed introduce variation that the artist nor the algorithm can fully control.

How it works

input photo →

input photo

SLIC superpixels

→

→

→

hue clustering

hue clustering

→

→

SDF inflation

SDF inflation

→

→

hatching

hatching

→ SVG → vpype → Axidraw

SVG → vpype → Axidraw

→

Process

ITERATION 01

P5.js k-means color separation + PEmbroider hatching by bitmaps

Problems:

  • color slots wasted on value variation

  • noisy, less organic color patches

  • limitation/inflexibility for hatching in PEmbroider

  • data moving across two different work stations (P5.js and Processing)

ITERATION 02

Moved entire pipeline to python

  • SLIC superpixels for perceptually coherent regions

  • SDF region inflation for smoothing

  • Hue based clustering

→ Organic edges, more effective color separation

Problems:

  • Every ink is independent, only covers their own regions, no overlap

  • color selection by clustering hues separately from grays, resulting in over-represented mid tones

ITERATION 03

Minor adjustments:

  • Color layering: inks in the same color family share territory, colors build up from light to dark

  • Underpainting

→ Palette now spans a greater perceptual range & more nuanced colors

Final Plots