GKIW Moduł 9: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 24: | Linia 24: | ||
- '''Metoda bilansu energetycznego'''. | - '''Metoda bilansu energetycznego'''. | ||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd14.png|thumb|500px]] | |||
|valign="top"| | |||
'''Ogólne równanie renderingu Kajiya''' | |||
Transport światła odbywa się na scenie na drodze wielokrotnych odbić od poszczególnych fragmentów powierzchni. Ogólne równanie renderingu opisuje zależność między oświetleniem wzajemnym elementarnych fragmentów powierzchni. Rozpatrując dwa fragmenty <math>x</math> i <math>x'</math> określamy transport od <math>x'</math> do <math>x</math>. Równanie uwzględnia przy tym zarówno emisję własną fragmentu <math>x'</math> jak i odbicie przez <math>x'</math>. Takie sformułowanie daje możliwość zbudowania zależności rekurencyjnej między wszystkimi fragmentami sceny. Z drugiej strony jeśli podzielić całą scenę na fragmenty elementarne, to uwzględnienie równania renderingu wymaga analizy „każdy z każdym” tych fragmentów. Prowadzi to oczywiście do złożoności kwadratowej problemu oświetlenia globalnego. | |||
Równanie wizualizacji zaproponowane przez Kajiya z 1986 roku pozwala prześledzić rekurencyjnie drogę promieni i wyznaczyć intensywności oświetlenia określonych powierzchni. Uwzględnienie wielkości świetlnych doprowadziło do powstania luminancyjnego równania wizualizacji opisywanego przez Cohena w 1993. Pozwala prowadzić obliczenia w grafice komputerowej z uwzględnieniem zasad fizyki. Po uwzględnieniu wielkości świetlnych luminancyjne równanie wizualizacji wyznacza rozkład luminancji. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd25.png|thumb|500px]] | |||
|valign="top"| | |||
'''Typy odbić wzajemnych''' | |||
Dobrą klasyfikacją zachowania się algorytmów oświetlenia globalnego jest klasyfikacja pokazująca w jaki sposób są implementowane wzajemne odbicia między dwiema powierzchniami. Biorąc pod uwagę dwa rodzaje odbicia: rozproszone i kierunkowe, możemy mieć do czynienia z czterema możliwościami odbić wzajemnych. | |||
'''Kierunkowe-kierunkowe''' – jest to implementowane przez klasyczną metodę śledzenia promieni (Whitteda). I praktycznie metoda klasyczna śledzenia nie pozwala na opis innych odbić wzajemnych. | |||
'''Rozproszone-rozproszone''' – jest to implementowane przez klasyczną metodę energetyczną. Podobnie jak śledzenie, klasyczna metoda energetyczna nie pozwalana na implementację innych wariantów odbić. | |||
'''Rozproszone-kierunkowe (także kierunkowe-rozproszone)''' – może być implementowane w nowszych rozwiązaniach metody śledzenia. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd30.png|thumb|500px]] | |||
|valign="top"| | |||
'''Metoda śledzenia promieni I''' | |||
Traktując model kamery jako mechanizm realizacji rzutowania perspektywicznego, można zauważyć, że barwa danego piksela ekranu powstaje dzięki światłu docierającemu do niego z kierunku wynikającego z rzutowania. Można zatem prześledzić „drogę światła”, które dociera do piksela i na tej podstawie wyznaczyć barwę. | |||
'''Metoda śledzenia promieni''' polega na analizie przebiegu promieni między obserwatorem a źródłem światła. Drogę promieni opisuje drzewo przecięć, którego węzły reprezentują zjawiska jakie zachodzą między promieniem a powierzchniami obiektów. Korzeń drzewa odpowiada promieniowi docierającemu do obserwatora zaś liście — źródłom światła. Zjawiska odbicia, przenikania i pochłaniania opisane są odpowiednimi modelami matematycznymi. Wyznaczenie barwy danego piksela polega na analizie odpowiedniego drzewa. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd31.png|thumb|500px]] | |||
|valign="top"| | |||
'''Metoda śledzenia promieni II''' | |||
Analizę „drogi światła” prowadzi się od obserwatora (kamery – środka rzutowania) do obiektów na scenie – to znaczy w kierunku przeciwnym do rzeczywistego rozchodzenia się światła. Stąd czasami metodę nazywa się metodą (śledzenia) promienia odwrotnego. | |||
Każde napotkanie obiektu przez promień (promień pierwotny) wymaga analizy. Zawsze jest wyznaczany promień odbity o kierunku zależnym od powierzchni obiektu. Jeśli obiekt jest przezroczysty, to wyznaczany jest promień załamany (promień przechodzący przez obiekt) o kierunku zależnym od właściwości materiałowych obiektu. Oba promienie: odbity i załamany nazywane są promieniami wtórnymi. Zawsze są również wyznaczane tak zwane promienie cienia (czasami nazywane promieniami oświetlenia) w kierunku każdego źródła światła. Promienie cienia pozwalają wyznaczyć oświetlenie danego elementu obiektu przez źródła światła, oczywiście jeśli na drodze promienia cienia do źródła światła jest inny obiekt nieprzezroczysty (źródło jest zasłonięte) to oświetlenie nie jest liczone. Promienie wtórne mogą wskazać następne przecięcia z obiektami, stając się wtedy promieniami pierwotnymi kolejnej analizy. Tak stworzone drzewo promieni jest obliczane metodą zstępującą, Barwa każdego węzła jest liczona jako funkcja barwy potomków. Gałąź w takim drzewie kończy się, gdy promienie wtórne (odbite i załamane) nie przecinają się z kolejnymi obiektami. | |||
Możne też być stosowane inne zakończenie procesu budowy i/lub analizy drzewa: gdy osiągnięto określony/zadany poziom rekurencji, albo po prostu gdy zabrakło pamięci na następne poziomy. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd32.png|thumb|500px]] | |||
|valign="top"| | |||
'''Metoda śledzenia promieni III''' | |||
Istnieje kilka różnych wersji realizacji tego algorytmu: | |||
- '''Śledzenie klasyczne (Whitteda)''', polegające na analizie pojedynczego promienia poczynając od obserwatora - odwrotnie niż rzeczywiste rozchodzenie się światła, | |||
- '''Śledzenie stochastyczne''', kiedy promienie wysyłane są na zasadzie próbkowania pewnego obszaru, również odbicie (załamanie) światła jest modelowane na zasadzie funkcji prawdopodobieństwa, która określa w którym kierunku odbije się (załamie) promień. | |||
- '''Śledzenie dwukierunkowe''', kiedy analiza jest przeprowadzana w obu kierunkach: poczynając od obserwatora i poczynając od źródła światła. | |||
- '''Mapowanie fotonowe (Jensena)''' jest śledzeniem dwukierunkowym rozszerzonym o tworzenie pośrednich źródeł światła na powierzchniach rozpraszających. | |||
Rozwój możliwości metody śledzenia promieni polega na dodawaniu coraz bardziej skomplikowanych przypadków, które mogą się pojawić na drodze promienia pomiędzy źródłem a obserwatorem. Najprościej jest opisać przebieg odbicia kierunkowego (lustrzanego), najtrudniej wielokrotne odbicie rozproszone i pośrednie oddziaływania typu składowej kierunkowej padającej na powierzchnię rozpraszającą. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd33.png|thumb|500px]] | |||
|valign="top"| | |||
'''Śledzenie klasyczne (Whitteda)''' | |||
Śledzenie klasyczne (Whitteda) odpowiada dokładnie opisanemu procesowi budowy i analizy drzewa promieni. | |||
Warto zauważyć, że opisany sposób analizy drzewa promieni odpowiada tak naprawdę kierunkowemu rozchodzeniu się światła. Oznacza to, że dobre efekty takiej analizy uzyskać można dla obiektów, które charakteryzują się właśnie kierunkowym charakterem odbicia i przenikania. Pierwsze rysunki wygenerowane przez Whitteda wzbudziły podziw gdyż pokazywały w sposób perfekcyjny załamanie światła przez sferyczne szklane obiekty. | |||
Podstawowym problemem śledzenia klasycznego ( i tak naprawdę każdej późniejszej modyfikacji metody) jest szybkie wyznaczenie przecięcia promienia z obiektem. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd34.png|thumb|500px]] | |||
|valign="top"| | |||
'''Rzeczywiste (niepunktowe) źródło światła''' | |||
Problem z opisem rzeczywistych obiektów za pomocą klasycznego śledzenia Whitteda zaczyna się pojawiać gdy weźmiemy pod uwagę rzeczywiste źródło światła (o skończonych – niepomijalnych rozmiarach). Analiza oświetlenia na drodze jednego promienia przestaje odpowiadać rzeczywistości. Osiągnięcie obrazu miękkiego półcienia jest całkowicie niemożliwe. | |||
Rozpatrując fragment powierzchni oświetlony bezpośrednio przez źródło powierzchniowe i biorąc pod uwagę równanie wizualizacji Kajiya, można wykazać, że luminancja <math>Lx(\breve{V} )</math> postrzegana na powierzchni <math>x</math> z kierunku wektora <math>\breve{V}</math> będzie opisana przedstawionym równaniem. Poprawny wynik może dać tylko analiza uwzględniająca całkowanie powierzchni źródła światła. | |||
Przykładem dobrej aproksymacji przy wykorzystaniu klasycznej metody śledzenia jest model Verbecka i Greenberga z 1984 roku. Zakłada on, że źródło powierzchniowe jest przybliżone zbiorem źródeł punktowych rozłożonych na powierzchni źródła. | |||
|} | |||
---- | |||
{| border="0" cellpadding="4" width="100%" | |||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd35.png|thumb|500px]] | |||
|valign="top"| | |||
'''Całkowanie Monte Carlo''' | |||
Rozwiązanie analityczne równania renderingu praktycznie nie ma sensu. Autorzy publikacji dotyczących tego tematu czasami sugerują możliwość rozwiązania analitycznego dla wybranego; wydzielonego i wyizolowanego problemu obejmującego na przykład pojedyncze elementy odbijające i jedno źródło światła o prostym opisie geometrycznym. Dla bardziej skomplikowanych scen trudności pojawiają się już na etapie opisu wzajemnego zasłaniania i kształtu jednego elementu widzianego z powierzchni drugiego. | |||
Dobrym rozwiązanie w takiej sytuacji – rozwiązaniem uniwersalnym jest zastosowanie całkowania Monte Carlo. Na przykład dla problemu pojedynczego powierzchniowego źródła światła można wygenerować zbiór promieni biegnących w kierunku odwrotnym od obserwatora do powierzchni i dalej odbijających się zgodnie z pewnym prawdopodobieństwem zależnym od właściwości odbiciowych powierzchni. Promienie odbite trafią (lub nie) w określony punkt powierzchni źródła, z którym to punktem będzie związana określona luminancja i barwa. Jeśli na podstawie analizy zachowania się takich promieni wyznaczymy wartość luminancji postrzeganej przez obserwatora to zadanie jest rozwiązane. Taką właśnie możliwość daje w tym przypadku całkowanie Monte Carlo. | |||
W najprostszym przypadku jednowymiarowym, jeśli chcemy obliczyć całkę | |||
<math>I = \int_{0}^{1}h(y)dy</math> | |||
to możemy skorzystać z N liczb losowych o rozkładzie równomiernym <math>x_1, x_2, ,,,x_N</math>, stanowiących pewną realizację zmiennej losowej <math>X</math>. Wtedy | |||
<math>I \approx \frac{1}{N} \sum_{i=1}^N h(x_i)</math> | |||
Oczywiście takie proste całkowanie nie byłoby przydatne, gdyż w praktyce problem zachodzi w pewnym przedziale <math>S</math> i jednocześnie wymagane jest losowanie próbek o rozkładzie innym niż równomierny. Podane wzory określają takie rozwiązanie. | |||
Warto zwrócić uwagę na zależności dotyczące błędu estymacji całki metodą Monte Carlo. Można pokazać, że wariancja estymacji jest proporcjonalna do <math>\frac{1}{\sqrt{N}}</math> natomiast odchylenie standardowe do <math>\frac{1}{\sqrt{N}}</math>. W związku z tym, jeśli chcemy zmniejszyć błąd o połowę to <math>N</math> musi wzrosnąć czterokrotnie. | |||
|} | |} | ||
---- | ---- | ||
Linia 138: | Linia 256: | ||
Techniki wyboru promieni można podzielić na dwie grupy: zastosowanie brył otaczających i podział przestrzeni. | Techniki wyboru promieni można podzielić na dwie grupy: zastosowanie brył otaczających i podział przestrzeni. | ||
W pierwszym przypadku (bryły otaczające) zanim rozpocznie się wyznaczanie przecięcia promienia z powierzchnią obiektu, można spróbować wyznaczyć przecięcie z bryłą otaczającą obiekt. Jeśli promień nie przecina takiej bryły, to analiza przecięcia z obiektem nie jest konieczna. Oczywiście aby w takiej sytuacji można było mówić o przyspieszeniu obliczeń powinny być spełnione dwa warunki. Bryła powinna „ściśle” (ciasno) otaczać obiekt oraz wyznaczenie przecięcia promienia z bryłą powinno być wielokrotnie prostsze (i szybsze) niż przecięcia z obiektem. Często te warunki są sprzeczne. Najczęściej stosuje się kule, wielościany lub „pasy” równoległych płaszczyzn jako bryły otaczające. Kula jest obiektem, dla której najszybciej można stwierdzić, czy jest przecięta prostą czy nie. Wystarczy znaleźć odległość prostej od środka kuli i porównać z promieniem. Jest to szybsze niż sprawdzanie przecięcia prostej z prostopadłościanem. Wadą kuli jako obiektu otaczającego jest najczęściej niezbyt ciasne obejmowanie obiektu. Warto zwrócić uwagę na przecięcia z obiektami typu AABB (ang. Axis-Aligned Bounding Box - prostopadłościan o krawędziach wyznaczonych przez proste równoległe do osi układu współrzędnych) i OBB (ang. Oriented Bounding Box - prostopadłościan dowolnie zorientowany) Aby zwiększyć efektywność działania metody można skonstruować hierarchię brył otaczających. | W pierwszym przypadku (bryły otaczające) zanim rozpocznie się wyznaczanie przecięcia promienia z powierzchnią obiektu, można spróbować wyznaczyć przecięcie z bryłą otaczającą obiekt. Jeśli promień nie przecina takiej bryły, to analiza przecięcia z obiektem nie jest konieczna. Oczywiście aby w takiej sytuacji można było mówić o przyspieszeniu obliczeń powinny być spełnione dwa warunki. Bryła powinna „ściśle” (ciasno) otaczać obiekt oraz wyznaczenie przecięcia promienia z bryłą powinno być wielokrotnie prostsze (i szybsze) niż przecięcia z obiektem. Często te warunki są sprzeczne. Najczęściej stosuje się kule, wielościany lub „pasy” równoległych płaszczyzn jako bryły otaczające. Kula jest obiektem, dla której najszybciej można stwierdzić, czy jest przecięta prostą czy nie. Wystarczy znaleźć odległość prostej od środka kuli i porównać z promieniem. Jest to szybsze niż sprawdzanie przecięcia prostej z prostopadłościanem. Wadą kuli jako obiektu otaczającego jest najczęściej niezbyt ciasne obejmowanie obiektu. Warto zwrócić uwagę na przecięcia z obiektami typu AABB (ang. Axis-Aligned Bounding Box - prostopadłościan o krawędziach wyznaczonych przez proste równoległe do osi układu współrzędnych) i OBB (ang. Oriented Bounding Box - prostopadłościan dowolnie zorientowany) Aby zwiększyć efektywność działania metody można skonstruować hierarchię brył otaczających. | ||
|} | |} | ||
Linia 266: | Linia 372: | ||
Jeśli półsfera byłaby otoczona półsześcianem, to rzut na półsześcian tego samego obiektu byłby równoważny jego rzutowi na półsferę. | Jeśli półsfera byłaby otoczona półsześcianem, to rzut na półsześcian tego samego obiektu byłby równoważny jego rzutowi na półsferę. | ||
W praktyce rzut na półsześcian okazał się najefektywniejszy obliczeniowo. Półsześcian dzieli się na powierzchnie elementarne (prostokątne piksele) i wyznacza współczynnik sprzężenia na podstawie rzutu obiektu na mapę pikseli półsześcianu. | W praktyce rzut na półsześcian okazał się najefektywniejszy obliczeniowo. Półsześcian dzieli się na powierzchnie elementarne (prostokątne piksele) i wyznacza współczynnik sprzężenia na podstawie rzutu obiektu na mapę pikseli półsześcianu. | ||
|} | |} | ||
Linia 338: | Linia 428: | ||
Fakt, że metoda śledzenia promieni i metoda energetyczna inaczej analizują odbijanie (i załamanie) światła przez powierzchnie można traktować jako wzajemne uzupełnianie się. Stąd naturalne wydawałoby się łączenie metod na zasadzie łączenia wyników obliczeń: odbicie rozproszone pochodzące z metody energetycznej natomiast odbicie kierunkowe z metody śledzenia. Oczywiście takie połączenie jest praktycznie nierealne. Natomiast bardzo użyteczne jest zastosowanie jednej metody w wybranym problemie realizowanym drugą metodą. Dobrym przykładem jest wyznaczenie współczynnika sprzężenia z wykorzystaniem śledzenia promieni. Śledzenie pozwala obliczyć całkę metodą Monte Carlo dla określonego punktu powierzchni. | Fakt, że metoda śledzenia promieni i metoda energetyczna inaczej analizują odbijanie (i załamanie) światła przez powierzchnie można traktować jako wzajemne uzupełnianie się. Stąd naturalne wydawałoby się łączenie metod na zasadzie łączenia wyników obliczeń: odbicie rozproszone pochodzące z metody energetycznej natomiast odbicie kierunkowe z metody śledzenia. Oczywiście takie połączenie jest praktycznie nierealne. Natomiast bardzo użyteczne jest zastosowanie jednej metody w wybranym problemie realizowanym drugą metodą. Dobrym przykładem jest wyznaczenie współczynnika sprzężenia z wykorzystaniem śledzenia promieni. Śledzenie pozwala obliczyć całkę metodą Monte Carlo dla określonego punktu powierzchni. | ||
|} | |} | ||
---- | ---- |
Wersja z 13:28, 4 gru 2006
![]() |
![]() |
![]() |