Principled Hair BSDF

Solo Cycles

../../../_images/render_shader-nodes_shader_hair-principled_node-melaninconcentration.png

Principled Hair BSDF bajo Melanin concentration.

El Principled Hair BSDF es un shader basado físicamente y fácil de usar para renderizar cabello y pieles.

Coloreando el Cabello

El shade proporciona tres formas diferentes, o parametrizaciones, para colorear las hebras del cabello.

Direct coloring

Elija el color RGB deseado y el shader se aproximará al coeficiente de absorción necesario (mas abajo).

Melanin concentration

Este modo define el color como la cantidad y proporción de los pigmentos que se encuentran comúnmente en el cabello o las pieles, eumelanina (prevalente en el cabello marrón-negro) y feomelanina (cabello rojo). La cantidad se especifica en la entrada Melanin y la relación entre ellas en Melanin Redness. El aumento de las concentraciones oscurece el cabello (los siguientes son con Melanin Redness \(1\)):

  • Blanco (Melanin \(0\)),

  • Rubio (Melanin \(0.25\))

  • Rojizo (Melanin \(0.5\))

  • Marron (Melanin \(0.75\))

  • Negro (Melanin \(1\))

Además, las entrada Tint permiten teñir el cabello con el color deseado.

Absorption coefficient

Especifica el coeficiente de atenuación \(\sigma_{a}\), según lo aplicado por la Ley de Beer-Lambert (en ingles). Este modo está destinado principalmente a usuarios técnicos que desean utilizar coeficientes de la literatura sin ningún tipo de conversión.

Aleatorización de propiedades

El cabello realista debe tener un mínimo de variación entre cada hebra. El shader permite esto especificando dos valores, Random Color y Random Roughness, que reasigna los valores especificados de Melanin/Roughness al rango \(Color/Roughness \pm Randomization\%\).

Entradas

Color

El color RGB de la hebra. Solo se usa en coloración directa.

Consejo

El color elegido se convierte en un coeficiente de absorción con la siguiente fórmula (sección 4.2 de [CBTB16]):

\[\sigma_{a} = \frac{\ln(Color)} {\left(5.969 - 0.215\beta_{N} + 2.532\beta_{N}^{2} - 10.73\beta_{N}^{3} + 5.574\beta_{N}^{4} + 0.245\beta_{N}^{5}\right)^{2}}\]

Donde \(\beta_{N}\) es la rugosidad radial del cabello después de aplicar la aleatorización (si se especifica).

../../../_images/render_shader-nodes_shader_hair-principled_demo-color.jpg

Tiñendo el cabello usando la parametrización de coloración directa. (Los números en la parte superior son los valores RGB).

Melanin

Cantidad absoluta de pigmento. Rango \([0, 1]\) equivalente a \([0\%, 100\%]\).

Consejo

Se trata de una asignación lineal a la función exponencial subyacente:

\[melanin\_qty = -\ln(\max(1.0 - Melanin, 0.0001))\]
../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin.jpg

Melanina.

Melanin Redness

Relación de feomelania a eumelanina. Rango \([0, 1]\) equivalente a \([0\%, 100\%]\).

Consejo

La fórmula de la relación es: \(eumelanin = Melanin*(1.0-MelaninRedness)\), \(pheomelanin = Melanin*MelaninRedness\).

The resulting quantities are converted (after randomization, if specified) to absorption concentration via the following formula (section 6.1 of [EFHLA11], adjusted for the range \([0, 1]\)):

\[\begin{split}\sigma_{a} = eumelanin * \left[\begin{matrix} 0.506 \\ 0.841 \\ 1.653 \\ \end{matrix}\right] + pheomelanin * \left[\begin{matrix} 0.343 \\ 0.733 \\ 1.924 \\ \end{matrix}\right]\end{split}\]
../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin-redness.jpg

Melanin Redness.

Tint

Color used for dyeing the hair after applying the melanin pigment. It is not subject to randomization. It can be disabled by setting the color to white.

Consejo

This is converted via the Color mapping above and added to the absorption coefficient of the melanin concentration.

../../../_images/render_shader-nodes_shader_hair-principled_demo-tint.jpg

Tint, using Melanin 0.1 and the corresponding RGB values.

Absorption coefficient

Attenuation coefficient \(\sigma\).

Roughness

Specify how much the glints are smoothed in the direction of the hair shaft. Too low values will smoothen the hair to the point of looking almost metallic, making glints look like fireflies; while setting it too high will result in a Lambertian look.

../../../_images/render_shader-nodes_shader_hair-principled_demo-roughness.jpg

Roughness.

Radial Roughness

Specify how much the glints are smoothed in the direction of the hair tangent. Too low values will concentrate the glint; while setting it too high will spread the light across the width of the strand.

Consejo

Mathematically, this parameter is mapped to the logistic distribution’s scale factor \(s\) (section 4.1 of [CBTB16]).

../../../_images/render_shader-nodes_shader_hair-principled_demo-radial-roughness.jpg

Radial Roughness.

Coat

Simulate a shiny coat of fur, by reducing the Roughness to the given factor only for the first light bounce (diffuse). Range \([0, 1]\) equivalent to a reduction of \([0\%, 100\%]\) of the original Roughness.

../../../_images/render_shader-nodes_shader_hair-principled_demo-coat.jpg

Coat.

IOR

Index of refraction (IOR) defining how much the ray changes direction. At 1.0 rays pass straight through like in a transparent material; higher values give more refraction. Default value is \(1.55\).

Offset

Tilts the glint of the hair by increasing the angle of the scales of the hair’s cuticle with respect to the hair shaft. Human hair usually has low values.

Random Color

For each strand, vary the melanin concentration by \(RandomFactor\). Range \([0, 1]\) equivalent to \([0\%, 100\%]\) of the initial melanin concentration.

Consejo

The melanin concentration is multiplied by \(randomFactor\), where \(randomFactor = 1.0 + 2.0*(Random - 0.5) * RandomColor\).

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-color.jpg

Random Color.

Random Roughness

For each strand, vary both Roughness values by \(RandomFactor\). Range \([0, 1]\) equivalent to \([0\%, 100\%]\) of the initial roughness values.

Consejo

The applied formula is the same one as for Random Color.

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-roughness.jpg

Random Roughness.

Random

Random number source. If no node is connected here, it is automatically instanced with the value obtained from Hair Info ‣ Random.

Propiedades

Parametrización

Elija uno de los tres modos de coloración descritos anteriormente.

Salidas

BSDF

Standard shader output.

Referencias

Este shader es una implementación del paper de Chiang et al. [CBTB16], que se usó en la película de Disney, «Zootopia»®

CBTB16(1,2,3)

Chiang, M. J. , Bitterli, B. , Tappan, C. and Burley, B. (2016), A Practical and Controllable Hair and Fur Model for Production Path Tracing. Computer Graphics Forum, 35: 275-283. doi:10.1111/cgf.12830

EFHLA11

d’Eon, E. , Francois, G. , Hill, M. , Letteri, J. and Aubry, J. (2011), An Energy‐Conserving Hair Reflectance Model. Computer Graphics Forum, 30: 1181-1187. doi:10.1111/j.1467-8659.2011.01976.x