Labs Growth SOP: Organic Growth Systems

Bounds objects, attraction points and thigmotropism

Introduction

The Labs Growth node (from SideFX Labs) simulates organic growth systems - mycelium, coral, vascular networks, crystals, ivy - through three complementary mechanisms: a confinement volume (the Bounds Object), attraction points that guide the direction of growth, and thigmotropism, which handles physical interaction with surfaces. Combining these three parameters reproduces very convincing biological behaviors.

Input Architecture

The Labs Growth SOP has three distinct inputs. Understanding their role is essential before building the network.

InputContentRole
Input 1Source geometryGrowth starting points (seeds)
Input 2Bounds ObjectConfinement volume - growth stays inside it
Input 3Attraction PointsScattered points that attract and orient growth

Growth Bounds Object

The Bounds Object is a closed volume that acts as a container for the simulation. Growth cannot escape it. Think of it as an aquarium in which coral is grown: the aquarium's geometry defines the physical limits of colonization.

In practice, any closed mesh works: a sphere, a skull, a hollowed-out tree trunk, an organ, a rock. The more complex and winding the geometry, the more interesting the growth behaviors as it navigates inside it.

Tip: enable Convert to VDB in the Bounds Object parameters if your mesh isn't perfectly closed. The VDB volume is more robust for collision detection than raycasting against polygons.

Attraction Points

Attraction Points are points scattered in or on the simulation space that pull growth toward them. The more points in an area, the denser the growth there. Every growing branch constantly searches for attractors within its radius of influence and orients toward the nearest one.

The core idea: Attraction Points define where growth happens, tropism defines the overall direction, and thigmotropism handles the physical relationship to surfaces.

Varying Density by Texture

Density can be driven from a texture instead of being uniform - scatter points, then use an Attribute from Map node reading a noise or painted black-and-white map into a density attribute. Dense zones produce strong attraction, empty zones let growth develop more freely.

Key Parameters

ParameterValueEffect
Attraction Radius0.5 - 3.0Radius of influence of each attractor point
Kill Distance0.1 - 0.5Distance at which a point is "consumed" and removed
Segment Length0.05 - 0.5Length of each segment between two growth steps
Iterations50 - 500Number of simulation cycles (more = denser)
Tip: a Kill Distance that's too large produces branches that never converge. Too small, and all branches converge on the same point. Start at 20-30% of the Attraction Radius.

Thigmotropism

Biological Origin

Thigmotropism (from the Greek thigma, touch) is a plant's response to physical contact. It's the mechanism that makes ivy grow around a wall rather than through it, makes a vine's tendrils coil around a stake, and makes roots deflect around a pebble. The plant's nervous system senses physical resistance and recalibrates its growth direction accordingly.

In Labs Growth

The Thigmotropism parameter uses the Bounds Object's geometry (or a dedicated object on Input 2) as a reaction surface. The growing branch detects proximity to the mesh and reacts by moving away from it or clinging to it, depending on the sign of the value.

ParameterValueEffect
Thigmotropism Weight+0.5 to +1.0Avoidance - the branch grows around the object
Thigmotropism Weight-0.5 to -1.0Wrapping - the branch clings to the surface
Thigmotropism Offset0.05 - 0.5Detection distance - how far away the branch starts reacting

Use Cases

  • Avoidance (positive value) - roots growing around rocks, mycelium colonizing around a rigid structure, crystals growing into the gaps of a complex mesh. The Bounds Object acts as an obstacle.
  • Wrapping (negative value) - ivy on a facade, a vine on a trellis, coral enveloping a reef, lichen following the relief of a stone. The surface becomes a guide rather than an obstacle.

Practical Setup: Wrapping on a Surface

The complete workflow for growing vegetation along a facade mesh or a rock:

// Step 1 - Prepare the target surface
[Facade mesh]
     ├─ Scatter SOP (on surface)   → Input 3 (attraction points)
     └─ Direct output              → Input 2 (thigmo object)

// Step 2 - Starting seeds
[Points at ground level / base] ──────► Input 1

// Step 3 - Labs Growth SOP
Thigmotropism Weight : -0.8
Thigmotropism Offset : 0.1
Attraction Radius    : 0.3    (tight to the surface)
Segment Length        : 0.05   (short segments = precise curvature)
Iterations            : 300

Expected result: growth is drawn to the points scattered on the surface AND physically held by the mesh - it follows and wraps the geometry organically, never drifting away from it.

Wrapping not following the surface? Thigmotropism Offset is too large - start at 0.05. Segment Length must also be short (< 0.1).

Combining Tropism and Thigmotropism

Tropism (phototropism, gravitropism) and thigmotropism can be combined to create much more nuanced behavior. They don't cancel each other out - they create a tension between two forces that produces trajectories far more organic than either used alone.

ParameterValueEffect
Tropism Direction{0, 1, 0}Global upward force (phototropism)
Tropism Weight0.2 - 0.6Light influence - doesn't dominate thigmotropism
Thigmotropism Weight-0.7Dominant wrapping - the surface stays the main guide

Concrete example: ivy on a south-facing wall. Positive tropism pulls slightly toward the light (upward), negative thigmotropism keeps the branches stuck to the masonry. The result is growth that's broadly upward while faithfully following the relief of the wall.

Tips and Troubleshooting

  • Growth escaping the Bounds Object - check the mesh is closed (Merge + Fuse + Check Edges). Enable Convert to VDB for more robustness.
  • Branches not converging - Kill Distance is too large. Reduce it to 15-20% of the Attraction Radius.
  • Growth too uniform, not organic - vary Attraction Point density with an Attribute from Map driven by Perlin noise.
  • Wrapping not following the surface - Thigmotropism Offset too large. Start at 0.05, and keep Segment Length short (< 0.1).
  • Simulation slow on a complex mesh - reduce Iterations for tests, raise them only for the final render.
  • Result too geometric, not supple enough - enable Post-Smooth in the output parameters, or add a Smooth SOP as post-process.