Give the stroke pattern one mode and design.yaml tuning

The twelve experimental modes collapse to camera_compensated_width, whose ten
knobs now come from a `stroke_pattern` block, and the PNG-only binary-preview
command goes with them as a strict subset of stroke-texture.

Verified: output is byte-identical at the defaults against the previous code, a
knob change is visible in the artifacts, the suite is green and the doc gate is
clean.
This commit is contained in:
ykcheungab
2026-10-04 09:40:17 +08:00
parent 5bd7dd7a01
commit 30a903a299
9 changed files with 699 additions and 421 deletions
+20
View File
@@ -88,6 +88,26 @@ texture_patch_views:
print:
base_fill: owned # white ground, already split by the seam
# Random Stroke Pattern (`orisys-design stroke-texture`).
# One mode: a capsule of `width` swept `length`, rotated per cell, sized from the camera
# cell's print-page footprint so a cell the projection stretches gets a proportionally
# larger mark. `--seed` / `--min-cell-pixels` / `--camera-width-fraction` override per run.
# Field reference: the inline comments below. These defaults are an image-space experiment,
# not a print master: `width_min_mm: 0.11` is below the demonstrated 0.2 mm dot (see
# docs/probe-findings.md). The resolved values are written to _stroke_pattern_params.json and
# recorded in the stroke-texture manifest, which is what makes a run reproducible.
stroke_pattern:
seed: 7 # per-cell offset and angle; reproducible
min_cell_pixels: 20 # cells smaller than this are skipped
jitter_fraction: 0.66 # mark offset range inside its cell; 0 pins to the centre
angle_span_deg: 180.0 # rotation range; 0 makes every stroke parallel
width_fraction: 0.50 # width = clamp(cell footprint x this, width_min_mm, width_max_mm)
width_min_mm: 0.11
width_max_mm: 0.28
length_ratio: 2.4 # length = ratio x width
coverage_cap: 0.45 # skip a mark that would exceed this local fill
neighbourhood_mm: 0.5 # radius of the local-fill neighbourhood
# Advisory only: reports a verdict, never blocks generation or changes exit codes.
# Millimetres are measured on the vector page declared above.
printability: