Archive for 3D Hair

Hair Rendering – Current State

I’ve been doing quite a bit of research lately about how to render hair in a Renderman compliant rendering engine. As I’ve gathered data from several sources, I thought I’d create a post that summarized what I’ve found so far. Hopefully anyone else who decides to research this crazy topic can benefit by not needing to find everything on their own.

Stephen Marschner

While there are other predecessors to the idea about how to render hair in computer graphics (most notably Kajiya and Kay in 1989), most serious work begins with the paper by Stephen Marschner, et. al. titled “Light scattering from human hair fibers” published in 2003.

Marschner noted that light interacting with hair is actually a very complicated model. When light strikes the surface of a strand of hair, it does 3 different things. Part of it is reflected back into the environment, part of it is refracted and transmitted to objects behind the hair, and part of it reflects within the hair strand, re-exiting the hair at another point further down the strand.

Marschner's model showing the interaction between light and hair

Marschner’s model showing the interaction between light and hair

Side Note: It may be interesting to notice that Marschner is also the primary author on the Subsurface Scattering paper that I linked over in my Additional SSS Information article.

Intermediate Works

Following Marschner’s article, several other researchers worked on refining his model. Which, in academic terms, really means trying to show what’s wrong with that model. Improvements were made to reduce some of the computational complexity as well as to fix issues common to shading models such as energy conservation.

Side Note: Energy conservation in computer graphics terms means that an object should not reflect / transmit more light energy than strikes it. Some shaders can be very bad about this and it can result in unintended effects.

One of the best papers in this category (in my opinion) is “Dual Scattering Approximation for Fast Multiple Scattering in Hair” by Arno Zinke, et. al. in 2008. In this paper, they note that to be fully implemented, Marschner’s model requires that all light striking the hair needs to be fully calculated. It also does not account for an effect in curly hair where the angle of the light striking the curl has a significant factor in how the light is transmitted or refracted. Instead, they use a sampling model for the scattering that allows you to only consider the effect at the shading point. Also, the eccentricity of the hair fiber (i.e. the tightness of the curl) is taken into effect.

Side Note: The researchers at the University of Bonn have done a lot of very interesting work in the area of computer graphics and the modeling / rendering of hair.

Artist Friendly

In 2010, 3D artists from Disney Studios (Iman Sadeghi and Heather Pritchett) and a couple of professors from the University of California at San Diego (Henrik Wann Jensen and Rasmus Tamstorf) brought forward the idea that while these mathematical models are quite interesting, they aren’t very friendly for artists to work with. Most of them require a deep understanding of the math involved in order to provide inputs that produce predictable results.

Disney in particular was finding that often they spent more time testing lights and such than they did actually working on the scenes they were creating. Therefore in 2010 they proposed what they termed an “An Artist Friendly Hair Shading System”.

In this system, the parameters provided to the artist are more familiar terms such as the curliness and coarseness of the hair being rendered rather than details such as eccentricity, cuticle angles and cross-section measurements.

Also, since the goal for Disney Studios is not to create the most physically accurate model of human hair, they take some liberties with the math so that the result is artistically more pleasing, if not quite as mathematically perfect.

This Is My State

So, this is where I stand on the research. I’m working on a shader for hair in DAZ Studio which uses this Artist friendly approach to create a shader model which will produce better results. My goal is to make it friendly for transparency mapped hair. Most of the models reference above expect the objects they are rendering to be cylinders. So I am working on a modification to the model with works with planes, but simulates many small cylinders for the hair.

I’ve finally gotten to the point where I understand enough of the math to begin working on the implementation. Further updates as situations warrant.


I would be remiss if I didn’t mention a thesis paper from a graduate student at Bournemouth University. Sarah Invernizzi wrote “On Physically Based Hair Rendering” for her Master of Science degree in Computer Animation and Visual Effects. Her paper did a lot for me in terms of providing the history of this topic and does a good job of making things a little be clearer for those of us who aren’t as versed in the mathematics.