HOW MANY SHAFTS DOES IT TAKE TO WEAVE A FACE
A loom lifts threads in groups. Every warp thread is tied to one shaft, and a shaft rises or stays down as a whole. A floor loom in a spare room has four or eight shafts; a computer dobby has sixteen, twenty-four, forty; a jacquard lifts every thread on its own. The number of shafts is the number of different things the warp can do. So: how many does it take to weave a face?
The face is Julia Jackson, photographed by her aunt Julia Margaret Cameron in 1867 (the print is in the Met and public domain; she was later Virginia Woolf's mother). The cloth is taqueté, a weft-faced compound tabby, the structure of Sasanian and Byzantine pictorial silks: a binding warp on two shafts, a pattern warp on the rest, and two wefts, one white and one black, thrown in turn. Wherever the pattern warp is lifted the white weft goes underneath and the black shows; where it is down the white shows. The other weft is always there, on the back, so the reverse of the cloth is the negative. No weft ever floats more than three ends and no end more than two picks, at any shaft count, so every one of these drafts is sound cloth.
With N shafts there are N−2 pattern blocks. The 240 pattern ends are grouped into blocks by clustering the photograph's columns (k-means on the grey profile of each column), each block gets a lift sequence dithered down its own length, and the result is the best two-weft picture that loom can make. At three shafts the loom can only weave rows. At four it weaves the light on her face and nothing else. At sixteen there is a person. OpenCV's face detector first agrees at 32 shafts, and stays about as sure as it is of the jacquard.
THE FILM
The loom shot is the 32-shaft cloth, rendered yarn by yarn in Blender (hair curves; 1,200 wefts, 480 ends, 200,000 fibres), then every shaft count as the finished cloth.
EVERY CLOTH
THE DRAFTS
Each row is a real draft: a WIF file (loads in Fiberworks, WeavePoint, PixeLoom, and the TC2 software) and a weaver's sheet as PDF with the threading in strips and the liftplan. The detector column is OpenCV's YuNet face detector run on the two-weft cloth, blurred as you would see it across a room; blank means it found nothing above 0.5.
| shafts | blocks | loom | error vs photo | ssim | face detector | files |
|---|
HONEST NOTES
The cloth in the viewer and in the film is a model, not a photograph of woven cloth: round yarns, a depth rule for face weft, back weft and binding point, some fly-away fibre. Real taqueté packs its wefts flatter than this and its binding specks are smaller. The block assignment is plain k-means; a weaver would hand-tune it, and a smarter optimiser might buy a few shafts. The dithering runs down each block independently, so the dark ground carries stray white picks wherever a block also passes through hair or light; that is the price of the constraint and I left it in. Nothing here has been woven on a real loom yet. If you weave one, tell me.