Three.js · parametric geometry · manufacturing output
Most product configurators load a finished model and swap its colours. This one has no model: every vertex of the bag is derived from the five numbers on the right, in millimetres. The same numbers produce the cutting layout below it — real pieces, with seam allowances offset at a true distance, the way a pattern is actually made.
The bag is rebuilt from scratch on every parameter change — five panels, a hem band, stitch lines and two swept handle tubes, all positioned from millimetre values. No .glb, no loader, nothing authored in a 3D tool.
The cutting layout runs the same geometry through a polygon offset to add the seam allowance. It isn't decorative: the readout measures every point of every cutting line back to its sewing line, and reports the worst deviation. It reads 0.00 mm because the offset is built edge-normal-first rather than by pushing vertices along their bisectors — the difference, and why it matters, is in polygon-offset.
Three.js is vendored into this repository rather than pulled from a CDN, so the page has no external runtime dependency and renders the same in five years as it does today.