Clothing: fabric, folds, frills, ribbons, patterns
📐 designed · a skeleton only: ask for this method and it reports “not decided yet” · in the worked example the dress and the ribbons both ran the baseline, and a person judged it a failure · the method name and where a person writes it: appendix G
How an artist paints it
The material decides how hard the edges are first: cotton and gauze have soft-edged shadows and no highlight; satin and leather have hard-edged shadows and one bright band. Then:
- Fabric: large areas of local colour with one band of shadow (pressed by the body: the armpit, the waist, the inside of a skirt), whose shape follows the body.
- Folds: hard-edged grey shadows one after another along the direction of the tension, each tapered at one end where the tension starts, and each optionally with a thin bright line beside it. In the lineart a fold is a few lines, and the shadow lies against one side of them.
- Frills: layer upon layer, with a shadow under each one cast by the layer above, hard-edged and wavy along its border, bright at the crests and dark in the troughs.
- Ribbons: length by length, with a shadow and a highlight at each turn, the darkest point at the knot, and one band of shadow on each loop of a bow.
- Patterns (checks, stripes, prints): hard-edged blocks of colour laid above the local colour and below the shadow, deforming with the fabric’s surface; the shadow sits over the pattern and never the other way round.
What it looks like in the source
Folds are hard-edged grey shadows one after another, and frills are layers each with a shadow beneath – all of them shapes with clear outlines. The baseline copies a fold as a soft grey band and leans on the lineart for the structure; the dress is usually the group furthest from the source on the “at the hard edges” ruler; and a check pattern is hard-edged, which a soft brush cannot copy.
Our method 📐
No code. Designed but not built: the skin’s one-band shadow method ought to apply to folds directly (one row of method="shadow_tier" on a group would try it; what stopped it is that the material and the frills have to be settled first), and a ribbon’s checks would be cut by colour into one vector Shape per square and filled. Choosing method="cloth" passes the parts table and reports “the method for clothing is not decided yet” when painting starts.
Layers (as envisaged)
Dress/: Shape -> _Flat -> _Pattern (the pattern, as hard-edged Shapes) -> _Shadow/ (the large shadows) -> _Fold (the folds, one hard-edged stroke each) -> _Frill (the shadow under each frill layer) -> _Line.
How a person writes it in
"Dress": dict(method="cloth"), # not decided yet; painting reports it. Trying method="shadow_tier" first is fine too
"Ribbon": dict(method="cloth"),
Where the material is written – a new field in parts.py, or a knob on the method itself – is one of the things to be decided.
Criteria
Of the per-group rulers, at the hard edges (the output’s gradient at the positions of the source’s top 5% of gradient) matters most for fabric; the number of frill layers is counted by a person; and the pattern’s edges are looked at with that layer rendered alone.
Where it breaks
- Copying a fold with a soft brush: a grey band, with the structure resting entirely on the lines.
- One band for the whole dress: a fold’s shadow and a shadow pressed by the body differ in luminance.
- A pattern taken for shadow: Otsu cuts the dark squares of a check into the shadow band.
What has to be decided
- Where the material comes from (written by a person), and which brush a soft-edged material uses.
- Whether a fold’s shadow is banded (as the skin does it) or one stroke per fold along the lineart’s fold lines.
- Whether frills are treated layer by layer or as a whole, and how the layers are cut (does segmentation give each one).
- Whether a pattern is cut into blocks of colour and filled, or treated as part of the local colour.
On origin
Ch. 18, “The layered route”: the stroke counts and readings of the Dress and Ribbon groups under the baseline, and the gap on “at the hard edges”.