Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl
Powierzchnia obiektu 3D jest renderowana jako czarna jeżeli nie jest oświetlana żadnym światłem (wyjątkiem są obiekty samoświecące) Oświetlenie Fiat lux! Et facta est lux (Rdz 1, 3) Wtedy Bóg rzekł: Niechaj się stanie światłość! I stała się światłość.
Oświetlenie Generowanie oświetlenia i cieni obiektów 3D na scenie jest zadaniem skomplikowanym i wiąże się wieloma zasadami i prawami nie koniecznie odpowiadającymi fizycznemu modelowi opisu zachowania fal świetlnych Generalną zasadą jest dążenie do uzyskania odpowiedniego wyglądu w sensownym* czasie renderowania * sensowny czas jest zależny od przeznaczenia renderingu
Oświetlenie Powszechnie stosowaną metodą jest rozwiązywanie zadania znajdowania oświetlenia na zasadzie: obiekt JEST OŚWIETLANY przez źródła światła Dla każdego obiektu (obszaru obiektu) obliczana jest suma oświetlenia pochodząca od różnych źródeł światła. W zależności od ilości i rodzaju źródeł światła oraz możliwości karty graficznej obliczenie to wykonywane jest w jednym lub kilku przebiegach
Stosowany powszechnie w grafice 3D model oświetlenia uwzględnia kilka możliwych sytuacji Obiekt nie jest oświetlany, świeci własnym światłem Obiekt jest oświetlony światłem jednakowo rozproszonym - bezkierunkowym (ambient light) Obiekt odbija kierunkowe światło W sposób idealnie rozproszony Uzyskując połysk
Opisuje wynikowe natężenie oświetlenia obiektu w danym punkcie I Natężenie to jest najczęściej mnożone przez wartość koloru w tym punkcie (kolor obiektu lub punktu tekstury) aby uzyskać wartość koloru piksela na ekranie Jeżeli światło padające nie jest białe, intensywność zapisywana jest za pomocą koloru RGB a równanie oświetlenia rozbijane na 3 składowe
W najprostszym przypadku samoświecenia, równanie to sprowadza się do I = k i Gdzie k i jest współczynnikiem intensywności świecenia obiektu
Tak prosta wersja nie daje możliwości pokazania głębi obiektu. Wszystkie piksele wewnętrzne świecą z jednakową intensywnością powodując jego optyczne spłaszczenie
Oświetlenie bezkierunkowe jest opisywane zbliżoną wersją równania I = I a k a Gdzie I a jest współczynnikiem natężenia światła bezkierunkowego a k a jest współczynnikiem odbicia światła otoczenia przez obiekt
Również w tym przypadku nie ma możliwości ukazania głębi obiektu Światło otoczenia symuluje sytuację jednolitego oświetlenia sceny światłem powstałym z dużej ilości wielokrotnych odbić. Umożliwia uwidocznienie wszystkich obiektów sceny, nawet tych nie oświetlanych bezpośrednio.
Odbicie rozproszone (dispersed) zakłada sytuację istnienia światła punktowego, wysyłającego jednakowe promienie we wszystkich kierunkach Oświetlany obiekt ma powierzchnię idealnie matową. Padające światło odbija się równomiernie we wszystkich kierunkach
Jasność powierzchni w odbiciu rozproszonym (Lambertowskim) zależy od kąta między dwoma wektorami: Wektorem jednostkowym L określającym kierunek od punktu na obiekcie do źródła światła Wektorem normalnym N (jednostkowym) powierzchni obiektu w tym punkcie
Odbicie rozproszone Zależy od kąta padania światła Nie zależy od kąta obserwacji powierzchni
Odbicie rozproszone Podlega Lambertowskiemu prawu kosinusowemu
Odbicie rozproszone jest więc opisywane równaniem I = I p k d N L = I p k d cos θ Gdzie I p jest intensywnością światła punktowego a k d jest współczynnikiem intensywności odbicia rozproszonego obiektu Kąt Θ musi zawierać się w zakresie <0,90) stopni, dla wszystkich innych kątów
Odbicie rozproszone
Wariantem światła punktowego jest światło kierunkowe, zakładające że źródło światła znajduje się w znacznej odległości od obiektów. Wtedy można założyć, że dla wszystkich obszarów o tej samej wartości (skierowaniu) N, wartość kąta N L jest jednakowa
Tłumienie światła zakłada że obiekty znajdujące się w różnej odległości od źródła światła są oświetlane z różną intensywnością Zgodnie z teorią rozchodzenia się fali kulistej, moc światła powinna maleć wraz z kwadratem odległości f damp = 1 d l
W grafice 3D wprowadzony został jednak bardziej odpowiedni współczynnik tłumienia f damp = 1 2 c 1 +c 2 d l +c 3 d l przy założeniu, że nie może on przekroczyć wartości 1. Stałe c1, c2, c3 są określane empirycznie przez projektanta
uwzględniające dotychczasowe rozważania, miałoby postać I = I a k a + f damp I p k d cos θ A w przypadku wielu źródeł światła I = I a k a + n i=1 f dampi I pi k di cos θ i
Jeszcze bardziej ogólny wzór uwzględnia możliwość padania światła kolorowego (RGB) na powierzchnię o różnych współczynnikach odbicia (ambient i dispersed) dla każdej składowej
Odbicie zwierciadlane (idealne) Przedstawia sytuację idealnie gładkiej powierzchni, od której odbija się padające na nią światło Kąt odbicia jest równy kątowi padania światła w stosunku do wektora normalnego Światło odbija się tylko pod kątem odbicia a jego kolor nie jest zależny od koloru powierzchni odbijającej
Prawo Snella
Odbicie zwierciadlane (idealne) Może zależeć od kąta padania światła Jest widoczne tylko przy obserwacji z kierunku R
Odbicie zwierciadlane (nieidealne) Przedstawia bardziej rzeczywistą sytuację gdzie odblask jest widoczny także z innego kierunku niż kierunek odbicia światła Odblask maleje wraz ze wzrostem kąta α między kierunkiem obserwacji a kierunkiem odbicia
Odbicie zwierciadlane (nieidealne) (specular) Może zależeć od kąta padania światła Jest zależne od kąta α między kierunkiem odbicia i kierunkiem obserwacji
Odbicie zwierciadlane jest więc opisywane równaniem I = f damp I p W θ cos n Gdzie W(Θ) jest współczynnikiem intensywności odbicia zwierciadlanego, często ustalanym jako wartość stała <0,1> A n jest wykładnikiem odbicia, określającym szerokość rozbłysku szybkość zanikania
Odbicie zwierciadlane Źródło: http://pl.wikipedia.org/w/index.php?title=plik:phong_shading-balls.jpg&filetimestamp=201002231 n = 1, 5, 10, 20, 50, 100
Przybliżoną wartość wektora odbicia R można obliczyć ze wzoru R = 2N N L L
Model uwzględniający wszystkie rodzaje oświetlenia został opracowany przez Phong Buoi-Tuonga w 1975r. można go zapisać wzorem n I = I a k a + f dampi I pi k di cos θ i + W θ i cos n i i=1
Phonga Źródło: http://wazniak.mimuw.edu.pl/images/3/3d/gkiw_m8_slajd_08.pn
Cieniowanie Korzystając z modelu Phonga, można wyznaczyć kolor (intensywność oświetlenia) w dowolnym punkcie obiektu Obliczanie oświetlenia dla każdego punktu nie jest jednak możliwe ze względu na ograniczenia sprzętowe ograniczenia w dokładności modelu obiektu
Cieniowanie Najprostszą metodą wyznaczania oświetlenia obiektu (cieniowania) jest cieniowanie płaskie Każdy wielokąt siatki opisującej obiekt jest cieniowany stałą wartością intensywności oświetlenia. Intensywność ta jest wyznaczana dla wektora normalnego wielokąta
Cieniowanie Najprostszą metodą wyznaczania oświetlenia obiektu (cieniowania) jest cieniowanie płaskie
Cieniowanie Podstawową wadą tego cieniowania jest występowanie ostrych przejść koloru na krawędziach wielokątów opisujących obiekt. Cieniowanie to będzie poprawne tylko wtedy gdy krawędzie wielokątów siatki odpowiadają krawędziom rzeczywistym obiektu W innych przypadkach konieczna jest interpolacja wygładzenie przejść kolorów między wielokątami
Cieniowanie Cieniowanie Gouraud W tej metodzie brane są pod uwagę wektory normalne wierzchołków wielokąta (trójkąta) Dla każdego wierzchołka obliczany jest kolor oświetlenia. Kolory pikseli wypełnienia trójkąta obliczane są na podstawie interpolacji biliniowej kolorów wierzchołków
Cieniowanie Cieniowanie Gouraud
Cieniowanie Cieniowanie Gouraud W przypadku braku wektora normalnego wierzchołka, jest on wyznaczany z uśrednienia wektorów normalnych wszystkich ścian do których należy dany wierzchołek
Cieniowanie Cieniowanie Gouraud
Cieniowanie Cieniowanie Gouraud Zaletą tego cieniowania jest zniwelowanie efektu ostrego przejścia między krawędziami wielokątów Wadą jest zanik ostrych krawędzi na powierzchni obiektu
Cieniowanie Cieniowanie Gouraud Zaletą tego cieniowania jest zniwelowanie efektu ostrego przejścia między krawędziami wielokątów Wadą jest zła realizacja odbić zwierciadlanych Ignorowanie rozbłysku wewnątrz trójkąta trójkątny kształt rozbłysku Skokowa zmiana rozbłysku podczas animacji
Cieniowanie Cieniowanie Gouraud
Cieniowanie Cieniowanie Phong W tej metodzie brane są pod uwagę wektory normalne wierzchołków wielokąta (trójkąta) Wektory te służą jako wektory wyjściowe do określenia (interpolacji) wektorów normalnych dla każdego piksela w trójkącie W każdym z pikseli obliczana jest jasność według określonego modelu (np. Phong)
Cieniowanie Cieniowanie Phong
Cieniowanie Cieniowanie Phong
Cieniowanie Cieniowanie Phong Zaletą tego cieniowania jest uzyskiwanie gładkich przejść oraz możliwość generowania odbić mniejszych od wielkości wielokąta Wadą jest Znacznie większa złożoność obliczeniowa Wyznaczanie wektora normalnego 3x bardziej złożone Obliczanie jasności w każdym pikselu
Cieniowanie - porównanie