WŁOS · R, TT, TRT osobnoARNOLD · standard_hair, melaninaRENDERMAN · PxrMarschnerHair / LamaHairChiang
Rozdział 19 / Materiały i detal

Tkaniny i włosy

Włos nie ma jednego koloru — ma dwa rozproszenia policzone osobno, a satyna świeci inaczej niż bawełna z powodu jednego parametru anizotropii.

TL;DR
Etap: Fizyka włosa

Dlaczego jedno włókno potrzebuje dwóch rozproszeń

Włókno włosa to cienki, w przybliżeniu walcowaty, częściowo przezroczysty dielektryk: kutykula (przezroczyste, nachodzące na siebie łuski) otacza zabarwiony rdzeń. Światło trafiające w włókno rozdziela się na fizycznie różne ścieżki — model Marschnera (2003), na którym opierają się oba renderery, nazywa je wprost:

Zwykły BRDF potrafi opisać tylko odbicie od powierzchni — nie ma w nim miejsca na światło, które wnika w ośrodek, częściowo się w nim pochłania, i wraca gdzie indziej. To dokładnie ten sam strukturalny powód, dla którego skóra potrzebuje BSSRDF zamiast BRDF (Rozdziały 16–17) — różnica jest w geometrii problemu: rozpraszanie podpowierzchniowe skóry to dyfuzja po powierzchni trójwymiarowej, rozpraszanie włosa to transport wzdłuż jednowymiarowego przekroju włókna, stąd wyspecjalizowany model wielolobowy zamiast pełnego rozwiązania wolumetrycznego.

Etap: Arnold

standard_hair: trzy loby, dwie drogi do koloru

standard_hair (następca starszego hair, inny model, parametry się nie przenoszą) wystawia R/TT/TRT jako trzy oddzielnie sterowalne loby: Specular (R — pierwotne odbicie), Specular2 (TRT — drugi, barwny błysk), Transmission (TT — światło przechodzące przez włókno). Kolor da się ustawić dwiema drogami: wprost przez base_color (barwi wszystkie trzy loby jednakowo, jak farba/dye), albo fizycznie umotywowanym zestawem melaniny — melanin (0 = blond/białe, ~0,5 = brąz, 1 = czarne), melanin_redness (przesunięcie w stronę rudości) i melanin_randomize (losowa wariacja melaniny per włos, żeby uniknąć jednolitego, „plastikowego” koloru całej fryzury).

Etap: RenderMan

Dwa shadery włosów naraz

RenderMan ma w tej chwili dwa współistniejące shadery włosów, nie jeden. PxrMarschnerHair to bezpośrednia implementacja modelu Marschnera — dosłownie nazywa swoje parametry specularGainR, specularGainTRT, specularGainTT, nawet specularGainGLINTS (dodatkowy, wąski komponent połysku), plus specularConeAngle i specularEccentricity sterujące kształtem loba. Kolor nie siedzi bezpośrednio w tym node'zie — melanina trafia tam z osobnego node'a wzorca, PxrHairColor, którego wyjście zasila zarówno diffuseColor, jak i specularColor.

LamaHairChiang to nowszy, dziś rekomendowany do produkcji shader, oparty na reparametryzacji modelu Marschnera autorstwa Chianga i in. (2016, Disney Animation) — ten sam fizyczny model R/TT/TRT, ale przełożony na suwaki, które łatwiej stroić na oko, z poprawioną zbieżnością i bardziej „rurkowatą” (tube-like) odpowiedzią specularną bliższą temu, jak faktycznie zachowuje się cylindryczne włókno.

PojęcieArnold (standard_hair)RenderMan
Odbicie od kutykuli (R)SpecularPxrMarschnerHair: specularGainR
Transmisja przez rdzeń (TT)TransmissionPxrMarschnerHair: specularGainTT
Drugi błysk (TRT)Specular2PxrMarschnerHair: specularGainTRT
Kolor melaninymelanin, melanin_rednessosobny node PxrHairColor
Shader produkcyjny „dziś”standard_hairLamaHairChiang (reparametryzacja Chianga 2016)
Etap: Tkaniny

Sheen/Fuzz to nie to samo co anizotropia satyny

Dwa różne zjawiska optyczne dają dwa różne „błyski” tkanin, i łatwo je pomylić. Sheen (Arnold: sheen, sheen_color, sheen_roughness) i Fuzz (PxrSurface, Rozdział 15) to miękka, rozproszona poświata pod kątem, przybliżająca zbiorowy efekt mnóstwa mikroskopijnych włókien sterczących z powierzchni — aksamit i kurz na tkaninie to podręcznikowe przypadki. To przybliżenie na poziomie BRDF, nie symulacja rzeczywistej geometrii włókien.

Kierunkowy, ostry pas błysku na satynie czy jedwabiu to zupełnie inny mechanizm: anizotropowy specular z Rozdziału 18, dokładnie ten sam specular_anisotropy/Anisotropy sterowany mapą przepływu tangenty, tylko podążającą za kierunkiem splotu tkaniny (osnowa/wątek) zamiast za rysami szczotkowania metalu. Bawełna zwykle nie ma żadnego z tych dwóch efektów w wyraźnej formie — pozostaje blisko czystego diffuse, może z odrobiną sheen od drobnych, sterczących włókien na powierzchni, bez śladu kierunkowej anizotropii, bo nie ma regularnego splotu, który mógłby ją wywołać.

Słowniczek
R / TT / TRT
Trzy ścieżki światła w modelu Marschnera dla włosa: odbicie od kutykuli, transmisja przez rdzeń, wewnętrzne odbicie i powrót.
Melanina
Fizycznie umotywowany parametr koloru włosa — zamiast wprost barwić, steruje ilością pigmentu pochłaniającego światło w rdzeniu.
Model Chianga (2016)
Reparametryzacja modelu Marschnera pod bardziej artystyczne, intuicyjne suwaki — podstawa LamaHairChiang.
Sheen / Fuzz
Miękka, rozproszona poświata pod kątem, przybliżenie mikroskopijnych włókien — nie to samo co kierunkowa anizotropia.