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.

Missing Something? Let us know if this page needs more information about the topic.