Rozpraszanie podpowierzchniowe - Subsurface scattering

Bezpośrednie rozpraszanie powierzchniowe (po lewej) plus rozpraszanie podpowierzchniowe (po środku) tworzy ostateczny obraz po prawej stronie.
Wygenerowane komputerowo rozpraszanie podpowierzchniowe w Blenderze
Rzeczywiste podpowierzchniowe rozpraszanie światła na zdjęciu ludzkiej dłoni

Rozpraszanie podpowierzchniowe ( SSS ), znane również jako podpowierzchniowy transport światła ( SSLT ), to mechanizm transportu światła, w którym światło, które przenika powierzchnię półprzezroczystego obiektu, jest rozpraszane przez interakcję z materiałem i opuszcza powierzchnię w innym punkcie. Światło na ogół przenika przez powierzchnię i odbija się kilka razy pod nieregularnymi kątami wewnątrz materiału, po czym przechodzi z powrotem z materiału pod innym kątem niż miałoby to miejsce, gdyby zostało odbite bezpośrednio od powierzchni. Rozpraszanie podpowierzchniowe jest ważne dla realistycznej grafiki komputerowej 3D , niezbędnej do renderowania materiałów takich jak marmur , skóra , liście , wosk i mleko . Jeśli rozpraszanie podpowierzchniowe nie zostanie wdrożone, materiał może wyglądać nienaturalnie, jak plastik lub metal.

Techniki renderowania

Większość materiałów używanych obecnie w grafice komputerowej czasu rzeczywistego uwzględnia tylko interakcję światła na powierzchni przedmiotu. W rzeczywistości wiele materiałów jest lekko prześwitujących: światło wpada na powierzchnię; jest wchłaniany, rozpraszany i ponownie emitowany - potencjalnie w innym miejscu. Skóra jest dobrym przykładem; tylko około 6% odbicia jest bezpośrednie, 94% pochodzi z rozpraszania podpowierzchniowego. Nieodłączną właściwością materiałów półprzezroczystych jest absorpcja. Im dalej przez materiał przemieszcza się światło, tym większa jego część jest absorbowana. Aby zasymulować ten efekt, należy obliczyć odległość, na jaką światło przebyło materiał.

SSS na podstawie mapy głębokości

Szacowanie głębokości za pomocą map głębokości

Jedną z metod oszacowania tej odległości jest użycie map głębi w sposób podobny do mapowania cieni . Scena jest renderowana z punktu widzenia światła na mapę głębi, dzięki czemu zapisywana jest odległość do najbliższej powierzchni. Głębokość mapa jest następnie rzutowany na niej za pomocą standardowego odwzorowania rzutowe tekstury i scena RE-renderowane. W tym przejściu, podczas cieniowania danego punktu, odległość od światła w punkcie, w którym promień wpadł na powierzchnię, można uzyskać poprzez proste sprawdzenie tekstury. Odejmując tę ​​wartość od punktu, w którym promień opuścił obiekt, możemy oszacować odległość, jaką światło przebyło przez obiekt.

Miarę odległości uzyskaną tą metodą można wykorzystać na kilka sposobów. Jednym z takich sposobów jest użycie go do bezpośredniego indeksowania stworzonej przez artystę tekstury 1D, która spada wykładniczo wraz z odległością. To podejście, w połączeniu z innymi, bardziej tradycyjnymi modelami oświetlenia, pozwala na tworzenie różnych materiałów, takich jak marmur , jadeit i wosk .

Potencjalnie mogą pojawić się problemy, jeśli modele nie są wypukłe, ale można zastosować peeling wgłębny, aby uniknąć problemu. Podobnie, peeling wgłębny można wykorzystać do uwzględnienia różnych gęstości pod powierzchnią, takich jak kości lub mięśnie, w celu uzyskania dokładniejszego modelu rozpraszania.

Jak widać na zdjęciu woskowej główki po prawej stronie, światło nie jest rozpraszane podczas przechodzenia przez przedmiot przy użyciu tej techniki; tylne funkcje są wyraźnie widoczne. Jednym z rozwiązań jest pobranie wielu próbek w różnych punktach na powierzchni mapy głębokości. Alternatywnie można zastosować inne podejście do aproksymacji, znane jako dyfuzja przestrzeni tekstur .

Dyfuzja przestrzeni tekstury

Jak zauważono na początku tego rozdziału, jednym z bardziej oczywistych efektów rozpraszania podpowierzchniowego jest ogólne rozmycie światła rozproszonego. Zamiast dowolnie modyfikować funkcję rozproszenia, dyfuzję można dokładniej modelować, symulując ją w przestrzeni tekstur . Technika ta była pionierem w renderowaniu twarzy w The Matrix Reloaded , ale jest również używana w dziedzinie technik renderowania w czasie rzeczywistym.

Metoda otwiera siatkę obiektu za pomocą Vertex Shader, najpierw obliczając oświetlenie na podstawie oryginalnych współrzędnych wierzchołków. Wierzchołki są następnie odwzorowywane przy użyciu współrzędnych tekstury UV jako pozycji wierzchołka na ekranie, odpowiednio przekształconej z zakresu [0, 1] współrzędnych tekstury do zakresu [-1, 1] znormalizowanych współrzędnych urządzenia. Oświetlając w ten sposób nieopakowaną siatkę, otrzymujemy obraz 2D przedstawiający oświetlenie obiektu, który można następnie przetworzyć i ponownie zastosować do modelu jako mapę światła . Aby zasymulować dyfuzję, jasną teksturę mapy można po prostu rozmyć. Samo renderowanie oświetlenia do tekstury o niższej rozdzielczości zapewnia pewne rozmycie. Stopień rozmycia wymaganego do dokładnego modelowania rozpraszania podpowierzchniowego na skórze jest nadal przedmiotem aktywnych badań, ale wykonanie tylko jednego rozmycia słabo modeluje rzeczywiste efekty. Aby naśladować charakter dyfuzji zależny od długości fali, próbki użyte podczas rozmycia (Gaussa) mogą być ważone kanałowo. To trochę proces artystyczny. W przypadku ludzkiej skóry najszersze rozproszenie występuje w kolorze czerwonym, następnie zielonym, a niebieskie ma bardzo małe rozproszenie.

Główną zaletą tej metody jest niezależność od rozdzielczości ekranu; cieniowanie jest wykonywane tylko raz dla każdego tekselu w mapie tekstur, a nie dla każdego piksela obiektu. Oczywistym wymaganiem jest zatem, aby obiekt miał dobre odwzorowanie UV, ponieważ każdy punkt na teksturze musi być odwzorowany tylko na jeden punkt obiektu. Ponadto użycie dyfuzji przestrzeni tekstur zapewnia jeden z kilku czynników, które przyczyniają się do miękkich cieni, łagodząc jedną z przyczyn niedoboru realizmu w mapowaniu cieni .

Zobacz też

Bibliografia

Linki zewnętrzne