» Back to Documentation

 

HAIR FROM GUIDES


[ Dense hair is indirectly generated from a sparse model provided by user ]

This modifier's primary task is to take in a set of guides and based on the provided info create a dense hair volume based on those guides. For more information about guides, read the sparse and dense hair concept section.

This modifier generates dense hair based on a sparse guide model provided by user. Hair from surface is responsible to produce arbitrarily dense hair strands that best describe the volume specified by provided guides. Just like the guides from surface modifier, you get the distribution options to control the way dense roots are distributed over the mesh (for more info on hair distribution, read guide from surface page).


There are several parameters that can dramatically change the look and behavior of dense hair as a subset of guides. Whenever a hair strand is planted, it has to be interpolated in order to achieve smooth transition from guide to guide. There are a couple of interpolation types available:

Polar interpolation: This method will produce the smoothest results. For every created strand hair orientation is determined by the surface normal at that location. Therefore as the surface curves, hair will curve along with it. If used properly, only a few guides on the whole surface could be required to form a hair volume. One downside to this method is the fact that polar interpolation will have two poles (or sinks), where hair will not be well define and will tend to literally flip. If you only need a part of your surface covered, or if the surface is not fully round, this method is the best to use.

Affine interpolation: Unlike the above method, this interpolation type does not take surface information into account. Instead it directly interpolates between strands. Lets say there are two guides- A and B, and we create a dense strand C and its right in the middle between these two guides. The tip of of strand C will lie in the middle of the line formed by tips of guides A and B.

Barycentric interpolation: This is the default, and most robust method. To interpolate hairs in between guides this method utilized surface dependence information and underlying mesh topology. This is obviously only possible if you have both of these available. Once a hair determines where it is located on the mesh, and where the closest three guides are located to it relative to the same mesh, it is affinely interpolated using 3 closest guides (hence the name barycentric).


For the first two interpolation types you can control the amount of guides that every dense strand is interpolated in between. Setting this value to 1 will result in no interpolation at all, and every dense strand will automatically copy the nearest guide. Setting this value to 3 will result in a triangular interpolation where every strand will be an average of 3 closest guides. Note though, that barycentric interpolation always uses three guides and setting a lower guide count will make hair length largely dependant on how far the two or one closest guides are to it.

One of Ornatrix's options for hair generation is strand instancing. Very much like object instancing, this option will create instances of guides instead of making new strands. This means that instead of copying guides, every strand will simply use it as a reference. There is a significant speed increase when using instancing and therefore it can be a good way to speed up modeling hair preview. One of the major downside to strand instancing is that no interpolation can be done to instanced strands. Be very careful when using instanced strands. Things like dynamics, surface combing, and many other components work on assumption that every strand is unique and cause cause unexpected results when processing instanced strands.

Finally hair can be parted to create separate groups that are not interpolated in between. Partings can be auto-generated, specified with a map or a channel, or created manually in partings sub-object mode.


Parameters:

Many of the options used by this component are similar to those used in guides from surface. Please refer to that help for reference.

Additional root data - These four options control which data gets exported with hair. Some data, such as per-root transform matrix takes up a lot of memory (in fact it takes same memory per-root as 4 vertices). Therefore if you are sure that some of this data isn't going to be used later on in the pipeline you can choose not to export it, thus saving memory. One useful example is removing root tm and guide dependence data when exporting very dense fur. Read section on optimizing hair pipeline for more information on hair data.

Export object type - This determines whether dense hair or guides are generated. Sometimes during modeling it is useful to interpolate between results to increase/decrease guide count.

Guide proximity - This option isn't implemented in V1.0

Use guide faces - When used, this option will plant new roots only on faces that are close to guides. Using the iterations parameter you can control how close a face has to be to a guide for roots to be planted on it. 1means roots have to be on same face as one of the guides. 2 means roots have to be on a face that touches a face that has a guide on it. This usually works well with meshes that have many faces.

Instanced strands - If on, all strands will be instanced by provided guides. This means that really only one hair is generated per a guide, and the rest are simply using same memory to display the guide offset at their root. Memory usage is greatly conserved, especially with very dense hair objects.

Use UV coords - Specifies whether mesh UVW coordinates or root world coordinates are to be used to determine relative guide/hair positions.

Auto-part hair - It is often necessary to have different groups of hairs on a mesh. By default this isn't possible since hairs all interpolated to form a continuous volume. Auto parting takes an angle or distance threshold and determines whether hair should be interpolated between specific guides or not. If two guides are oriented or located apart further than provided thresholds a parting will be generated between them. Note that you may also part hairs using a map or a guide channel.


MXS Access:

Interface: OrnaEditGuides

Functions:

.InvalidateCache ()
"Makes the whole modifier re-calculate all of its data next time it is updated"

.CreatePartings ()
.DeleteSelPartings ()