BSDF Principled Hair
Cycles uniquement
Le Principled Hair BSDF est un shader basé sur la physique et facile à utiliser pour le rendu des cheveux et de la fourrure.
Astuce
Les cheveux réalistes doivent avoir un minimum de variance entre chaque mèche. Le shader permet cela en spécifiant deux valeurs, Random Color et Random Roughness, qui remappent les valeurs de mélanine/rugosité spécifiées sur la plage \(Color/Roughness \pm Randomization\%\).
Entrées
- Color
La couleur RVB du brin. Uniquement utilisé en coloration directe.
Indication
La couleur choisie est convertie en un coefficient d’absorption avec la formule suivante (section 4.2 of [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}}\]où \(\beta_{N}\) est la rugosité radiale des cheveux après application de la randomisation (si spécifié).
- Melanin (mélanine)
Quantité absolue de pigment. Plage \([0, 1]\) équivalente à \([0\%, 100\%]\).
Indication
Il s’agit d’un mappage linéaire vers la fonction exponentielle sous-jacente:
\[melanin\_qty = -\ln(\max(1.0 - Melanin, 0.0001))\]- Mélanine Rousse
Rapport de la phéomélanine à l’eumélanine. Plage \([0, 1]\) équivalente à \([0\%, 100\%]\).
Indication
La formule du rapport est: \(eumelanin = Melanin*(1.0-MelaninRedness)\), \(pheomelanin = Melanin*MelaninRedness\).
Les quantités résultantes sont converties (après randomisation, si spécifié) en concentration d’absorption via la formule suivante (section 6.1 of [EFHLA11], ajustée pour la plage \([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}\]- Tint (Teinte)
Couleur utilisée pour teindre les cheveux après application du pigment mélanique. N’est pas soumis à la randomisation. Peut être désactivé en définissant la couleur sur blanc.
Indication
C’est converti via la cartographie des couleurs ci-dessus et ajouté au coefficient d’absorption de la concentration de mélanine.
- Absorption Coefficient
Coefficient d’atténuation \(\sigma\).
- Roughness (Rugosité)
Précise à quel point les reflets sont lissés dans le sens de la tige du cheveu. Des valeurs trop faibles vont lisser les cheveux au point d’avoir l’air presque métalliques, faisant ressembler les reflets à des Fireflies; un réglage trop élevé donnera un aspect lambertien.
- Radial Roughness
Spécifie à quel point les reflets sont lissés dans le sens de la normale des cheveux. Des valeurs trop faibles concentreront le reflet; en le fixant trop haut, la lumière sera diffusée sur toute la largeur du brin.
Indication
Mathématiquement, ce paramètre est mappé au facteur d’échelle de la distribution logistique (section 4.1 de [CBTB16]).
- Coat
Simule une fourrure brillante, en réduisant la Roughness au facteur donné uniquement pour le premier rebond léger (diffus). Plage \([0, 1]\) équivalente à une réduction de \([0\%, 100\%]\) de la rugosité d’origine.
- IOR (Index of Refraction)
Indice de réfraction (IOR) définissant la valeur du changement de direction du rayon. À 1,0, les rayons traversent directement comme dans un matériau transparent; des valeurs plus élevées donnent plus de réfraction. La valeur par défaut est 1,55.
- Offset
Incline le reflet du cheveu en augmentant l’angle des écailles de la cuticule du cheveu par rapport à la tige du cheveu. Les cheveux humains ont généralement des valeurs faibles.
- Random Color
Pour chaque brin, faire varier la concentration de mélanine par \(RandomFactor\). Plage \([0, 1]\) équivalente à \([0\%, 100\%]\) de la concentration initiale de mélanine.
Indication
La concentration de mélanine est multipliée par \(randomFactor\), où \(randomFactor = 1.0 + 2.0*(Random - 0.5) * RandomColor\).
- Random Roughness
Pour chaque brin, faire varier les deux valeurs de rugosité par \(RandomFactor\). Plage \([0, 1]\) équivalente à \([0\%, 100\%]\) des valeurs de rugosité initiales.
Indication
La formule appliquée est la même que pour Random Color.
- Random
Source de nombres aléatoires. Si aucun nœud n’est connecté ici, il est automatiquement instancié avec la valeur obtenue à partir de
.
Propriétés
- Color Parametrization
Le shader propose trois manières différentes ou paramétrisations, pour colorer les mèches de cheveux.
- Direct Coloring:
Choisir la couleur RVB souhaitée et le shader se rapprochera du coefficient d’absorption nécessaire (ci-dessous).
- Melanin Concentration:
Ce mode définit la couleur comme la quantité et le rapport des pigments que l’on trouve couramment dans les cheveux et la fourrure, l’eumélanine (prévalente dans les cheveux bruns-noirs) et la phéomélanine (cheveux roux). La quantité est spécifiée dans l’entrée Melanin, et le rapport entre eux dans Melanin Redness. Des concentrations croissantes assombrissent les cheveux (ce qui suit avec Melanin Redness \(1\)):
Blanc (Melanin \(0\))
Blonde (Melanin \(0.25\))
Rousse (Melanin \(0.5\))
Brun (Melanin \(0.75\))
Noir (Melanin \(1\))
De plus, les entrées Tint permettent de teindre les cheveux avec la couleur souhaitée.
- Absorption Coefficient:
Spécifie le coefficient d’atténuation \(\sigma_{a}\), telle qu’appliquée par Beer-Lambert law. Ce mode est principalement destiné aux utilisateurs techniques qui souhaitent utiliser des coefficients de la littérature sans aucune sorte de conversion.
Sorties
- BSDF
Sortie Shader standard.
References
Ce shader est une implémentation de l’article de Chiang et al. [CBTB16], qui a été utilisé dans le film de Disney, “Zootopia”®.
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
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