Propagation
A forest created with strand propagation
Strand propagation allows you to 'spawn' hair on top of existing hair. Instead of having to cross-reference meshes, this operator allows the user to create new hair strands directly on top of specified strands. Multiple propagation modifiers can be applied on top of each other to create hierarchies of strands. This is particularly useful for quickly and procedurally creating forests, feathers, flowers, and almost any other phenomena.
To give the user more control, Ornatrix uses strand groups. A strand group is a ID number assigned to every strand (much like material ID is assigned to mesh faces). These groups are later used by other modifiers and the renderer to give different groups different properties. For example you might want to choose to make a stem of a tree thick and brown, while making its branches thinner and more yellow, and making its leaves green.
Every time you apply a strand propagation modifier you need to specify two group parameters: which group to place new hairs on, and which group to assign to these new hairs. So, for example, a tree would have its initial stem as group 0, its branches spawned on group 0 (initial stem) and assigned group 1, and then leaves spawned on group 1 (the branches) and assigned group two. You can then add render settings (or any other) modifier to change individual properties of every group.
A plant-like structure created by spawning new hairs on top of initial hairs
Mesh from strands modifier has an option to assign each strand ID a corresponding material ID. This way you can use a multi-sub/object material to have each strand group shaded using a respective sub-material (for example group 0 would be shaded by 1'st material, group 1 - by 2'nd and group 2 by 3'rd). Fast raytracer does this automatically (assign material IDs).
Videos
Parameters
General
- Propagate On
Specifies the propagation group of strands on which new strands should be generated. - Result Strand Group
The propagation group value to assign to strands generated by this modifier. - Texture Mapping Method
Specifies how the texture coordinates will be generated for the resulting strands. One of the following options are available:- None
No texture coordinates will be generated - Inherit from Base Strand
Texture coordinates will be copied from base strands to generated strands - Flat Map
A new flat texture map is generated with coordinates preserving the strand geometry
- None
- Add Root Position Channel
When true, a per-strand channel is added containing root positions in range (0 to 1) of propagated strands, relative to their base strand
Distribution Parameters
- Generation Method
Determines how the new roots are generation. By default the roots will be generated randomly along the hair strands, but other generation methods like Uniform and Per-Vertex are also available. - Per-Strand Count
If checked, the viewport and render count values will be used per each source strands instead of overall for all strands - Uniform Randomness
Adds a random offset for each created strand along it's base strand. This allows adding a little randomness to uniform distributions. - Viewport Count
Number of strands to generate when previewing the results inside the viewport - Render
Number of strands to generated during rendering. This value can be larger than the viewport count to generate dense hair. - Random Seed
Specifies a value to assign as a seed for the random number generator. - Segment Count
Specified the number of points in each generated strand - Distribution Ramp
Use this curve to control the density of planted strands along the base strand's length.
Distribution Range
- Low Range
Starting position on source strands where to generate new strands - High Range
Ending position on source strands where to generate new strands
Length Control
- Relative to Base Strand
If checked length values will be adjusted to the length of each strand on which new strands are generated. - Global Length
The overall length multiplier for all generated strands - Randomness
Varies the length of generated strands by specified value - Length Diagram
Allows specifying how the length varies along the source strand
Twist Control
- Face surface
When on and number of twist sides is set to 2, this will force all newly created hairs to be tangential to the underlying surface at the root. This is useful for feathers when you want all of them to be staying parallel to the surface. - Number Of Sides
Specifies how many unique twist sides will be propagated on. These sides are uniformly picked. For example having two sides would mean spawning one hair on one side of the strand and the next on the other (opposite of the first hair). - Global Twist
Global twist multiplier
- Randomness
Introduces variation in twist values by specified amount - Twist Diagram
Allows varying the twist values along the length of the surface strand
Fanning Control
- Global Direction
Specifies the direction of the generated strands parallel to the surface strand - Randomness
Introduces variation in fanning values by specified amount - Twist Diagram
Allows varying the fanning values along the length of the surface strand
Selected Side Settings
- Selected Side
Specifies the propagated side of hairs which will be affected by side override settings