PRIMITIVE · curveSHADING AXIS · T (tangent)PATHS · R / TT / TRTMODEL · Marschner
Rozdział 20 / Specjalizacje

Włosy, sierść i krzywe

Wszystko od Rozdziału 4 zakładało trójkąty. Ludzka głowa ma około stu tysięcy włosów — trójkątowanie każdego byłoby szaleństwem. Włosy renderuje się inaczej: jako krzywe, cieniowane względem kierunku wzdłuż włosa, nie normalnej powierzchni.

TL;DR
Pass: Prymityw

Krzywa, nie trójkąt

Włos reprezentuje się jako krzywa (najczęściej Béziera) z promieniem — cienka „rurka” wygięta w przestrzeni. Test przecięcia promienia z taką rurką jest osobnym prymitywem, obok sfery z Rozdziału 2 i trójkąta z Rozdziału 4: sprawdzasz odległość promienia od osi krzywej w każdym punkcie, porównując z promieniem włosa. BVH z Rozdziału 13 działa identycznie — każdy segment krzywej dostaje własne AABB, tak jak każdy trójkąt.

Triangle.N.vs.hair.Tdifferent shading axis
TRÓJKĄT: NORMALNA N WŁOS: TANGENTA T N T
Trójkąt cieniujesz względem N, sterczącej z płaskiej powierzchni. Włos — względem T, biegnącej wzdłuż krzywej.
Pass: Modele

Kajiya-Kay i Marschner

Najprostszy model (Kajiya-Kay, 1989) traktuje włos jak nieskończenie cienki cylinder: diffuse i specular liczone względem T, analogicznie do Lamberta i Blinn-Phonga z Rozdziału 5, tylko z sin kąta między promieniem a T w miejsce cos kąta względem N. Wystarcza do przekonującej sierści z daleka, ale nie oddaje charakterystycznego, kolorowego błysku prawdziwych włosów z bliska.

Model Marschnera (2003) idzie głębiej: włos to nie matowy cylinder, a przezroczyste włókno z rdzeniem, w którym światło może się odbić na powierzchni albo wniknąć do wnętrza — dokładnie ta sama fizyka co załamanie z Rozdziału 7, tylko w cylindrycznym przekroju.

Marschner.pathsR / TT / TRT
R TT TRT przekrój włosa
R daje pierwszy błysk, TRT drugi (przesunięty, kolorowy) — to ich suma tworzy charakterystyczny, podwójny highlight na włosach.
Z praktyki

Systemy włosów w XGen (Maya), Houdinim czy Blenderze generują krzywe, ale renderer (Arnold, RenderMan) i tak zamienia je na dedykowany prymityw krzywej z własnym BVH — nie na trójkątowaną „wstążkę”, która nie dałaby poprawnego cieniowania Marschnera.

Sto tysięcy włosów, każdy z kilkoma segmentami krzywej, to i tak miliony prymitywów do przetestowania — dlatego sierść i włosy są jednym z najdroższych elementów renderu, mimo że każdy pojedynczy włos jest niemal niewidzialny.

↓ Dodatek I — dwa różne budżety kosztu geometrii
Słowniczek
Krzywa (curve primitive)
Prymityw geometrii: cienka rurka wzdłuż krzywej Béziera.
Tangenta (T)
Kierunek wzdłuż włosa; oś odniesienia dla cieniowania, zamiast normalnej.
Model Kajiya-Kay
Prosty model diffuse+specular dla włosa jako matowego cylindra.
Model Marschnera
Model rozdzielający światło na ścieżki R, TT, TRT przez przekrój włosa.
Idź głębiej
Dodatek I — Złożoność geometrii a obciążenie