Grow
The Grow node is the primary interface for creating procedural vegetation in Natsura.
- Encapsulated Logic: It wraps
grow_core,split,repeat(begin/end),switch, andwrangleinto one powerful tool. - Recursive or Linear: Can create a single internode or a recursive structure (using built-in repeat) with time-varying attributes.
- Mapped Interface: Exposes sockets that drive internal core parameters via mapping chains.
Concept
Core Parameters vs. Interface
Under the hood, the growth logic is driven by a few fundamental parameters on the grow_core:
Length ScaleWidth ScalePitch,Roll,YawOffset(position on parent internode)Branch Count(innate forking property)
The Grow node maps these raw parameters to user-friendly controls. For example, "Multiplicity" drives Branch Count on the first step, while "Forking" drives Branch Count during recursive repetition.
Forking vs. Splitting
- Forking is governed by the innate
Branch Countproperty. It creates copies of the growth based on probabilities or gradients mapped to that count. - Splitting (via the Split node) creates explicit, parallel branches in the graph topology.
Recursion
The built-in repeat allows a single Grow node to generate complex, recursive geometry (like a stem with leaves) by re-evaluating the graph N times. Alternatively, you can use Grow for a single step and wrap it in an explicit Repeat block for advanced workflows.
Inputs
- Input 0 — Graph Existing growth graph.
- Input 1 — Parms
Geometry with a
parmsdetail dictionary for external constants. - Input 2 — Second Graph Secondary graph merged during repetition (e.g., interleaving another recipe).
- Output — Graph The resulting Apex graph.
Parameters
Initialization Controls the first step of growth.
- Interval / Offset: Spacing and phase along the parent.
- Multiplicity: Sets the
Branch Countfor the initial step (creating multiple siblings). - Orientation: Initial Pitch, Roll, Yaw.
Growth (Recursion)
- Max Growth Steps: How many times to repeat the internal graph.
- Fraction: Gates the realized steps (allows partial growth).
- Per-Step Modifiers: Maps that drive
Length,Width, andSpiral(incremental orientation) over the recursion.
Fork (Branching)
Controls Branch Count during recursion.
- Enable Fork: Unlocks branching during the repeat loop.
- Branches: Sets the target
Branch Count. - Probability: Maps the likelihood of a fork occurring.
- Spread: Angular distribution of forked branches.
Sockets Connect Mapping chains here to drive the internal parameters in space and time.
- Mappings: Drive length, width, orientation, etc.
- Effectors: World-space influences (Gravity, Phototropism).
- Decorations: Queue geometry (leaves, flowers) to be generated by Simulate.
Attributes
| Attribute | Meaning |
|---|---|
u | Normalized progress along the current growth section. |
id | Unique identifier for the internode. |
parent_id | ID of the parent internode. |
generation | Recursive depth from the root. |
age | Time/step counter. |
branch_count | The innate forking property (driven by Multiplicity or Fork settings). |
Workflow
- Base Growth: Use Initialization to set the starting point and orientation.
- Recursion: Increase Max Growth Steps to grow a long structure. Map
Widthtoufor tapering. - Forking: Enable Fork to create branches along the stem. Map Probability to control density.
- Variation: Connect Mappings to sockets to drive
Pitch,Yaw, orLengthwith noise or gradients. - Simulation: Pass the result to Simulate to generate the geometry.