Time for another quick Unreal Hair tip. While working on something, I ran into this issue when working with pale-blond hair and a very dim skylight to add some ambient light to my level. My character’s hair pretty much glows in the dark. During my time working with Unreal Engine, I’ve never had that issue. However, every time I have worked with hair, it’s either red hair or darker hair (from brown to black), while this time I was working on this very “pale blond” hair.
In the past, I have shown you how to assign a color to your hair, by using a combination of Lerps and color nodes. This time, I am exploring something a little different, the Hair Color node.
If you’ve used MetaHuman Creator in the past, or you saw my article about MetaHuman Creator, then you know how that app applies color to your hair. You have a melanin control, a redness control and a hair dye control. The Hair Color node uses the same principle. The melanin control lets you make your hair go from white (melanin = 0) to black (melanin = 1). The redness controls how much red tint your hair is going to have. Lastly, the dye parameter is a coloring that is laid on top of your basic hair color.
In the following example you can see what you get if you set the melanin to 0.15 and the redness to 1.
And this is what you get if you set the melanin to 0.5 and redness to 1.
Lastly, this one shows what happens when melanin is set to 0.5 and redness to 0.
Now the question is, how to make blond hair that doesn’t look like it’s glowing in the dark? A melanin value of 0.2 produces a good result, but it looks like “dark blond” hair.
A melanin value of 0.1 gives me the coloring I want, but now the hair starts to get that “glow in the dark” effect. As a reminder, I am using a very dim skylight, and if I were to turn off the skylight this wouldn’t be happening. However, I need that skylight for overall ambient light.
The good thing is that the Hair Color node is not the be and end for hair coloring. As any other node, you can combine it with other things. If I now add a Desaturate node after the Hair Color node, with a value of 0.35, I get this, which is a very good result.
Of course, you can have various Hair Color nodes, and combine them with other hair parameters to make the hair coloring change based on the length, and also randomize it a bit. For example, I used my previous technique of combining a bunch of values using lerps, except this time used float values, not colors, and this is what I got.
This is one of those things that can take you quite a bit to get right, but at least the result is worth it.