How it works

It teaches itself to paint

A single Substance Designer graph takes any picture and trains brush strokes on it. No Python touches training. It runs in Designer and outputs colour, height, roughness and normal maps, which Blender renders as thick, glossy oil paint.

4,096 strokes37.16 dB on the Vermeer40.91 dB on the face120 s to train
01
One file, no rebuild

Any picture in

The graph is the whole program. Give it a target image and it learns that picture as brush strokes, inside Designer, with nothing running beside it.

Swapping the picture takes no rebuild. The same graph trained on the Vermeer also takes the Great Wave. The wave is harder: it reaches 23.15 dB and reads as paint, but it loses print detail.

Vermeer and the Great Wave from the same graph
Vermeer and the Great Wave from the same graph, with no rebuild.
02
Where the strokes go

Fix the worst error

Strokes start evenly spread and grey. At step 40, the fine strokes move to wherever the graph's own error is worst. Nothing outside the graph tells them where to go.

That gives you coarse and fine at once: thick strokes in the body, tight ones on the face. An earlier reading said 4,096 strokes flattened the surface. That turned out to be a bug in the map export, which clipped the height. With the bug fixed, the trade-off went away.

Coarse plus fine result
Coarse plus fine, after the export fix.
03
Paint, not pixels

It has thickness

The output is a surface, so it can be lit. Height and roughness carry the ridges and the wet sheen, which is why this reads as oil and not as a filter.

Full view and close-up
Full view and close-up.
Wet versus matte, and stroke by stroke reveal
Wet against matte, and a stroke-by-stroke reveal.
04
A tool, not a render

Every slider is live

Thickness, bristle depth, ridge, colour streak, gloss, gloss breakup, top-stroke dominance, canvas and reveal all change instantly with no retraining.

Target image, seed, stroke size, dryness, bristle scale and face focus need a retrain.

Instant controls at two extremes
Instant controls at two extremes.
Seven paintings from one graph
Seven paintings from one graph.
05
Measured

Numbers

4,096strokes
256 pxtraining target
120 sto train, about
37.16 dBVermeer, overall
40.91 dBVermeer, face
23.15 dBGreat Wave, focus off