Lesson 7.2Lesson 7.2 · Form-Finding & Structural Logic
Physics Simulation with Kangaroo
A live solver that relaxes geometry to equilibrium
Describe the forces, not the shape - then press play and watch the geometry relax into the form the forces want.
The last lesson found an arch by hanging a real chain. Kangaroo, Daniel Piker's live physics solver for Grasshopper, is the digital version of that hanging model - and far more general.
Instead of drawing geometry, you attach goals to it: make these edges behave like springs, pin these points as anchors, pull these nodes down with gravity. The solver then nudges everything, step by step, until all the goals are as satisfied as they can be at once. The rest position it reaches is your form-found shape - computed live, updating as you drag a point or turn a slider.
Author behaviour, not vertices. Goals pull, solver relaxes, equilibrium is the form. Then call the engineer.
What Kangaroo actually is
Kangaroo is a physics engine that lives inside a Grasshopper definition. Ordinary Grasshopper computes once, left to right: inputs produce outputs and stop. Kangaroo adds a loop. Its solver component (historically the 'Kangaroo Solver' or the newer Solver/Zombie components) takes a set of goals, applies them to a set of points repeatedly, and keeps iterating - many times a second - until the system settles. That looping, iterative behaviour is what lets it simulate: it is doing tiny time-steps, like a game engine, rather than a single calculation.
The technique underneath is often called dynamic relaxation (or a projection-based solver in newer Kangaroo): treat the geometry as a set of particles, work out the force each goal wants to apply, move the particles a little in response, damp the motion so it does not oscillate forever, and repeat. Energy bleeds out of the system with each step until it reaches a low-energy equilibrium - the state where every goal is pulling but the pulls cancel. That equilibrium state is the found form. It is exactly the hanging chain reaching rest, only now the 'chain' can be a whole mesh with thousands of nodes and many kinds of goal acting at once.
The key mental shift is that you stop authoring geometry and start authoring behaviour. You do not place the final vertices; you state the rules they must obey and let the solver discover where they end up. This is form-finding made interactive: because it runs live inside the parametric graph, you can grab an anchor and drag it, and the whole membrane re-relaxes in front of you.
Grasshopper computes once. Kangaroo loops: apply goals -> move points -> damp -> repeat -> equilibrium.
The vocabulary of goals
Everything in Kangaroo is expressed as goals - small components that each want one thing to be true, and each push the geometry toward it. A few you will use constantly:
Anchor fixes a point in place (or to a target). Anchors are your boundary conditions - the nails the chain hangs from, the points where a membrane clips to the ground. Without anchors the whole thing just falls or drifts. Length / Spring makes an edge want a target rest length with a given stiffness; a network of springs is how you model a cable net, a fabric, or the edges of a mesh. Set the rest length shorter than the actual length and the spring pulls inward - that inward pull is exactly what tensions a membrane. Load applies a constant force such as gravity to points, which is how you hang a shape. UnaryForce, Pressure (a force normal to mesh faces, for inflated / pneumatic forms), Planarize (push a quad's four corners into a plane - vital for buildable glass panels), and OnMesh / OnCurve (keep points stuck to a surface or line) round out the everyday kit.
The craft is in balancing goals and their strengths. Kangaroo lets each goal have a weight; when goals conflict - a spring pulling in while an anchor holds still - the solver finds a compromise weighted by those strengths. Turn up planarization strength and panels flatten but the surface distorts; turn it down and the surface stays true but panels warp. Much of real Kangaroo work is tuning these relative strengths until the compromise is the one you want. There is no single 'correct' number - it is a design dial.
A good habit early on is to build a definition with just two or three goals and really understand how each one behaves before stacking more on top. Add an anchor, watch it hold; add a spring, watch it pull; add a load, watch it hang. Once each goal's effect is intuitive, combining a dozen of them stops feeling like guesswork and starts feeling like conducting - you know which dial to turn to get the effect you want.
Minimal surfaces and tensile membranes
The most beautiful thing Kangaroo does is find minimal surfaces - the shape a soap film takes between boundaries, the surface of least area spanning a given edge. Dip a bent wire in soapy water and the film that forms is a minimal surface; it is in uniform tension everywhere, which is precisely why fabric structures and cable-net roofs are shaped this way. Frei Otto found these forms physically with soap films and stretched stockings for the Munich Olympic roofs; Kangaroo finds them numerically.
To do it you start with a rough mesh spanning your boundary, anchor the boundary points (some high, some low - that height difference is what creates the characteristic double-curved 'saddle' shape), and put a Length or spring goal on every edge with a rest length of zero. A zero-rest-length spring wants to shrink to nothing, so every edge pulls its neighbours as tight as possible; the mesh cannot collapse because the anchors hold the boundary, so it relaxes into the least-area surface that spans them - a minimal surface. That is the whole recipe, and it is remarkably short.
The result is a tensile membrane: a doubly curved surface in pure tension, the natural home of fabric, ETFE and cable nets. Because it is in tension everywhere it needs no bending stiffness, which is why these roofs can be so astonishingly thin and light. And because the whole thing is parametric, moving one anchor higher instantly re-finds a new minimal surface - you are exploring a family of tensile forms, not committing to one. This is the tension-side twin of the last lesson's compression arch: hang-and-relax for cables and fabric, invert-the-hang for masonry and shells.
Zero-rest-length springs on every edge + anchored boundary = a minimal (soap-film) surface, in pure tension.
A working relaxation, step by step - and its limits
A typical Kangaroo definition reads like a sentence. First, build or import a mesh (a Mesh from a surface via Mesh Surface, or a triangulated field). Second, extract its edges and naked (boundary) vertices - Mesh Edges and Naked Vertices are the usual components. Third, wire goals: a Length/Spring goal on the edges, an Anchor goal on the boundary vertices, and a Load goal if you want gravity. Fourth, gather all the goals into the Solver's goal input and give it the starting geometry. Fifth, attach a Bang! or timer / toggle to run it, watch it relax, and reset when you change something upstream. When it stops moving, bake or extract the relaxed mesh - that is your found form, ready to pass downstream for panelling, structure or drawing.
A few practical habits save hours. Keep meshes reasonably coarse while experimenting - relaxation cost grows with node count, and a 20x20 mesh finds the same shape as a 200x200 one far faster; refine only once the form is right. Watch for instability: too-high stiffness or too-large steps make the solver explode or vibrate - lower the strengths or add damping. And remember the solver finds an equilibrium, not necessarily the one you pictured; if it settles somewhere odd, your goals or anchors are telling it something you did not intend.
Finally, the same honest boundary as always. Kangaroo is a form-finding and geometry tool, not a structural analysis tool. Its springs are a physical analogy tuned for shaping, not calibrated material models; it does not report stresses, deflections under code loads, buckling or safety factors, and its 'forces' are relative dials, not kilonewtons. Use it to find the shape the forces prefer - then hand that geometry to a structural engineer, and to analysis tools such as Karamba3D or dedicated FEA, for the real sizing and verification. Kangaroo tells you where the forces want to go; it does not certify that your members can carry them.
Kangaroo Solver
The looping component that iterates goals to equilibrium
The engine; runs dynamic relaxation live. Attach a timer/toggle to start and reset it.
Anchor (goal)
Fixes a point in place or to a target
Your boundary conditions. Without anchors the geometry drifts or falls. Some high, some low, to shape saddles.
Length / Spring (goal)
Makes an edge seek a rest length at a stiffness
Zero rest length on every edge yields a minimal surface. The workhorse of membrane form-finding.
Load (goal)
Applies a constant force such as gravity to points
The digital 'weight' that hangs a chain or shell. Change it and a new funicular shape is found.
Planarize (goal)
Pushes a quad's corners into a common plane
Essential when panels must be flat glass; trades panel flatness against surface fidelity - a tuning dial.
Workshop - find a minimal surface, then hang a shell
Two short Kangaroo definitions cover the whole toolkit. First a soap-film minimal surface (pure tension), then an inverted hanging shell (form-found compression) - the two halves of the previous lesson, made interactive.
Rhino + Grasshopper with the Kangaroo plug-in (free, on food4rhino). No structural-analysis software is used in this conceptual exercise.
Goal: build both a tensile and a compression found-form in Kangaroo Inputs: a boundary curve or four corner points, a coarse mesh, Rhino/Grasshopper + Kangaroo Time: ~50 minutes
- 1Minimal surface: make a flat mesh spanning four corner points (Mesh Surface on a quad), extract its edges with Mesh Edges and its boundary points with Naked Vertices.
- 2Wire a Length goal on all edges with rest length 0 and a modest stiffness, and an Anchor goal on the boundary points. Raise two opposite corners to different heights so a saddle can form.
- 3Feed both goals into the Kangaroo Solver, toggle it on, and watch the mesh relax into a minimal surface. Drag a corner higher and observe the surface re-find its least-area shape.
- 4Hanging shell: reset, remove the zero-rest-length trick, keep the mesh edges as springs at their actual length, anchor only the outer boundary, and add a Load (gravity) goal pulling all points down. Relax it - the mesh hangs into a form-found tension shell.
- 5Mirror the hanging mesh about a horizontal plane to invert it into a compression shell, and bake the result. Write one line noting that this baked shape still needs an engineer to size.
You’ll walk away with
Two baked Rhino meshes - a minimal (tension) surface and an inverted (compression) shell - plus a screenshot of each Kangaroo definition and a one-line note on which goals shaped each and why the results need structural verification.
Three altitudes on the same idea
Read the band that fits you — or all three.
Kangaroo lets you design tensile and shell forms the way they actually behave, so what you present is already close to buildable rather than a shape an engineer must wrestle into equilibrium. Drag an anchor in a client meeting and the canopy re-finds its minimal surface live - a genuinely persuasive way to explore lightweight roofs, cable nets and inflated forms before committing.
For interiors Kangaroo is a form-finder for stretched-fabric ceilings, tensile light features, hanging installations and draped screens. It also does the quietly useful jobs: relaxing a mesh so panels planarize for a faceted feature wall, or letting a suspended element settle into the catenary it will really hang in - so your rendered curve matches the built one.
Kangaroo is the lesson where computational design suddenly feels alive, because you press play and geometry moves. Build the soap-film minimal surface recipe once - anchored boundary, zero-rest-length springs - and you will understand form-finding in a way no diagram teaches. It is also a standout portfolio piece: a live relaxation reads as real technical depth.
“If Kangaroo simulates physics, its results tell me whether my structure is safe.”
Do it yourself
Check your grasp of the solver's logic.
- 1How is a Kangaroo definition different from ordinary left-to-right Grasshopper computation?
- 2What do Anchor, Length/Spring and Load goals each contribute to a form-finding setup?
- 3What is the one-line recipe for a minimal surface, and why does it work?
- 4Why are goal 'strengths' a design dial rather than a fixed correct value?
- 5Name two things Kangaroo does NOT tell you about your structure.
The one line to carry out
Peer-reviewed journals & authoritative standards
- 01Kangaroo Physics (Daniel Piker) — food4rhino, 2026.
- 02Form-finding (overview) — Wikipedia, 2026.
- 03Frei Otto - lightweight tensile structures — Wikipedia, 2026.
- 04Karamba3D - parametric structural engineering — Karamba3D, 2026.
Kangaroo finds smooth found surfaces. To build them we usually resolve that surface into a discrete network of members - and the way that network is patterned is itself a structural decision. Next we look at diagrids and structural patterns.
The author
Amogh N P
Architect, interior designer, and creative polymath. Studio Matrx began in his notebooks — his vision of design made honest, useful, and open to everyone. Its Academy is written and taught in his memory, and free, forever.
More about Amogh →