node weave - blossommerz/locus-hub GitHub Wiki
< Previous: Intersection Points | Next: Crossing Census >
Decide which strand passes over which at every crossing, and draw the shadow that says so.
Category: Combine | Add menu: Combine > Weave
A lattice on its own is flat. Every crossing is just two strands meeting, and nothing in the picture says which one is in front. Weave settles that, one crossing at a time, and hands back the small shapes that make the answer visible: a shadow either side of each crossing, where the strand underneath is interrupted by the strand above it.
Weave does not run on its own. It has a Calculate button on the node, and nothing happens until you press it.
That is deliberate. A weave is expensive to work out, and a node that recomputed on every nudge upstream would spend the whole session crunching. So the result is parked instead: the node keeps handing downstream whatever the last completed solve produced, and a change above it costs nothing until you ask for a new one.
The button tells you where it stands.
- Calculate - nothing has been worked out yet.
- Calculating... - a solve is running.
- Calculated - what you see is current.
- Recalculate - something upstream has changed, so the shadows on screen answer the old question. They stay until you press it.
- Failed - the solve returned an error. The Report output says what.
Two things follow from the result being parked rather than computed. It is not saved in the document, so a file reopened shows Calculate again and an empty Weave until you press it; and Weave needs the desktop app, since the solver does not exist in the browser.
- Calculate (trigger): the button described above.
- Geometry (any): the lattice. It must be broken at its crossings first, which is what Split Curves is for. A crossing, to Weave, is four curve ends meeting in one place; a strand drawn as one long run straight through its crossings has no such place in it and weaves as nothing.
- Boundary (any): an optional closed contour. Shadows landing outside it are dropped.
- Tol (number, 0.01): how close two ends have to be to count as the same meeting point. Do not guess this one. Stability Sweep exists to find it for you.
- Inset (1.0): how wide a band the strand on top claims across itself. This is what opens the gap in the strand beneath.
- Shadow Width (0.8): how far the shadow runs along the strand underneath.
- Overshoot TL, TR, BL, BR (0.5 each): how far each of the shadow's four corners reaches past the crossing. At 0 they stop dead at the inset and the shadow reads as a stubby bar; pushed out a little, the strand beneath looks properly tucked under.
- Tangent Tol (25 degrees): how tight a tangency has to be to be read as one. Explained below.
- Edge Cleanup (0): a margin inside the Boundary. A shadow whose middle lands within it is dropped too, which is what clears the half-formed shadows along a border.
- Flip (on/off): swap over and under everywhere at once.
Every number above is an editable field on the node, so you can type a value straight into it or wire one in; the figure in brackets is its default.
- Shadows (region): the closed shapes, ready to subtract from the strands or to draw in their own style.
- Crossings (point): one marker per crossing, colored. Red marks a crossing where the over and under assignments contradict each other. The other two colors simply say which way the strand on top is running, so a well-solved weave reads as an alternating field of two colors.
- Report (string): the counts, described below.
The rule is alternation. Follow one strand from end to end and it goes over, under, over, under at the crossings it meets. Every strand is settled that way, and because the strands share crossings, each one constrains its neighbors.
A lattice that cannot satisfy all of those constraints at once has a genuine contradiction in it, and Weave says so rather than quietly picking a side: the crossing comes back red in Crossings and counted as a defect in the Report.
Arcs stay arcs. Nothing is flattened into little straight pieces on the way in or out, so a shadow hugging a curved strand is itself curved, and stays curved out through SVG and DXF.
Most crossings are four ends meeting. Some are eight: two strands that touch tangentially at the same place as they cross, which is what happens where a pattern's strands run together before parting again.
Weave reads an eight-end meeting as a crossing when its eight ends fall into four tight pairs, tight meaning within Tangent Tol of each other. Under that reading a tangency pair behaves as one arm and the node weaves like any other. Set the tolerance too tight and those crossings are rejected and left unwoven; too loose and meetings that are not crossings get woven. The Report counts the rejections both ways, which is how you tell which way to move it.
The same tolerance protects the ordinary case in reverse: a four-end meeting whose two arms are tangent is two strands grazing each other, not crossing, and is left alone.
The Report is not decoration. It is how you tell a finished weave from one that merely drew something.
- crossings - how many were found, split into plain four-end ones and eight-end ones read as four.
- rejected - the meetings Weave declined to weave, with the tolerance it judged them against.
- shadows - how many were drawn, and how. Curve-true ones follow the strands. A parallelogram fallback is a straight-sided stand-in used where the true shape could not be built, and a run of them usually means Tol is wrong, not that the pattern is bad.
- defects - the contradictions. Zero is what you want.
- edges - the strand count, with duplicate and degenerate pieces accounted for. A lattice you thought was clean reporting collapsed duplicates is worth knowing about.
- boundary - whether one was connected, and how many shadows it dropped.
- Draw the lattice.
- Run it through Split Curves, so the crossings exist as meetings of ends.
- Find Tol with Stability Sweep.
- Check the crossings with Crossing Census if the pattern is unusual.
- Weave, and read the Report.
Steps 3 and 4 are skippable on a simple lattice and are the first things to come back to when a weave comes out wrong.
< Previous: Intersection Points | Next: Crossing Census >
- Split Curves: the pass in front of Weave, and the reason a lattice weaves at all.
- Crossing Census: what Weave found, listed crossing by crossing.
- Stability Sweep: where Tol comes from.
- Reverse Direction: direction is what tells one side of a strand from the other, which is what a weave and an offset both read.
