Thick, curly white CGI hairs growing from a ball

CGI hair

In late 2017 I started learning how to make CGI hair in Blender. I’d watched some videos from Pixar showing how their fur and hair technology had improved over the years, and it seemed like a fun area to explore myself.

The hair I knew best belonged to Sam, and I wondered if I could reproduce his spotty coat.

Sam, an Australian Cattle Dog, standing on a log
Figure 1. Sam dog

I began slowly, working out how to change the shape of single strands of hair in Blender (Figure 2).

CGI hairs being twisted into different shapes CGI hairs being twisted into different shapes CGI hairs being twisted into different shapes
Figure 2. The effects of curl (yellow), wave (pink), and braid (green) kink settings

I then took six spheres and grew 100 hairs from each of them, altering their root and tip dimensions, adding in some randomness to effect their shape, and generally changing as many settings as I could to see what happened (Figure 3). The results were enlightening, but not very organic.

Six spheres with different kinds of CGI hairs coming out of them
Figure 3. Styling hair six different ways

To produce more natural, fur-like textures I had to dial the thickness right down, add in some color, and turn on child hairs (Figure 4).

Four spheres. The top two have a few sparse hairs coming out of them, the bottom two have many natural looking hairs coming out of them
Figure 4. Rendering parent hairs only (top row) and child hairs only (bottom row)

Feeling a bit more confident about things, I started working on Sam’s coat. To match his coloring I took a photo of the hair on his back and applied it to the surface of a plane in Blender. Any hairs grown from this plane would now inherit their color from the pixels they sprang from (Figure 5). I was pleasantly surprised at how simple that part of the project was.

Screenshot showing four stages of growing hairs inside Blender
Figure 5. Hairs inheriting their color from an underlying photo

A much tricker task was matching the spreading pattern of hair growth on his back. I have a better idea of how I’d approach that today, but at the time I just couldn’t get it to look right. Nevertheless, I’d say Figures 6 and 7 still came out feeling very familiar. I spent 11 years looking at and touching Sam’s coat, and Figure 7 has a softness to it that I know he got after a bath.

A CGI render of sam’s fur
Figure 6. Render of the hair on Sam’s back
A CGI render of sam’s fur
Figure 7. Render of the hair on Sam’s side

It makes me miss my friend.

Sam at the beach, lying next to me with his head on my leg, looking up at me
Figure 8. Samuel

A footnote on how hairs are made

Although I started off this project by using single strands of hair, you can see that I quickly moved on to generating hundreds, and then thousands of strands for my models. There’s no way to create and animate that many objects manually, so the simulation process is handled by something called a particle system.

Emitter particle systems are commonly used to generate fuzzy phenomena like fire, smoke, sparks, or falling snow. Hair particle systems are used to generate strand-like objects such as fur or grass, but they can also be used to scatter copies of any object over a wide area, like dust on a shelf, trees in forest, or planets in a galaxy.

Figure 9. Particles from an Emitter system (red) and a Hair system (blue)

Blender might be free software, but it’s still capable of modeling many millions of particles at a time. The head in Figure 10 has 500,000 strands coming out of it, and although I wasn’t skilled enough to make them look like real hair, Blender handled their creation and animation with ease.

Figure 10. 500,000 hair particles being effected by gravity