The Hair Fiber material is an artist-friendly material dedicated to realistically render hair, fur and fibers. This material is based on the works of [Chiang et al. "A Practical and Controllable Hair and Fur Model for Production Path Tracing" - 2016] and [d'Eon et al. "An Energy-Conserving Hair Reflectance Model" - 2011]. Internally it models fibers as physically based dielectric cylinders where light is reflected and transmitted multiple times within.
The Hair Fiber material must be used on curve geometries rendered as ribbons. Using it on curves rendered as tubes or on other types of geometries will introduce rendering artifacts. For more information on how to set the proper curve geometric property, refer to the Fur/Shape section of this reference guide.
The model rendered below is a courtesy of Eisko
The raytracer offers a special texture operator Curve Utility dedicated to curve geometries allowing you to get useful values such as per curve ID or random values to add variation in your material.
The Base set of attributes controls the color of the fiber. This set of attribute is designed to be WYSIWYG, normalized and perceptually linear. The look of the fiber is controlled by defining the concentration of natural melanin pigments (eumelanin and pheomelanin) in the fiber that are potentially mixed with a dye pigment. When the fiber color is light, the material can require a lot of bounces to render accurately. For more information, please refer to Rendering Tips section.
|Melanin Amount||Define the amount of melanin (brown pigment aka eumelanin) in the fiber. This attribute actually drives the concentration of melanin in the fiber. When set to 0% there is no melanin pigment in the fiber. At 100% the fiber is fully saturated with melanin.|
|Melanin Redness||Define the relative concentration of the pheomelanin (red pigment) over the amount of brown pigments. This value typically controls how reddish the fiber is.|
|Dye Mix||Define the dye pigments concentration over the melanin. When set to 100% the fiber is completely saturated with dye pigments. The color of the fiber is then exclusively defined by Dye Albedo. On the other hand, dye pigments are totally absent when the value is set to 0%. The color of the fiber is then exclusively defined by the melanin.|
|Dye Albedo||Define the albedo (diffused color) of the hair dye pigment.|
The lighter the color the deeper lights propagate in fibers and the slower the render gets.
Melanin Amount defines the concentration of melanin in the fiber such as low to high concentrations range hair color from white/grey, blond, brown to black. When set to 0% there is no melanin pigment in the fiber resulting in a white/grey hair. At 100% the fiber is fully saturated with melanin pigments resulting in black hair.
Melanin Redness defines the relative concentration of pheomelanin (natural red pigment) over eumelanin (brown pigment) in the fiber. When set to 0% there is no pheomelanin pigment. At 50% there is as much pheomelanin than eumelanin pigments in the fiber. At 100% there are only pheomelanin pigments in the fiber. Values ranging from 0% to 100% result in hair color changing from brown, auburn to red. The images rendered below are all using the default settings but with a Melanin Amount of 50%.
Setting Melanin Amount to 8% and Melanin Redness to 100% gives light natural blonde hair.
Dye Mix and Albedo#
Dye Albedo defines the color of the dye pigment that is mixed to the melanin and Dye Mix defines the concentration of the dye pigment over the melanin. When set to 100% the fiber is completely saturated with dye pigments. The color of the fiber is then exclusively defined by Dye Albedo.
On the other hand when the value is set to 0%, dye pigments are totally absent. The color of the fiber is then exclusively defined by the melanin attributes.
Dye Mix is very useful when textured since using a simple gradient. It then becomes very easily to simulate faded dyed hair. In the render below you can see 3 renders illustrating the effect of Dye Mix:
The first one reveals the natural hair color defines using the melanin attributes.
The second one reveals the actual color of the dye set to Dye Color since Dye Mix is set to 100%
The third render, uses a B&W gradient on UV Map (V) along the hair to drive Dye Mix. This gives a faded dye look to the hair which are naturally blending with the underlying natural hair color.
The Surface set of attributes controls the properties of the micro surface geometry of hair fibers which are modeled as cylindrical dielectrics. In the renders below, we compare, actual cylinder geometries with a dielectric material to curve geometries assigned to a Hair Fiber material:
|Highlight Roughness||Control the longitudinal roughness of the fiber affecting the sharpness/softness of reflection highlights|
|Fiber Softness||Control the azimuthal roughness of the fiber affecting the sharpness/softness and saturation of the transmission.|
|Cuticle Tilt||Define the tilt angle of cuticles of the fiber.|
|Index Of Refraction||Define the index of refraction of the fiber.|
Highlight Roughness controls the sharpness/softness of reflection highlights. The higher the value the softer they are. Internally this attribute drives the longitudinal roughness of the fiber and as such it also has an effect over transmission but to a lesser degree than Fiber Softness.
The images rendered below are all using the default settings using a Melanin Amount of 50% and Fiber Softness of 100%.
Fiber Softness controls the sharpness/softness and saturation of the transmission. The higher the value the softer and saturated the fibers look. Internally this attribute drives the azimuthal roughness of the fiber and as such also affects reflections but to a lesser degree than Highlight Roughness. The images rendered below are all using the default settings but with a Melanin Amount of 50%.
At the microscopic level fibers are made of small overlapping scales called cuticles. The Hair Fiber material takes into account these cuticles and Cuticle Tilt allows you controls the angle between cuticles. Changing Cuticle Tilt angle has for effect to shift highlights towards the tip (positive angles) or the root (negative ones) of the fiber.
Typically synthetic fibers should have a Cuticle Tilt angle of 0. Human hair fibers have a tilt value of around 3 degrees since cuticles are orientated towards the root.
Index Of Refraction#
Since the material is modeled after a dielectric cylinder model, Index Of Refraction controls how light is scattered and reflected within/from the fiber. The higher the Index Of Refraction the more light is reflected and less is transmitted/scattered.
The images rendered below are all using the default settings but with a Melanin Amount of 50% and Melanin Redness of 50%.
The Tints set of attributes allows you to artistically control the tint of reflection, transmission as well as internal scattering.
|Reflection Tint||Tint the color of the light reflection on the fiber.|
|Transmission Tint||Tint the color of transmitted light.|
|Single Scattering Tint||Tint the color of light being scattered once in the fiber.|
|Multiple Scattering Tint||Tint the color of light being scattered multiple times in the fiber.|
These settings can also be used to cheat rendering and optimize render times. Use it at your own risk since you can easily break energy conservation! However, when used carefully they can save render times:
In the render (Render A) below, the maximum number of bounces for transmission was set to 3 which is too low to get realistic blonde hair. Setting Transmission Tint to a bright yellow does the trick as you can see on (Render B).
To achieve greater realism, it is best to use variation to drive some of the attributes of the Hair Fiber such as Melanin Amount or Melanin Redness.
To achieve this, you can use the dedicated Curve Utility texture to add per curve variation. All you have to do is to set it to special Random Value mode of the Curve Utility to output a random value for each curve.
Then you are free to connect it anywhere as is or use it in a Gradient texture for example to remap the random values in the desired range.
Gradient connected to Melanin Amount remapping random values output from a Curve Utility
In the renders below we can see how much adding variation to the Melanin Amount helps achieving more convincing look:
Using the same type of setup, you can improve your lookdev by adding more variation on hair color and even gray hair by randomizing Melanin and other attributes such as Highlight Roughness and Fiber Softness.
The biggest part of the illumination of the hair fiber comes from light being transmitted within fibers. It is then very important to make sure Transmission Depth of the material as well as the Total Maximum Depth of the path-tracer to be set at a large enough value.
Increasing the Transmission Depth generally results in lighter hair and more saturation because of multiple scattering. In a way light hair are like like clouds: they need a lot of bounces to render realistically.
However, increasing these settings isn't super critical for dark hair (and most hair color in general) as you can see in the render below:
While this isn't critical for dark hair, it becomes more important when the hair gets lighter:
As you can see above the hair become slightly lighter and more saturated when Transmission Depth is set to 16. As light bounces more in the hair, render times also increased slightly now becoming 20% slower to render.
However it becomes crucial to increase these values when you want to render realistic light/blonde hair. Otherwise they won't render accurately.
As you can see, when rendering with 16 bounces the blonde hair looks way more realistic. However, render times were 300% longer to render.
In general, for light fiber colors it is recommended to set Total Maximum Depth and Specular/Glossy Transmission Depth of the material to a value of 10 or 16 if the hair is very light.