Natsura Map
The Map node is the fundamental building block for parameter control in Natsura.
- Linear Chaining: Maps are connected in a linear chain. Each node modifies the value passed from the previous one.
- Operations: Each Map performs one operation: Constant, Attribute Lookup, or Randomization.
- Blending: The result of the operation is blended (Add, Multiply, Replace, etc.) with the incoming value.
== Concept ==
=== Space and Time ===
By mapping parameters to attributes like u (growth progress), height (Y position), or age (time), you make your growth rules dynamic. A static "Width" becomes a "Taper". A static "Pitch" becomes a "Curl".
=== The Chain ===
A single Map node is rarely enough. You typically chain them:
Base Value: Set a constant start value.
Variation: Add noise or randomization.
Control: Multiply by a ramp over u to shape the effect.
Inputs
== Inputs ==
Input 0 (Previous Map): The value stream from the upstream map.
Output (Resulting Map): The modified value stream.
Parameters
Overview
Space and Time
The Chain
A single Map node is rarely enough. You typically chain them : # Base Value: Set a constant start value.
Variation: Add noise or randomization.
Control: Multiply by a ramp over u to shape the effect.
Key Features:
- Link procedural parameters to attributes like height, light intensity, and proximity.
- Use ramps and gradients to define smooth or abrupt transitions in behavior.
- Combine multiple mappings using operations such as Add, Multiply, Min, or Max.
- Enable dynamic, localized growth responses.
Parameters
Mode
Parameter to Map : Specifies the growth parameter to be mapped. Options include pitch, yaw, roll, branch count, step length, width scale, gravitropism, and others. Custom parameters can also be defined.
Mode
Selects the operation type
: Constant: Outputs a fixed number.
Attribute: Samples a graph attribute (e.g., u, height).
Randomize: Generates a stable random value per internode.
Settings
Source Attribute : The attribute name to read (in Attribute mode). Defines the environmental or structural attribute driving the parameter. Common attributes include height, ambient occlusion (self/environment), surface distance, or a custom-defined attribute.
Ramp Curve : Remaps the attribute value (0-1 range). A gradient ramp that controls the distribution of mapped values along the attribute range.
Random Range : Min/Max values for randomization mode.
Min (Parameter) : The minimum value of the parameter to map from.
Max (Parameter) : The maximum value of the parameter to map to.
Min (Attribute) : The minimum value of the source attribute to consider in the mapping.
Max (Attribute) : The maximum value of the source attribute to consider in the mapping.
Blending
Graph Method
How to combine with the input value. Specifies the mathematical operation used to combine multiple mappings : Replace: Overrides existing values with the new mapping. Add: Adds values from the new mapping to the existing ones. Subtract: Subtracts values from the existing ones. Multiply: Multiplies values for compounded effects. Divide: Divides the existing values by the new ones. Max: Keeps the maximum value between existing and new mappings. Min: Keeps the minimum value between existing and new mappings.
Weight : Adjusts the influence of the mapping on the final result. Higher weights increase the impact of the mapping.
Related
- Grow Node — Primary consumer of Maps. Incrementally creates plant structures by defining the size, shape, and direction of individual branches.
- Wrangle Node — Creates custom attributes for Maps. Allows users to write custom VEX code for advanced procedural control.
- Map If Node — Conditional mapping logic.
- Map Blend Node — Blends two map chains.
- Split Node — Enables axillary branching by splitting growth into separate paths.
- Repeat Node — Reevaluates Grow over multiple iterations to generate branching hierarchies.
- Signal Node — Guides plant growth using external data such as vector fields or collision geometry.
- Simulate Node — Processes the procedural graph and environmental inputs to generate complete plant structures.
- Switch Node — Enables transitions between different growth behaviors based on attribute-driven thresholds.
- Prune Node — Removes components of the plant structure to simulate natural shedding or manual trimming.
@intro
Getting Started
If you're new to the Natsura toolkit, begin by visiting the Overview|../../natsura/index. The index provides a comprehensive overview of the system, including descriptions of all nodes and how they work together to create procedural plant models. It's the ideal starting point for understanding core concepts and deciding which nodes to explore first.
@attributes
== Attributes ==
Map reads attributes from the graph but does not create them.
Common inputs: u, id, parent_id, generation, age, height.
@workflow
== Workflow ==
- Connect a Map node to a socket on a Grow node (e.g., "Width Scale").
- Set Mode to Constant and value to 0.1 (Base width).
- Chain a second Map node.
- Set Mode to Attribute, Attribute to
u, and Operation to Multiply. - Adjust the Ramp to taper the width from 1.0 down to 0.0.
@applications
== Applications ==
- Dynamic Tapering: Use the
uattribute to adjust branch width based on height. - Phototropic Growth: Drive branch orientation using light intensity attributes.
- Localized Growth: Increase density in areas with high resource availability.
Advanced usage includes:
- Simulating auxin gradients to mimic hormone-driven growth behaviors.
- Mapping vigor or other dimensionless values to create botanically accurate plant structures.
- Adjusting branching angles dynamically in response to environmental constraints.
@notes
- Default Behavior: Without mapping, parameters are deterministic and uniform across components.
- Custom Attributes: Use custom attributes calculated with the Wrangle Node to drive unique mappings.
- Fine Control: The ramp curve and blending options enable precise procedural control over variations.
- Chaining: A single Map is rarely enough -- chain multiple Maps for base value, variation, and control.