We present a reflectance model for dielectric cylinders with rough surfaces such as human hair fibers. Our model is energy conserving and can evaluate arbitrarily many orders of internal reflection. Accounting for compression and contraction of specular cones produces a new longitudinal scattering function which is non-Gaussian and includes an off-specular peak. Accounting for roughness in the azimuthal direction leads to an integral across the hair fiber which is efficiently evaluated using a Gaussian quadrature. Solving cubic equations is avoided, caustics are included in the model in a consistent fashion, and more accurate colors are predicted by considering many internal pathways.

# An Energy-Conserving Hair Reflectance Model

##### Review badges

**0 pre-pub reviews

**2 post-pub reviews

# An Energy-Conserving Hair Reflectance Model

Published in Computer Graphics Forum on July 19, 2011

##### Abstract

- Contribute
- Post-publication review Jun 2014
Following presentation by Eugene d'Eon of the paper in Prague I can recall two questions:

1) Ravi Ramamoorthi: "It seems that there is an analogous relationship between the Marschner model and the spherical Gaussian M function in your paper much like the difference between Blinn Phong and Phong specular lobes for surfaces". Response: "Hmmm, I'm not sure."

2) Marcos Fajardo: "We found an importance sampling scheme for the Marschner model. Can you comment on importance sampling for your new model?" Response: "No, haven't thought about it." (However, a method was later published in a SIGGRAPH 2013 technical brief that importance samples it completely and analytically).

Published inReviewed byOngoing discussionAdd comment - Post-publication review Sep 2013
For very narrow spherical Gaussians, numerical issues can arise in finite precision floating calculations. We found the following special cases useful in our implementation. To evaluate the $M$ function when the variance is low, $v < 0.1$, we use $$ M\left(v,\theta _{\text{cone}},\theta _o\right) \approx \exp \left(\log \left(I_0\left(a\right)\right)+b-\frac{1}{v}+0.6931+\log \left(\frac{1}{2 v}\right)\right) $$ where $a = \cos \theta _{\text{cone}} \cos \theta_o / v$ and $b = \sin \theta _{\text{cone}} \sin \theta_o / v$. The log of the Bessel function can also be problematic for large arguments for we use the following special case for $\log( I_0(x))$ when $x > 12$: $$ \log( I_0(x)) \approx x + 0.5 \left( -\log ( 2 \pi ) + \log \frac{1}{x} + \frac{1}{8x} \right). $$

Published inReviewed byOngoing discussion (1 comment - click to toggle)**Eugene d'Eon**| 6 years agoThe idea to use the slide rule trick was due to Geoffrey Irving. The further expansions were derived by Eugene d'Eon.