» Back to Documentation

 

MESH FROM STRANDS


This modifier converts strands from hair state into mesh state. It is to be used in conjunction with (above in the stack) the render settings modifier, which can specify hair radius. There are a number of parameters that control mesh creation. There are three main types of meshes that can be generated from hair:


[ Cylindrical hair - can be rendered from all angles, great for high quality hair ]

1. Prismatic meshes are cylindrical N-sided structures that encapsulate each strand. Because they can be viewed from all directions, they can be rendered as they are or collapsed into baked meshes. This is often the best choice for strands that demand quality over quantity. Some examples include cat whiskars and lizard tails. Rendering very thin cylindrical hair usually causes artifacts, but these can be fixed with increasing sampling per pixel in your renderer.

Cylindrical hair has to be rendered with one of Max's shaders (such as standard) because the normals are generated away from the surface.


[ Billboarded hair - fast and cheap to render, great for dense thin hair, can be used with Ornatrix shaders ]

2. Billboarded hair primitives are faces, one per segment, that form sprites which always face the camera. Since hair in nature is cylindrical, camera-facing billboards fill the task of rendering hair very well. They are cheap to generate and render, however one downside is the fact that they're not cylindrical and sometimes can't be used for things like whiskars, like prismatic mesh primitive. Billboarded hair can be oriented in any direction as well as controlled by a map to produce things like grass and tree leafs.

When using 'Tangents as normal' option, Ornatrix shaders can be used to render the hair.


[ Proxy hair - use any arbitrary set of objects as hair. Great for managing large leafy scenes such as forests or bird feathers. ]

3. Proxy mesh-based hair allows you to take any mesh object (or a set of objects) in the scene and use it as a strand. Ornatrix will literally stretch the object along the strand and deform it using strand transforms. There are options to inherit hair's shape, thickness, orientation, and UVs for any number of arbitrary mesh objects. If multiple objects are added to the list, they will be randomly assigned to each strand. Randomness can be controlled through a seed parameter.

Orientation can be easily controlled with same parameters as used for billboarded hair. Proxy hair is great for things like bird feathers, tree leafs, and forests.


Parameters:

Per-strand UV coords. - If on, every strand will use its own UV coordinates spanning from 0 to 1. When off, these coordinates are inherited from hair. For example, when creating leafs you would usually use one texture for all leafs thus requiring every leaf to have its own set of UV's.

Tangent normals - When on, render normals generated on the mesh are actually hair tangents (perpendicular to normals). This option should be used when using Ornatrix shaders to render the hair.

Face camera - When using billboarded hair, during a render this option will orient all billboards to face the camera.

Orient based on strand - When on, all hair orientation is performed in local (strand transform) space.

Twist direction, chaos - Control how much twist is applied to each strand relative to the object. This option should be off when using camera-facing hair.

Number of sides - When using cylindrical hair this option sets number of sides of each hair cylinder. Total number of triangles (faces) in the mesh then becomes NumStrands * (PointsPerStrand-1) * NumSides * 2.

Uniform scale - If this option is on, generated proxy meshes will be scaled down uniformly (along all -X, Y, and Z axes) based on strand length.

Inherited properties - Determine which hair properties are inherited from underlying hair, and which properties are ignored. For example, if you wish for your objects not to deform with the strand length-wise, turn off the shape inheritance.


 

 
Comments
 

The mapping doesn't work, i loose the unwrap on my instance mesh, i check "Per Strand uv coords" but it doesn't work at all!! How i can do to preserve my UV?

Hi,

Actually that's how it is supposed to work, is not a bug: The "Per-Strand UVs" option only applies to cylindrical and ribbon hairs, not proxy meshes. In this case you have to turn OFF Per-Strand UVs and turn ON UV Coordinates in the Inherited Properties section inside MeshFromStrands, that should do the trick. 

Jeordanis Figuereo (Product Designer. EPHERE Inc.)