Nodes · Blacksmith
BS_Damage
Blacksmithv4coreNeeds full inputForge
Overview
EXPERIMENTAL — still being built. Procedural damage on a surface — cuts, tears, frays, worn holes, squib hits, metal gashes — where the roto says. Wire the plate into in and a roto into cut: its shape IS the damage (the node never invents a location; it gives the artist's shape a material edge). matte bounds the surface so fray and threads stay on the garment; under is what shows through. The output is the plate with the damage on it; the views (damage.hole/fray/threads/lip/debris/reveal) ride along as layers. Twist torn and age for severity, pick a material preset from the strip, then tune the fine knobs.
How to
How-to
- Wire the plate into
inand draw a roto for the damage intocut: its shape IS the hole. - Wire a matte of the surface (the garment, the panel) into
matteso fray and threads stay on it, and what shows through intounder. - Pick a material preset (Linen tear, Canvas slash, Bullet hole – metal, Burnt…), then twist
tornandagefor severity. - For a squib, set
animatewithhit_frameandopen_frames;outputshows the damage views on their own.
Inputs
| Input | What it takes |
|---|---|
| in | the image this node works on |
| cut | — |
| matte | the alpha that drives this node |
| under | — |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| profile | Choice | tear | The material edge applied to the roto's boundary. slash: a tight edge sharpened toward the spine's ends (the dress slit). tear: a jagged edge, wider on the far side of direction. hole: an isotropic rough hole. worn: the hole plus moth-eaten satellite holes eroded around it (the tattered cloth). impact: radial creases and a star-tear from the centre (a bullet hit). gash: metal — the boundary bends and the rim flares toward direction (the exit side of a blade). slashtearholewornimpactgash |
| direction | Float | 0.0 | Which way the damage travels, in degrees (0 = image right, 90 = image down). The tear's wide side, the gash's exit lip, the propagating tear's sweep direction under animate = tear. |
| torn | Float | 0.5 | How badly: 0 = a clean fresh cut, 0.5 = worked-at edges with fray, 1 = shredded — wide fray, long and many threads, satellite holes, a rougher edge. A severity macro over the fine knobs: it scales their effect and never moves the roto. |
| age | Float | 0.0 | Fresh (0) to old (1): old damage frays wider, threads sag and mat, and their colour dulls toward the plate's dirt. |
| raggedness | Float | 0.5 | How rough the edge is: 0 keeps the roto's own edge, 1 breaks it into fBm jags of scale size. torn scales it. |
| scale | Float | 24.0 | The size in pixels of the largest edge feature — jags, satellite holes, the burn halo, the reveal's shadow depth. |
| seed | Int | 0 | The variation seed: every thread, jag and fibre bit is a pure function of the seed and the frame, so the same seed is the same damage on every machine. |
| fray_width | Float | 6.0 | Fabric: the band in pixels outside the hole where the edge dissolves into fibre fuzz. 0 for metal and paper. torn and age widen it. |
| thread_count | Float | 40.0 | How many loose threads hang across and off the opening, at torn = 0.5 (fewer when fresh, many when shredded). 0 for no threads. |
| thread_length | Float | 24.0 | How long the threads grow, in pixels, before the loose end. |
| thread_width | Float | 1.0 | The threads' thickness in pixels; they taper toward the loose end. |
| curl | Float | 0.5 | How much the threads wander: 0 straight along the weave, 1 curling and kinking. |
| weave_auto | Bool | true | On: the weave direction is read from the plate's own texture (the structure tensor around the cut) — stripes and visible weave set it. Off: weave_angle sets it. Either way threads run across the gap: a weave parallel to the slit is turned to cross it, because the threads that show are the ones that were cut. |
| weave_angle | Float | 0.0 | The weave direction in degrees when weave_auto is off, or the fallback when the plate has no readable texture. |
| gravity | Float | 90.0 | Which way loose threads and fibre bits droop and fall, in degrees (90 = image down). Change it for a tilted camera. |
| droop | Float | 0.5 | How strongly threads sag toward gravity: 0 hangs straight along the weave, 1 drapes. |
| lip_lift | Float | 0.0 | Metal and leather: the rim bends outward this many pixels, catching the key from up-left on the exit side and darkening on the other. 0 for fabric. |
| burn | Float | 0.0 | A charred halo on the surface outside the edge, burn × scale wide, fBm-broken. For burnt holes and bullet scorches. |
| reveal | Choice | fill | What shows through the hole. fill: fill_color with the interior shading. under: the under input (a lining, skin, an underlayer plate), offset by parallax; falls back to fill when nothing is wired. transparent: the hole is alpha 0, for Merge over anything. fillundertransparent |
| fill_color | Color | [0.05, 0.04, 0.04, 1.0] | The interior colour under reveal = fill — a dark cavity by default. |
| interior | Float | 0.6 | How dark the cavity shading is: darkest against the lips (the lip's shadow onto what is beneath), half-shaded at depth. Applies to fill and under alike. |
| parallax | Float2 | [0.0, 0.0] | Pixel offset applied to the under input as seen through the hole — a slit shows the layer beneath slightly displaced as it opens. |
| animate | Choice | none | none: the cut is fully open on every frame (an animated roto animates it). squib: the hole opens from the cut's centre outward over open_frames starting at hit_frame, with a puff of fibre bits. tear: the cut propagates along direction from its rear end, start to start + duration. nonesquibtear |
| hit_frame | Float | 1.0 | squib: the frame the impact lands. Nothing is open before it. |
| open_frames | Float | 3.0 | squib: how many frames the hole takes to open fully — 2–4 is the practical-element beat. |
| start | Float | 1.0 | tear: the frame the tear begins at the cut's rear end (the end opposite direction). |
| duration | Float | 24.0 | tear: frames from the first opening to the cut fully open at its far end. |
| puff | Float | 0.5 | squib: how much fabric fibre bursts out on impact and falls, in the plate's colour, alive for eight frames. 0 for none. |
| output | Choice | result | What the rgba shows. result: the damaged plate. hole / fray / threads / reveal: that view alone, for checking — the same views are always there as damage.* layers whatever this says. resultholefraythreadsreveal |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |