Propagation Modifier
A forest created quickly and painlessly with strand propagation
Strand propagation is a special modifier which allows you to 'spawn' hair on top of existing hair. Instead of having to cross-reference meshes, this modifier 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 introduces <em>strand groups. </em>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).
Parameters
- Propagate On
Specifies the propagation group of strands on which new strands should be generated. - Assign Group ID
The propagation group value to assign to strands generated by this modifier.
Distribution Parameters
- Per-Strand Count
If checked, the viewport and render count values will be used per each source strands instead of overall for all strands - 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 - Uniform Randomness
Adds a random offset for each created strand along it's base strand. This allows adding a little randomness to uniform distributions. - 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 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
Texture Coordinate Generation
- Texture Mapping Method
Specifies how the texture coordinates will be generated for the resulting 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. - Num. 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
MaxScript Access
You may use standard properties exposed by showProperties myModifier
to access and change this modifier.
Examples
You can find examples on usage of this modifier by examining the unit tests in Test_PropagationModifier.ms.