First find out what actually moves — with no manual tagging, across every model the library ships. Then attach anything to that motion, made of a real, cited material: aluminum foil, spring steel, copper wire, a pine dowel, a rubber band, a slinky.
Every AnimatedKit gait clip rebuilds its whole scene from the same code path at
every phase, and every ParametricKit model rebuilds from the same code path at
every slider value — so ShapeScene.Parts[i] at one sample and at another sample
is the same logical part, just moved. Sample a handful of points along that axis, track each
part's world-space bounding-box centre, and any part whose position spreads out past a small
threshold is a candidate attachment point — a hook — found automatically, with zero
changes to the recipe that built it.
The same detector works whether the axis is a gait phase (a walk cycle) or a full slider sweep (min→max on a bestiary monster's every knob at once) — which is how a technique built for 99 locomotion clips ended up covering all 1,719 sources the library has: every daemon, dragon, fiend, undead, aberration, outsider, fey and elemental in the bestiary that never got a hand-authored animation still has parts that move when its sliders move.

AnimatedKit gait clips + 1,620 sweepable
ParametricKit models, sorted by family. Static frame shown here for weight; the
full animated version plays every source's own sweep
(~11 MB).
A detected hook — or any point on any model — can now be a mount for a real, weighted,
bendable attachment instead of a rigid transform. MaterialPreset combines a
cited density and Young's modulus (this repo's own Chemistry.Materials and
building-materials catalogs) with an everyday-object cross-section to get a real flexural
rigidity E·I — the actual reason aluminum foil is floppy despite aluminum being a
structurally stiff metal: same E as a solid rod, but I ∝ thickness³ collapses at foil gauge.
FlexibleAttachment then clamps a chain of real
PhysicsAndAstronomy.Physics.SoftBody (XPBD) particles to a live parent position
every step, each one pulled toward its "straight rod" position by a spring sized from that
E·I, weighted by real mass, and — the "memory" dial — creeping its own rest target toward
wherever gravity or a knock left it, at a rate set by the material's plasticity.


| Material | Source | Gauge | E·I (N·m²) | Plasticity |
|---|---|---|---|---|
| Pine Dowel | BuildingMaterialsCatalog['Pine timber'] | 5 mm rod | 2.8×10⁻¹ | 0.05 |
| Spring Steel Wire | MaterialCatalog.SteelA36 | 1 mm rod | 9.8×10⁻³ | 0.02 |
| Copper Wire | MaterialCatalog.CopperC11000 | 1.6 mm rod | 3.8×10⁻² | 0.55 |
| Pipe Cleaner | MaterialCatalog.SteelA36 (bare core) | 0.5 mm rod | 6.1×10⁻⁴ | 0.65 |
| Cotton String | uncited (flagged in source) | 0.8 mm rod | 1.2×10⁻⁴ | 0.00 |
| Rubber Band | uncited (flagged in source) | 1 mm strip | 4.9×10⁻¹⁰ | 0.00 |
| Aluminum Foil | MaterialCatalog.Aluminum6061T6 | 16 μm strip | 7.3×10⁻¹³ | 0.90 |
Shapes.Coil sweeps a wire along a sampled helix — a tight spring, a wide slinky,
a long coil, or a chunky bedspring, all from the same four sliders. SpringPreset
derives a shear modulus G = E/(2(1+ν)) from a cited material's Young's modulus and
Poisson's ratio (no repo catalog has shear modulus directly — this is the standard isotropic-
elasticity relation, not an invented number), then the classic helical-spring formula
k = G·d⁴/(8·D³·N) for the actual spring constant. A mass hung on one of these springs
settles at the textbook Hooke's-law equilibrium — proven, not assumed.
Mounting an existing catalog model on a material needed no new code at all —
FlexibleAttachment's tip position was already public, so any of the 1,719 sources
swept above can hang, sway, or spring from a chosen material the same way a synthetic rod does.

Shapes.Coil(coilRadius, wireRadius, height, turns).
SpringPreset materials, one hanging mass each — the coil mesh
itself re-generates every frame at the live simulated length, so it visibly stretches and
compresses in sync with the physics.
ObjectKit.Build("Apple") hanging from a rubber-band mount
(left, sags to near-vertical under its own weight) versus a pine-dowel mount (right, stays
extended) — the generalization proof: any model, any material.
leg.FL hook drives two FlexibleAttachment chains (copper wire vs.
cotton string) through their base every physics step — the attached material whips around with
the gait purely from simulation, no hand-authored animation. The exact "attach pieces onto each
moving segment" ask, with materials.| Spring | Material | Wire | Coil Ø | Coils | k (N/m) |
|---|---|---|---|---|---|
| Soft Steel Coil | SteelA36 | 1.5 mm | 30 mm | 40 | ~465 |
| Stiff Steel Spring | SteelA36 | 4 mm | 20 mm | 10 | ~31,747 |
| Copper Spring | CopperC11000 | 4 mm | 20 mm | 10 | ~17,462 |
Everything above composes into an editable system: a Craft is a KSP-style part
tree — pick a core, slap on an evenly-spaced ring or freehand slots, link parts onto parts to
any depth, re-parent, remove subtrees — with every edit validated the moment it's made
(duplicate ids, dangling parents, and re-parent cycles all throw). Parts carry
time-driven actions: spin, oscillate, pulse, and Detach — real staging,
where a booster and its whole subtree freeze their pose at the staging instant and fall
ballistically (y = h − gt²/2, verified against hand-derived numbers in the KATs). A craft
saves to a ~2 KB plain-text .craft file you can read, diff, and hand-edit —
and loading goes through the same validated editing API, so a corrupt file fails loud at load,
never as a silently-wrong render.

AddRing) → nose
cones linked onto the boosters → dish/antenna/legs freehand → the edit pass (one
booster removed recursively, dish recolored, antenna re-slotted) → actions armed.

.craft file anchored to the
walking horse's tagged leg hook — the entire part tree rides the gait with its actions still
running, plus a copper-wire physics streamer mounted on the craft's own mast tip.
Animated hook → craft tree → actions → material physics.
Extend outward on a smoothstep deploy while the
radar spins, then two pods sepratron-kick off sideways with real initial velocities — full
projectile motion, hand-verified in the KATs.
flex:cottonstring,6,0.5 node — material
physics living inside the same .craft file, run by CraftRuntime.
MaterialFracture accumulator latches and the chain
lets go) and 90 MPa through the spring-steel one (under the endurance fraction of
its cited 250 MPa yield — no fatigue dose at all, it springs back). Same jolt, different
materials, different fates.