Advanced mode
Differential growth
A line that gets longer while the space it lives in does not. It has nowhere to go but into folds — which is exactly how kale, coral, brain tissue and the frill of a nudibranch get their shape.
The idea
Start with a circle of nodes. Every step, each node is pulled toward its neighbours along the line, pushed away from any node that comes too close regardless of where it sits on the line, and smoothed toward the midpoint of its neighbours. Then new nodes are inserted wherever the line has stretched.
The line therefore grows in length but cannot grow in area. The repulsion prevents it from crossing itself. What is left is folding, and the folds subdivide into smaller folds, and you get a shape that is obviously alive and was not designed by anybody.
Four kinds of growth
- Planar line
- A closed line constrained to a plane. The classic result — a ruffled, brain-like curve. Start here; it is the fastest to compute and the easiest to read.
- Line on surface
- The line grows across the surface of a target mesh, projected back onto it every step. Produces the veins-on-a-leaf and ridges-on-a-shell look, following the form it lives on.
- Free line
- Unconstrained in three dimensions. Produces tangled, coiling, intestinal results. The least controllable and occasionally the most interesting.
- Mesh
- The same forces applied to the vertices of a mesh rather than a line. Grows a whole surface outward into a folded, coral-like mass. Expensive, and the closest thing here to a sculpt you did not do.
The forces
- Attraction0 – 1
- Pull toward neighbours along the line, holding it together. Note that this has a rest length — nodes are pulled toward a spacing, not toward each other. A zero-rest spring would simply collapse the whole line into a point, which is what produces a scribble rather than a form.
- Repulsion0 – 2
- Push away from any node within the repulsion radius, whether or not it is a neighbour on the line. This is what stops the curve crossing itself, and it is what forces the folding.
- Repulsion radius
- How far that push reaches. This is the single most important control in the module: it sets the scale of the folds. Large radius, few broad folds. Small radius, dense fine ruffling.
- Alignment0 – 1
- Smoothing toward the midpoint of each node's neighbours. Keeps the line from developing kinks. Too much and the folds smooth themselves out of existence.
- Jitter
- Random motion each step. A perfectly symmetric circle under perfectly symmetric forces stays a circle forever; a little jitter breaks that and lets growth start. Small values only.
Growth and resampling
- Split length
- A segment longer than this gains a node at its midpoint. Together with the repulsion radius this sets the resolution of the curve.
- Collapse length
- A segment shorter than this loses a node. Prevents the node count exploding in tight folds where repulsion has pushed everything together.
- Growth ratefraction per step
- Nodes added per step as a fraction of the current count. This is the control that makes it grow. Without it, growth depends entirely on repulsion stretching a segment past the split length — which it can only manage by moving nodes far enough to tangle the curve. Two percent per step is a sensible start.
- Max nodes
- Hard ceiling, so a runaway cannot hang Blender. The run stops and reports when it hits this.
- Mask
- A vertex group restricting which nodes may split. This is how you art-direct growth: paint where you want the ruffling and it will only happen there. Any field written to a vertex group works.
Step size, and why results tear
The integration is plain explicit Euler, which means it is stable only while each node moves a small fraction of the distance to its neighbours. Step size caps how far any node may travel in a single step.
If the curve tears itself apart
Rebuild every
Neighbour queries use a spatial hash, and rebuilding it every step is most of the cost. Rebuild every steps between rebuilds — five by default. Higher is faster and slightly less accurate, since repulsion is being computed against slightly stale positions. Above about ten this starts to show as nodes passing through each other.
Running it
- Step
- One iteration. Use it to watch what a parameter change actually does, which is far more informative than reading about it.
- Run
- Modal, with live viewport update, a step counter, and
Escto cancel. Cancelling restores the pre-run state rather than leaving you halfway. - Bake to frames
- Writes one shape key per frame so the growth plays back as animation. Set the start frame and how many growth iterations advance per baked frame. This is the only way to export the motion, since a solver's state cannot be reconstructed from a property value.
Starting points
- Tight ruffle
- Repulsion radius small relative to seed radius, alignment around 0.6, growth rate 0.03, several hundred steps. Dense kale-like frilling.
- Broad folds
- Repulsion radius large, alignment high, growth rate low, fewer steps. Reads as intestine or brain rather than lettuce.
- Veins on a shell
- Line on surface, with a Seashell or Blob as the target and a curvature field as the mask. Growth concentrates where the form bends.
- Coral mass
- Mesh mode on a low-resolution Blob, high repulsion, low step size, and patience. This is the expensive one and the one worth leaving running.
What to do with the result
- A grown line is a curve. Give it a bevel and a taper in Blender's own curve settings and it becomes a solid ribbon or tube.
- Convert to mesh and run fields on it — a geodesic field along a grown line follows the folds, which no axis-aligned gradient can do.
- Use the grown mesh as a base for tessellation. Components on a folded surface inherit the folding.
- Feed it into contour slicing. A differentially grown form sliced into plates is a very good physical object.