Colour prints on one nozzle
- Add a photo.
- Tick the filaments you own — the tool picks the best few and when to swap.
- Compare, download, print — pause and swap at the listed layers.
Filament painting turns a photo into a colour print with nothing more than a few filament swaps. The print is a thin relief; the filament changes at chosen layers, and because thin plastic is translucent, the colour at each point depends on how tall it is. This free tool does it in your browser: add a photo, tick the filaments you own, and it picks the best few, the order and the layer for each swap, shows the simulated result next to your photo, and gives you a 3MF with the colour changes built in.
New — 6 November 2026: first version. Written by Ned Walsch; the same engine makes the colour lithophanes in the lithophane studio.
Every layer of a translucent filament lets some of the colour below through. Light goes in and comes back out, so a layer of thickness t over a colour underneath shows a mix: the filament's own colour with weight 1 − e−6t/TD, the colour beneath with the rest. Stack black, then blue, then a skin tone, then white, and a point that is 6 layers tall looks dark blue, 14 layers looks skin-toned, 20 layers almost white. The tool computes that colour for every possible height, and for every pixel of your photo picks the height whose colour is closest. The photo's tones are laid onto the ladder's range (a print can be no brighter than its top filament, so the whole ladder is used), and hue errors count more than brightness errors. Choosing which filaments, in which order and at which layers to swap is the hard part — the solver starts from the darkest filament you ticked, grows the best sets one colour at a time, tries swapping colours in and out, and keeps the set with the smallest error over the photo's colours; each colour gets at least three layers so every swap shows.
| Setting | Value | Why |
|---|---|---|
| Layer height | As set in the tool (0.08 mm) | The swaps are counted in layers; a different height moves every colour. |
| First layer | As set (0.16 mm) | Same reason. |
| Infill | 100 % | Infill patterns show through thin translucent plastic. |
| Ironing / fuzzy skin | Off | Both change the top colour. |
| Swaps | From the 3MF, or M600 / pause at each z in swaps.txt | Purge the old colour fully before resuming. |
| Display | Front-lit, on a wall or a stand | It is a reflected-light picture; for light from behind use a colour lithophane. |
The simulation is only as good as the TD values. If the print is darker or more saturated than the preview at a colour, that filament is more opaque than its TD says — lower its TD and paint again; if it is washed out, raise it. A strip test (a step wedge of each filament on white) tells you quickly. Black at the bottom and white at the top give the most range; add one or two colours that carry the photo (a skin tone for portraits, an orange and a blue for sunsets).
A thin relief printed flat, with the filament changed at a few chosen layers — usually dark at the bottom, light at the top. Thin plastic lets the colours below show through, so the colour at each point depends on how tall the print is there. Shaping the heights to the photo "paints" it with only a pause and a spool swap at each change, on any single-nozzle printer.
It does the same core job in the browser for free: you pick the filaments you own, it chooses the order and the swap layers, shapes the relief and gives you a 3MF with the colour changes and a swap list. HueForge is a paid desktop app with a large community filament library, manual height painting and more fine control; if you already use it, keep it. If you want to try the technique, start here.
TD (transmission distance) is how thick a filament has to be before it stops nearly all light: black is about 0.5 mm, white about 3 mm, yellow 4 mm or more. The tool starts from typical values per colour; brands differ a lot, so if a colour comes out too strong or too weak, enter the TD from the HueForge filament library, from a TD meter, or from a test print.
The ones you actually have. Tick 6–12 and let the solver choose 3–6 of them, or set the number of colours yourself. The darkest one you tick becomes the base (black gives the most contrast); white at the top gives the widest range; a skin tone, a blue, a red and a yellow cover most portraits and landscapes.
Use exactly the layer height and first-layer height shown (0.08 mm and 0.16 mm by default) — the swaps are counted in those layers. 100 % infill, no ironing, flat on the bed. PrusaSlicer, Bambu Studio and OrcaSlicer read the colour changes from the 3MF; in other slicers add a filament change (M600 or a pause) at each z from swaps.txt.
Each point of the print sits on one ladder from the bottom colour to the top colour, through the ones between, so a photo whose colours follow such a ladder works best: portraits, sunsets, landscapes, pets. Two very different colours at the same brightness (a red and a green of equal lightness) cannot both be right; the COMPARE view shows what you will get before you print.
With light from behind the same idea gives tinted lithophanes (any printer), and with a multi-colour printer a full-colour CMY lithophane is possible — both are in the lithophane studio under "Colour lithophane".