Principled Hair BSDF
Solo Cycles
The Principled Hair BSDF is a physically-based, easy-to-use shader for rendering hair and fur.
Truco
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 RVA 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).
- Melanin (Melanina)
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))\]- Melanin Redness (Rojez de Melanina)
Relación de feomelanina sobre eumelanina. Rango \([0, 1]\) equivalente a \([0\%, 100\%]\).
Consejo
La fórmula de la relación es : \(eumelanina = Melanin*(1.0-MelaninRedness)\), \(feomelanina = Melanin*MelaninRedness\).
Las cantidades resultantes son convertidas (tras la aleatorización, si se especifica) a concentración de absorción a través de la siguiente fórmula (sección 6.1 de [EFHLA11], ajustada para el rango \([0, 1]\)):
\[\begin{split}\sigma_{a} = eumelanina * \left[\begin{matrix} 0.506 \\ 0.841 \\ 1.653 \\ \end{matrix}\right] + feomelanina * \left[\begin{matrix} 0.343 \\ 0.733 \\ 1.924 \\ \end{matrix}\right]\end{split}\]- Tint (Tinte)
Color usado para teñir el pelo tras aplicar el pigmento de melanina. No está sujeto a aleatorización. Puede deshabilitarse estableciendo el color a blanco.
Consejo
Esto se convierte mediante el mapeo de Color arriba, y añadiéndose al coeficiente de absorción de la concentración de melanina.
- Absorption Coefficient (Coeficiente de Absorción)
Coeficiente de atenuación \(\sigma\).
- Roughness (Rugosidad)
Especifica cuánto se suavizarán los destellos en la dirección de la hebra de pelo. Valores demasiado bajos suavizarán el pelo hasta el punto de que parezca casi metálico, haciendo que los destellos parezcan Fireflies (luciérnagas); mientras que dándole valores demasiado altos resultará en una apariencia de tipo Lambert.
- Radial Roughness (Rugosidad Radial)
Specify how much the glints are smoothed in the direction of the hair normal. Too low values will concentrate the glint; while setting it too high will spread the light across the width of the strand.
Consejo
Matemáticamente, este parámetro es mapeado al factor de escala de la distribución logística \(s\) (section 4.1 of [CBTB16]).
- Coat (Capa)
Simula una capa brillante de pelaje, reduciendo la Rugosidad al factor dado, solo para el primer rebote de luz (difusa). El rango \([0, 1]\) es equivalente a una reducción de \([0\%, 100\%]\) de la Rugosidad original.
- IOR
Índice de refracción (IOR) que define cuánto cambia de dirección el rayo. En 1.0 los rayos pasan a través como en un material transparente; valores superiores producen más refracción. El valor por defecto es \(1.55\).
- Desplazamiento
Inclina el destello del pelo incrementando el ángulo de las escamas de la cutícula del pelo con respecto a la hebra de pelo. El pelo humano tiene normalmente valores bajos.
- Random Color (Color Aleatorio)
Para cada hebra, varía la concentración de melanina en \(RandomFactor\). El rango \([0, 1]\) es equivalente al \([0\%, 100\%]\) de la concentración inicial de melanina.
Consejo
La concentración de melanina es multiplicada por \(randomFactor\), donde \(randomFactor = 1.0 + 2.0*(Random - 0.5) * RandomColor\).
- Random Roughness (Rugosidad Aleatoria)
Para cada hebra, varía ambos valores de Rugosidad en \(RandomFactor\). El rango \([0, 1]\) es equivalente al \([0\%, 100\%]\) de los valores iniciales de rugosidad.
Consejo
La fórmula aplicada es la misma que en Random Color.
- Aleatorio
Fuente de los números aleatorios. Si no hay ningún nodo conectado aquí, se instancia automáticamente con el valor obtenido de
.
Propiedades
- Color Parametrization (Parametrización de Color)
El shader proporciona tres formas diferentes, o parametrizaciones, para colorear las hebras del cabello.
- Direct Coloring (Coloración Directa)
Al elegir el color RVA deseado, el shader se aproximará al coeficiente de absorción necesario (mas abajo).
- Melanin Concentration (Concentración de Melanina)
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 o negro) y feomelanina (cabello rojo). La cantidad se especifica en la entrada Melanin y la relación entre ellas en Melanin Redness. Incrementar las concentraciones oscurece el cabello (los siguientes son con Melanin Redness \(1\)):
Blanco (Melanin \(0\))
Rubio (Melanin \(0.25\))
Rojizo (Melanin \(0.5\))
Marrón (Melanin \(0.75\))
Negro (Melanin \(1\))
Además, las entradas Tint permiten teñir el cabello con el color deseado.
- Absorption Coefficient (Coeficiente de Absorción)
Especifica el coeficiente de atenuación \(\sigma_{a}\), según lo aplicado por la Ley de Beer-Lambert. Este modo está destinado principalmente a usuarios técnicos que desean utilizar coeficientes de la literatura sin ningún tipo de conversión.
Salidas
- BSDF
Salida estándar de shader.
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