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).







  • 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
  • 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
Missing Something? Let us know if this page needs more information about the topic.