SYNTEZA I OBRÓBKA OBRAZU
Ćw. 4 Algorytmy oświetlenia globalnegoWykonujący: Ocena:
Specjalność: IDiO, sem. II/3 Data wykonania ćwiczenia:
Celem ćwiczenia jest zapoznanie studentów z metodami komputerowego renderingu scen 3D przy użyciu algorytmów oświetlenia globalnego. Podstawy teoretyczne zawarte są w prezentacji „Algorytmy oświetlenia globalnego” do wykładu z przedmiotu. Ćwiczenie wykonywane będzie w programie POV-Ray.
Należy wykonać kolejne polecenia i zanotować w sprawozdaniu w zaznaczonych ramkach wnioski i odpowiedzi na pytania. Sprawozdanie ma być wypełnione elektronicznie (w pliku). W nazwie pliku należy podać nazwiska osób wykonujących ćwiczenie. Po zakończeniu zajęć należy plik ze sprawozdaniem umieścić w systemie sprawozdań.
UWAGA: wynik renderingu jest zapisywany do pliku BMP w tym samym katalogu co skrypt programu POV-Ray, pod tą samą nazwą. Przy ponownym uruchomieniu skryptu, obraz zostanie nadpisany. Należy więc pamiętać o zmianie nazwy skryptu lub obrazu po dokonaniu zmian w skrypcie!
Zadanie 1 – metoda śledzenia promieni (ray tracing)
Pobrać archiwum ze skryptami programu POV-Ray (ze strony WWW, obok tej instrukcji) i rozpakować je w katalogu roboczym. Uruchomić program POV-Ray. Wczytać skrypt
Zadanie1.pov. Ustawić w programie rozmiar obrazu na [800x600, No AA]. Uruchomić
rendering (przycisk Run na pasku). Obejrzeć wynik renderingu. Przeanalizować zawartość skryptu, zwrócić uwagę na komentarze, znaleźć fragmenty odpowiadające poszczególnym elementom sceny.
Ustawić wartość parametru max_trace_level (w miejscu oznaczonym jako #1) na 1, wykonać rendering. Zmienić wartość na 2, ponownie wykonać rendering (nie nadpisać poprzedniego obrazu!). Porównać oba obrazy. Czym różnią się wyniki renderingu? Dlaczego różne wartości parametru wpływają na wynik właśnie w ten sposób?
Ustawić wartość parametru na 5, porównać z wynikiem dla wartości 2. Czy są zauważalne różnice? Opisać, jeżeli występują.
Zmieniać wartości parametrów phong i reflection (zakres od 0 do 1) dla obiektu filiżanki (#2). Jak zmiany tych parametrów wpływają na obraz?
Zadanie 2 – metoda mapowania fotonowego (photon mapping)
UWAGA: w zadaniu 2 i 3 czas renderingu będzie długi, zatem proszę wykonywać rendering w małej rozdzielczości i odpowiednio zorganizować sobie pracę (odpowiadać na pytania w czasie gdy wykonuje się kolejny rendering).
Wczytać skrypt Zadanie2.pov. Ustawić w programie rozmiar obrazu na [320x240, No AA]. Uruchomić rendering – w tej chwili używany jest tylko ray tracing. Zachować wynikowy obraz.
Usunąć komentarze (znaki /* */) w miejscu #1. Uruchomić ponownie rendering – teraz wykorzystywane jest dodatkowo mapowanie fotonowe. Jakie efekty zostały dodane?
Jaki efekt uzyskujemy po zakomentowaniu linii #2 albo linii #3? Sprawdzić oba przypadki osobno. Dlaczego tak się dzieje? Co oznaczają polecenia target i pass_through?
Porównać wynik renderingu przy ustawieniu parametru count w sekcji #1 na 20000 i 2000. Jakie są różnice i dlaczego powstają?
Na podstawie zadania 2 opisać w jakich sytuacjach (do jakich efektów) użyteczna jest metoda fotonowa jako wspomaganie algorytmu ray-tracing. W jakim stopniu włączenie metody fotonowej wydłuża czas renderingu?
Zadanie 3 – metoda energetyczna (radiosity)
Wczytać skrypt Zadanie3.pov. Ustawić jak poprzednio rozmiar [320x240, No AA]. Uruchomić rendering – w tej chwili używany jest tylko ray tracing. Zachować wynikowy obraz.
Zmienić wartość zmiennej Rad_Quality (#1) na 1. Włącza to algorytm energetyczny. Wyrenderować obraz, porównać wynik z poprzednim.
W jakich obszarach obrazu widoczne są różnice? Jaki mają charakter? Dlaczego w tym przypadku metoda energetyczna była potrzebna do uzyskania takiego efektu?
W skrypcie zmienić ustawienie kamery – zakomentować linię poniżej #2a, odkomentować linię poniżej #2b. Wykonać rendering dla Rad_Quality równego 1, 2 i 3, czyli dla rosnącej liczby promieni (count) i malejącej granicy błędu (error_bound). Porównać i opisać rezultaty dla poszczególnych przypadków.
Wykonać rendering dla Rad_Quality równego 4, wykorzystującego wyższy poziom rekurencji w obliczeniach (recursion_limit = 2). Porównać i opisać wynik w stosunku do 2 i 3. Czy dłuższy czas obliczeń daje w tym przypadku lepszą jakość obrazu?
Na podstawie zadania 3 opisać w jakich sytuacjach użyteczna jest metoda energetyczna jako wspomaganie algorytmu ray-tracing. W jakim stopniu włączenie metody energetycznej wydłuża czas renderingu?