Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy dzięki temu, że przedmioty te są oświetlone (lub same emitują światło). Symulacja tych zjawisk pozwala oddać realny wygląd elementów wirtualnej sceny. Od czego zależy stopień jasności lub kolor punktu (piksela) (xp, yp), będącego rzutem punktu (x, y, z), gdy na scenie występuje źródło światła? 1
Stopień jasności lub kolor punktu (piksela) (xp,yp) zależy od wielu czynników. W szczególności może zależeć od: geometrii układu (wzajemnego usytuowania obiektu i źródła światła, kształtu obiektu, sposobu rzutowania), charakterystyki źródła światła (intensywności świecenia, koloru, tłumienia światła w przestrzeni, kierunkowości), charakterystyki powierzchni obiektu (odbijania, rozpraszania, pochłaniania, przepuszczania, koloru powierzchni), charakterystyki rozchodzenia się światła odbitego, charakterystyki światła rozproszonego, oświetlania obiektu światłem odbitym (np. od innych obiektów znajdujących się na scenie). Jakie przyjąć założenia? Jak zredukować ilość obliczeń? Jak dla przyjętych założeń obliczyć stopień jasności lub kolor punktu (piksela) (xp,yp)? 2.Podstawowe modele oświetlenia Model oświetlenia światłem otoczenia. Założenia: Na scenie występuje jedynie światło rozproszone (bezkierunkowe). Powierzchnie obiektów odbijają światło 2
Model oświetlania dla powierzchni rozpraszających (dyfuzyjnych). Założenia: Na scenie występuje punktowe źródło światła emitujące światło tak samo we wszystkich kierunkach. Powierzchnie obiektów rozpraszają światło (są matowe). Model opiera się na prawie cosinusów Lamberta. Jeśli odpowiednie kierunki opisać znormalizowanymi wektorami, to model można zapisać 3
Modyfikacje modelu. Powyższy model oświetlenia można uzupełnić o dodatkowe czynniki. 1) Uwzględnienie światła rozproszonego. Te elementy sceny, na które nie padają bezpośrednio promienie wysyłane przez punktowe źródło światła nie będą widoczne. Modyfikacja polega na połączeniu modelu opartego na prawie cosinusów z modelem dla światła rozproszonego. 2) Uwzględnienie tłumienia światła emitowanego przez źródło. Z doświadczenia wiadomo, że obiekty położone dalej od źródła światła, są oświetlane słabiej. Modyfikacja polega na uwzględnieniu zjawiska tłumienia przez wprowadzenie współczynnika tłumienia fatt. Jak uzależnić współczynnik fatt, od odległości między źródłem światła a badanym punktem powierzchni? Z fizyki wiadomo, że gdzie dl jest odległością pomiędzy źródłem światła a punktem oświetlanej powierzchni. 4
W praktyce powyższy wzór nie daje zbyt dobrych wyników, bowiem: jeśli dl jest duże, fatt zmienia się nieznacznie nawet dla daleko położonych od siebie powierzchni, jeśli dl jest małe, fatt zmienia się bardzo znacznie nawet dla blisko położonych od siebie powierzchni, W grafice komputerowej stosuje się więc bardziej ogólną zależność w postaci: gdzie c1, c2, c3 są stałymi dobieranymi empirycznie. 3) Uwzględnienie odległości oświetlonego obiektu od obserwatora. Z doświadczenia wiadomo, że obiekty położone dalej od obserwatora, są postrzegane jako oświetlane słabiej. Zjawisko to uwzględnia się w prosty sposób, modyfikując wyznaczoną przy pomocy poprzednio omówionych modeli intensywność I następująco: 5
Model oświetlania dla powierzchni odbijających światło. Założenia: Na scenie występuje punktowe źródło światła emit ująceświatło tak samo we wszystkich kierunkach. Powierzchnie obiektów odbija światło (różnie w różnych kierunkach). Przykład: Idealne zwierciadło Oświetlany punkt powierzchni, będzie widoczny dla obserwatora tylko wtedy, gdy kierunek wektora R będzie się pokrywał z kierunkiem wektora V. Modelem, który łączy własności rozpraszania i odbijania światła jest model Phonga. (Phong Bui Tuong) Model Phonga można zapisać w postaci: 6
Wniosek jest następujący: Jeżeli n uzyskuje się prawie idealne zwierciadło. 7
Algorytmy cieniowania (generowanie obrazów oświetlonych scen) Rendering proces generowania obrazu modeli 2D lub 3D przez programy komputerowe. Obraz jest rysowany z uwzględnieniem geometrii obiektu, rzutowania, tekstur, oświetlenia i cieniowania. Cieniowanie obliczanie jasności (koloru, odcienia) poszczególnych pikseli obrazu sceny z uwzględnieniem między innymi efektów oświetlenia. Algorytmy cieniowania Algorytm bezpośredni 1. Dla punktu obrazu (piksela) o współrzędnych (xp,yp) obliczyć odpowiedni punkt widocznej powierzchni obiektu (x, y, z). 2. Dla punktu (x, y, z) zastosować wybrany model oświetlenia i obliczyć intensywność I światła w tym punkcie. 3. Wypełnić piksel (xp, yp) zgodnie z obliczoną intensywnością. Zaleta: dokładność. Wada: znaczna ilość obliczeń. Algorytm cieniowania jednotonowego Zakładamy, że Obiekty sceny opisane są jako siatki wielokątów (trójkątów) Dla widocznej ściany obiektu sceny, zakłada się stałą intensywność oświetlenia. 1. Dla dowolnego punktu widocznej ściany, wyliczyć intensywność oświetlenia. 2. Rzutować ścianę, wypełniając odpowiedni wielokąt stałą barwą, zgodnie z obliczoną intensywnością w wybranym punkcie. 8
Zaleta: stosunkowo mało obliczeń. Wada: jeśli siatka wielokątów aproksymuje obiekt o płynnych kształtach, widoczne będą krawędzie ścian. Algorytm interpolacji intensywności I (algorytm Gourauda): Zakładamy, że obiekty sceny opisane są jako siatki wielokątów. 1. Dla każdego wierzchołka siatki wieloboków wyliczyć wektor normalny, jako średnią arytmetyczną wektorów normalnych dla ścian, do których należy analizowany wierzchołek. 2. Stosując wybrany model oświetlenia i obliczony wektor normalny, dla każdego wierzchołka siatki obliczamy intensywność oświetlenia Ik. 3. Wypełniamy rzuty widocznych wielokątów, używając algorytmu linii skanującej 9
Zaleta: ograniczenie ilości obliczeń, obiekty aproksymowane siatkami wielokątów wyglądają gładko (krawędzie siatki przestają być widoczne). Wada: nienaturalne obrazy w przypadkach odbicia światła od powierzchni lustrzanych. Algorytm interpolacji wektorów normalnych (algorytm Phonga) Zakładamy, że obiekty sceny opisane są jako siatki wielokątów. 1. Wyznaczamy wektory normalne dla wierzchołków siatki wielokątów siatki tak samo jak w poprzednim algorytmie. 2. Wypełniamy rzuty widocznych wielokątów używając algorytmu linii skanującej. W tym algorytmie interpolujemy wektory normalne obliczone dla wierzchołków a nie intensywności oświetlenia. Intensywność oświetlenia dla kolejnych pikseli jest obliczana przy pomocy wybranego modelu oświetlenia z uwzględnieniem interpolowanego wektora normalnego. Zaleta: znacznie lepsze obrazy niż dla poprzedniego algorytmu. Wada: dość dużo obliczeń (dla każdego piksela obrazu wykorzystywany jest model oświetlenia). 10
Porównanie obrazów wygenerowanych z wykorzystaniem różnych algorytmów cieniowania. 11