Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy

Transkrypt

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy
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

Podobne dokumenty