For scalars, Natsura uses Mappings: a general mechanism for turning attributes into parameter controls, so users can build their own sliders instead of relying on fixed UIs.
Effectors exist to provide the same general mechanism for vectors:
a way to carry directional and spatial information per point, without needing new parameters or node types every time someone wants a new type of control.
Effectors provide reusable vector channels that other nodes can read.
They can be used to:
They carry information; behaviour comes from how that information is read and mapped into parameters.
At the technical level, an effector is:
v@eff_dir, v@eff_curve, v@eff_wind).Natsura Wrangle, etc.).There is no special effector data type.
Effectors are ordinary attributes that the system treats as directional / influence channels by convention.
In a typical setup:
Effectors provide raw vectors; mappings and node logic define how that data shapes growth.
Effectors can come from several places:
Natsura Wrangle// Natsura Wrangle example
vector up = {0,1,0};
vector noise = snoise(@P * ch("freq"));
v@eff_custom = normalize(up + noise * ch("amp"));
eff_custom.Effectors are stored per point:
This inheritance is simple but important.
Example:
Result: branches follow the trunk’s direction instead of having their own curve-relative vectors.
To give branches their own behaviour, the effector must be computed explicitly on those branch points as well.
Natsura evaluates graphs in a deferred way: you build an engine that runs later, instead of a strictly top-to-bottom SOP chain.
Effectors follow the normal attribute flow:
Effectors do not use a separate data path; they are part of the standard attribute system.
Sometimes it is useful to read an effector not only from the current point but from its ancestors in the growth hierarchy.
Natsura provides tools to:
This enables:
This is still based on attributes; ancestor access simply chooses which point’s attribute to read.
When an effector appears to have no effect, it is usually an attribute or mapping issue. Check:
If all of the above are correct, the effector is behaving as designed; further adjustments belong in how it is read or mapped.