Zingerpaint

Light
comes
forward

A 3D-printed portrait held in a hand: a girl in a mirrored visor, drawn in fine vertical white lines on black

Zingerpaint turns a photograph into a two-colour 3D print. Thin white lines over black: where the picture is bright the white stacks thicker, so the light parts stand forward and the dark parts recede.

Make one
Make one

Your photograph

It all runs in this page: your photo never leaves your computer. You bring the slicer; Zingerpaint writes the white.

  1. 1Choose a photo

    No photo handy?

    Width mm
    Lines
  2. 2Slice the blank

    • Open it in OrcaSlicer. It is one object in two parts: the black base on filament 1, the white on filament 2. Load black and white PLA to match.
    • The blank carries its own 0.04 mm layer height. Keep the first layer at 0.2 mm.
    • If Orca refuses the 0.04 mm layers, lower the printer profile’s minimum layer height (min_layer_height) to 0.04.
    • Slice it and export either plain G-code (.gcode) or the sliced plate (.gcode.3mf). You get the same kind back, so a .gcode.3mf can go straight to a Bambu printer.
  3. 3Bring the G-code back

Your print appears here, line by line.

Every 0.47 mm line of white the printer will lay, toned by the measured curve. Point at it to look closer.

What it does

Continuous tone

Not ten steps. Each 0.04 mm layer of white keeps or skips its lines by the picture’s tone, so the greys run smoothly from black to pale.

Light comes forward

The brightest parts are the thickest. Lit from the front, the relief catches light exactly where the picture is light — no backlight needed.

Your choice of lines

Horizontal, vertical, crosshatched, diagonal, or flowing with the image. The lines are the drawing; you pick the hand.

Measured, not guessed

Tone is calibrated from a printed test strip read on a flatbed scanner, then every photo is mapped through that measured curve.

Ironed face

A last pass of the hot nozzle rides the surface at each spot’s own height, laying down nothing, and smooths it.

Ordinary printer

Works on top of a normal slicer’s output. Tested on a Bambu Lab A1 with the AMS lite, a 0.4 mm nozzle and two spools.

Choose the lines

The same photograph, four ways. The direction of the lines changes what the picture feels like: vertical lines make her look like she is materializing.

Four previews of the same portrait in horizontal, vertical, crosshatched and diagonal lines, with close-ups
Horizontal, vertical, cross, diagonal. Top: from a step back. Bottom: at real size. Previews come straight from the print file, before anything is printed.
Measured, not guessed

At 0.04 mm the nozzle lays the same width of line whatever you ask for, so making lines wider can’t make a grey. Zingerpaint changes how many lines there are instead. The calibration strip shows the difference: one continuous fade.

Two scanned calibration strips: one stepped, one a smooth fade, with their lightness curves
Calibration strips, scanned. Wider lines (top) print as steps; more or fewer lines (middle) print as a fade. The white curve is the one Zingerpaint prints with.
Printed with it
How it works
  1. An ordinary slicer prepares the black base and a placeholder where the white will go.
  2. Zingerpaint removes the placeholder and writes its own white lines, layer by layer.
  3. Each spot’s tone becomes a number of layers through the measured curve.
  4. Each layer keeps the lines whose threshold that tone clears.
  5. A final dry pass irons the face.
Printer
Bambu Lab A1 + AMS lite (tested)
Nozzle
0.4 mm
White layers
up to 10 × 0.04 mm
Filament
black + white PLA
Time
about 2 hours for a 10 × 18 cm portrait
Early version — first printed from this page Sep 30, 2026