Hair

Use the Hair material to render hair, fur and curves.

This material is composed of 3 specular components, the primary corresponding to reflections on the surface of the fibers, the secondary corresponding to internal reflections inside the fibers, and the back corresponding to transmission through the fibers.

Additionally, reflections between fibers are simulated with a multiple scattering approximation. Eventually, a simple non physically based diffuse component is provided.

Tweak the following sliders to see the aspect of each component:

Hair components:
Primary
Secondary
Back
Multiple Scatter
Diffuse

Tweak the following sliders to see the aspect of each lighting contribution (note that these are not parameters of the material but intensities of the front, back and environment lights):

Lights:
Front
Back
Environment

Components

Primary

Primary is the amount of primary specular reflected by the fiber.


The Primary specular alone.

Secondary

Secondary is the amount of secondary specular reflected by the fiber. This specular component is reflected through the fiber, and is colored.


The Secondary specular alone.

Back

Back is the amount of specular transmitted through the fiber. This component is mostly visible in back lighting.


The Back specular alone.

Multiple Scattering

Multiple Scattering simulates the scattering of light through the volume of numerous fibers, instead of a single scattering. Combine this with the previous components to create convincing diffuse and soft hair.

Multiple Scattering requires the Attributes -> Shading -> MS Approximation attribute to be checked.


The Multiple Scattering alone.

Diffuse

Diffuse is a simple diffuse approximation using Kajiya-Kay shader. Use this to render non photo-realistic hair.


The Diffuse alone.


The hair rendered with Multiple Scattering = 1 compared to Diffuse = 0.5.

Color

You can specify the hair color in many ways :

  • Using the Color attribute, a simple RGB color.
  • Using the Melanin attributes to control the hair melanin density, to get plausible human hair colors.
  • Using the Absorption attribute with mesured RGB absorption values.

Modulate the color from the tip to the root using the Tip/Root Color attributes.

Randomize the hair color per clump or per fibers using the Clump and Fiber Random attributes.

Add mutant hairs, like white hairs, using the Fiber Mutant attributes.

Color

Color controls the general appearance of the hair. Light scattering and hue shifting may result in slightly different colors, so this control is an approximation of the resulting color.


Different color settings, from brown to white.

Root Color

Root Color is multiplied to the Color at the root of the fiber. White leaves the color unaffected.


Root Color, white, green and red.

Tip Color

Tip Color is multiplied to the Color at the tip of the fiber. White leaves the color unaffected.


Tip Color, white, green and red.

Color Shape

Color Shape moves the blending area between Root Color and Tip Color towards the fibers root or tip. Lower values result in blending closer to the root, higher values result in blending closer to the tip.


Color Shape = 0.6, 0.75 and 0.9.

Absorption

Specifies the fiber absorption properties, for red, green and blue. The corresponding color is multiplied to the general Color. Lower absorption values result in lighter hair, while higher absorption values result in darker hair.

To render the hair with a specific absorption, set Color -> Color to pure white.


Absorption set to (0,0,0), (0.03,0.07,0.15) and (0.06,0.14,0.3).

Melanin Density

Specifies the density of melanin which contributes to the hair resulting color. This parameter along with Melanin Mix are based on [d'Eon11], and provides an easy and consistent control of human hair colors. Lower density values result in lighter hair, while higher density values result in darker hair.

Similarly to Absorption, the corresponding color is multiplied to the general Color.

To render the hair with a specific melanin density, set Color -> Color to pure white.


Melanin Density set to 0, 0.05, 0.2 and 0.6 (with Melanin Mix = 0.5)

Melanin Mix

Specifies the ratio between eumelanin and pheomelanin in the fibers. Lower values result in darker and brown hair color, higher values result in lighter and red hair color.


Melanin Melanin set to 0, 0.5, and 1 (with Melanin Density = 0.3)

Clump Hue Random

Clump -> Hue Random controls the amplitude of the hue noise.


Clump -> Hue Random = 0, 0.5 and 1.

Clump Value Random

Clump -> Value Random controls the amplitude of the value noise.


Clump -> Value Random = 0, 1 and 4.

Clump Random Scale

Clump -> Random Scale controls the noise frequency for clumps hue and value randoms. Lower values result in smooth varations, higher values result in rapid variations.

The clump random is based on the scalp UV texture coordinates, thus the actual noise frequency scaling is dependent of the UV layout.


Clump -> Random Scale from lower to higher value.

Fiber Hue Random

Fiber -> Hue Random controls the amplitude of the hue noise per fiber.


Fiber -> Hue Random = 0, 0.5 and 1.

Fiber Value Random

Fiber -> Value Random controls the amplitude of the value noise per fiber.


Fiber -> Value Random = 0, 1 and 4.

Fiber Mutant Color

Fiber -> Mutant Color controls the color of mutant fibers. Use this to create random white hair fibers, for instance.


Fiber -> Mutant Color as white, red and green.

Fiber Mutant Ratio

Fiber -> Mutant Ratio controls the ratio of mutant fibers. Fiber -> Mutant Ratio = 0 results in no mutated fibers, Fiber -> Mutant Ratio = 0.5 results in half mutated fibers, and Fiber -> Mutant Ratio = 1 results in all fibers mutated.


Fiber -> Mutant Ratio = 0, 0.1 and 0.5.

Specular

These parameters control the appearance of the specular components.

Width

Specular -> Width controls the width of the specular cones. Small values result in sharper speculars, while higher values result in wider and smoother speculars.


Specular -> Width = 5, 10 and 15.

Shift

Specular -> Shift controls the shifting of the specular cones. 0 leaves the specular components unshifted, positive values shift the primary towards the root and secondary and back towards the tip.


Specular -> Shift = -10, 0 and 10.

Since Multiple Scattering is based on the specular components, Specular -> Width and Specular -> Shift also affect the appearance of Multiple Scattering.

Self Shadow

Self shadowing attenuates the hair color at the root of the fibers.

Self Shadow does not affect the primary specular.

Amount

Self Shadow -> Amount controls the amount of attenuation. 0 doesn't attenuate the color, 1 results in black color at the root.


Self Shadow -> Amount = 0, 0.5 and 1.

Position

Self Shadow -> Position controls the end of the attenuation along the length of the fibers. 0 doesn't attenuate the color, 1 attenuates until the tip of the fiber.


Self Shadow -> Position = 0.2, 0.5 and 0.7.

Opacity

Opacity controls the opacity of fibers.

To faster render hair with opacity, it is recommended to activate opacity baking using the Attributes -> Surface -> Opacity Mode attribute. Use either Vertex or V modes for curves. The User Guide/Shading/Opacity section for more information on improving performances with opacity.

Opacity

Opacity -> Opacity controls the opacity of hair in primary visibility. This setting does not affect the hair opacity in shadows, so decreasing this value and keeping the Opacity -> Shadow Opacity to 1 results in darker hair.


Opacity -> Opacity = 1, 0.7 and 0.4.

Tip Fade

Opacity -> Tip Fade controls the starting point of opacity fading along the length of the fibers. 1 doesn't fade opacity at all, 0.5 fades the opacity from the middle of the fibers, and 0 fades from the root. When using tip fading, the fibers are fully transparent at the tip.


Opacity -> Tip Fade = 1, 0.5 and 0.

Shadow Opacity

Opacity -> Shadow Opacity controls the opacity of hair in shadows. This setting does not affect the hair opacity in primary visibility. Decreasing this value result in brighter hair.


Opacity -> Opacity = 1, 0.7 and 0.4.

Advanced

Primary -> Color

Multiplies the final color of the primary specular.

Primary -> Width

Multiplies the width of the primary specular.

Primary -> Shift

Multiplies the shift of the primary specular.

Secondary -> Color

Multiplies the final color of the secondary specular.

Secondary -> Width

Multiplies the width of the secondary specular.

Secondary -> Shift

Multiplies the shift of the secondary specular.

Glints -> Color

Multiplies the final color of the glints specular.

Glints -> Width

Controls the azimutal width of the secondary glints.

Glints -> Half Angle

Controls the azimutal shift of the secondary glints.

Back -> Color

Multiplies the final color of the back specular.

Back -> Width

Multiplies the width of the back specular.

Back -> Shift

Multiplies the shift of the back specular.

Back -> Azimutal Width

Controls the azimutal width of the back specular.

Multiple Scatter -> Back Direct

Multiplies the Back Direct component of the multiple scattering component.

Multiple Scatter -> Single Scatter

Multiplies the Single Scatter component of the multiple scattering component.

Multiple Scatter -> Back Scatter

Multiplies the Back Scatter component of the multiple scattering component.

Multiple Scatter -> Density

Controls the density of fibers for multiple scattering. 0 results in no multiple scattering (no fiber to scatter light with), 1 results in maximum multiple scattering. Human hair typically have 0.7 density.

Diffuse -> Color

Multiplies the Diffuse component color. Note that Diffuse uses the general color settings.

Diffuse -> Power

Controls the exponent of the Kajiya-Kay diffuse component. 0 results in omni directional diffuse, higher values result in sharp specular-like component.

Ray Depth

Controls the number of bounces the Hair material allows. -1 leaves this value unchanged from the Diffuse Bounces setting of the RenderPass.

Ray Length

Controls the maximum ray length for bounces. Shorter values result in less indirect illumination and shorter rendering time.

Direct Sampling

Multiplies the number of rays shot towards the lights for direct lighting.

Indirect Sampling

Multiplies the number of rays shot towards surrounding objects for indirect lighting.

Trace Set

Specify the raytracing set for direct and indirect lighting.

References

[Marschner03] "Light Scattering from Human Hair Fibers", Stephen R. Marschner, Henrik Wann Jensen, Mike Cammarano, Steve Worley, Pat Hanrahan

[Zinke08] "Dual Scattering Approximation for Fast Multiple Scattering in Hair", Arno Zinke, Cem Yuksel, Andreas Weber, John Keyser

[d'Eon11] "An Energy-Conserving Hair Reflectance Model", Eugene d’Eon, Guillaume Francois, Martin Hill, Joe Letteri, Jean-Marie Aubry

The hair model is provided by Cem Yuksel, and can be downloaded at http://www.cemyuksel.com/research/hairmodels/.