How to create fur color patterns with Principled Hair BSDF? (Blender 2.80)

With the old hair system, we could change the texture of the material to change the color of the hair that came from it (This tutorial was already very outdated pre-2.80).

I’d like to try a character with different patterns and colors of fur. How can we do this now, with the new Melanin-based hair system?

Thanks in advance.

i test principle shader in eevee, the result is very great, but principle hair shader can not work for eevee, please check to use hair information node for eevee render engine, may you good luck.

I think you misunderstand my question. The hair is working just fine, it has nothing to do with EEVEE.

I’m asking if it’s possible to have different shades of color in certain spots, possibly using a texture on the mesh.

I’m also not sure whether I really understand the question. I will try to answer, anyway. With node materials you can vary any shader input values (including color) with coordinates. It doesn’t matter which kind of hair shader you use, pricipled or not, melanin or direct coloring.

You just have to feed the coordinates into a texture and the color output into the shader. All coordinates you might need are there. The usual texture coordinates refer to the mesh location where the root of the hair is, and the position along the hair you can get from Hair Info -> Intercept.

So if I understand what you’re saying (I am a little bit of a Nodes noob), the model itself could be textured, say, like a zebra. And then I’d take that texture and patch it into the Tint slot of the Principled Hair BSDF node via Hair Info, which would take that pixel’s color and change the hair’s tint?

The docs. have all of the needed details for working with the new shader, including coloration.
https://docs.blender.org/manual/en/dev/render/cycles/nodes/types/shaders/hair_principled.html

Okay, let me explain it in short and give you an example. It works like this:

  • In the node material you get information about the position of the point that is currently rendered (coordinates), from input nodes (Texture Coordinate, UV Map, Hair Info, Geometry).
  • You feed these coordinates into a texture. The textures is just a function that take a set of coordinates and gives you a color value from that.
  • Then you feed that color value somewhere into the shader (tint in your case, it seems)

In my last post I explained how coordinates work for hair.

Here is a blend file with a few examples of what I mean. I used procedural textures, but you can do just the same with images.

hair-texture-example.blend (2.0 MB)

2 Likes

Thanks a ton. This seems to be exactly what I’m looking for, and fairly simple as well. The example helped a lot.