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 226: | Linia 226: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd31.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd31.png|thumb|500px]] | ||
|valign="top"| | |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. | |||
|} | |} | ||
---- | ---- | ||
Linia 232: | Linia 238: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd32.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd32.png|thumb|500px]] | ||
|valign="top"| | |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ą. | |||
|} | |} | ||
---- | ---- | ||
Linia 238: | Linia 257: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd33.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd33.png|thumb|500px]] | ||
|valign="top"| | |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. | |||
|} | |} | ||
---- | ---- | ||
Linia 244: | Linia 270: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd34.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd34.png|thumb|500px]] | ||
|valign="top"| | |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. | |||
|} | |} | ||
---- | ---- | ||
Linia 250: | Linia 282: | ||
|width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd35.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:GKIW_M9_Slajd35.png|thumb|500px]] | ||
|valign="top"| | |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. | |||
|} | |} | ||
---- | ---- |
Wersja z 10:20, 30 paź 2006
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |