Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Geometria obrazu Wykład 10
Renderowanie cd. CSG. Śledzenie promieni. Śledzenie ścieżek. Metoda fotonowa. Metoda energetyczna. Cieniowanie.
2
Regularyzowany operator ma postać: domknięcie(wnętrze(A op B)), gdzie
CSG (Constructive Solid Geometry) jest technika definiowania nowych brył poprzez łączenie innych brył z pomocą regularyzowanych operatorów boolowskich (sumy, iloczynu i różnicy). Regularyzowany operator ma postać: domknięcie(wnętrze(A op B)), gdzie op oznacza dany operator. Wynikiem takich działań jest zawsze niezdegenerowana (posiadająca objętość) bryła lub zbiór pusty . [Wikipedia]
3
Algorytm znajdywania różnicy. Dane: Dwa wielościany wypukłe A, B.
Wynik: A-B. Sprawdź, czy A B. Jeśli tak – KONIEC (wynik jest zbiorem pustym). 2. Sprawdź, czy dana ściana B przecina A: Nie – zbadaj kolejną ścianę, Tak – podziel A płaszczyzną zawiera-jącą daną ścianę; zachowaj część A w półprzestrzeni rozłącznej z B; A:= A półprzestrzeń zawierająca B; zbadaj kolejną ścianę B;
4
Algorytm znajdywania przecięcia. Dane: Dwa wielościany wypukłe A, B.
Wynik: A B. Sprawdź, czy A B. Jeśli tak – KONIEC (przecięciem jest A). 2. Sprawdź, czy dana ściana B przecina A: Nie – zbadaj kolejną ścianę, Tak – podziel A płaszczyzną zawiera-jącą daną ścianę; odrzuć część A w półprzestrzeni rozłącznej z B; A:= A półprzestrzeń zawierająca B; zbadaj kolejną ścianę B;
5
Zastosowania CSG. Tworzenie obiektów o prostym kształcie (będących kompozycją obiektów bazowych tzw. prymitywów – np. prostopadłościan, kula, stożek, ostrosłup itp.). Konstrukcja portali. Usuwanie niewidzialnych powierzchni.
6
Śledzenie promieni (ray tracing).
Jest to technika generowania fotorealistycznych obrazów trójwymiarowych scen. Opiera się na analizowaniu tylko tych promieni światła, które trafiają bezpośrednio do obserwatora.W ray tracingu rekursywnym dodatkowo bada się promienie odbite lustrzanie oraz załamane w przezroczystych ośrod-kach. Ray tracing stosuje się dla wszystkich pikseli obrazu. Aby uniknąć aliasingu (np. schodki na skośnych liniach lub brzegu) prowadzi się wiele promieni przez jeden piksel. Algorytm jest kosztowny. Jego złożoność zależy od rozmiaru obrazu, prędkości obliczania przecięcia promienia z najbliższym obiektem i rozmiaru sceny.
7
przez każdy piksel obrazu poprowadź promień od obserwatora;
Algorytm. przez każdy piksel obrazu poprowadź promień od obserwatora; znajdź najbliższy punkt sceny; dla każdego źródła światła sprawdź, czy istnieje promień odbijający się w danym punkcie w kierunku obserwatora, jeśli tak, to oblicz parametry odbicia; jeśli promień trafia na obiekt przezroczysty lub odbijający, to poprowadź promień z punktu odbicia i powtórz powyższe punkty algorytmu traktując punkt odbicia jako obserwatora (rekursywny ray tracing). a - nieprzepuszczalny, nie odbija, b - przepuszczalny, odbija, c - nieprzepuszczalny, odbija [Wikipedia]
8
Różne rodzaje odbić światła.
9
Zalety metody. Łatwość zrównoleglenia programu – każdy piksel może być przetwarzany osobno. Łatwa realizacja CSG. Realistyczny obraz. Wady. Nie uwzględnia światła rozproszonego. Nie może modelować dyfrakcji, interferencji, rozszczepienia. Dopuszcza tylko punktowe źródła światła.
10
Podobnie do ray tracingu działa path tracing - śledzenie ścieżek (Kajiya 1986).
Algorytm bazuje na metodzie Monte Carlo - zamiast jednego promienia obserwator wypuszcza dużo promieni w losowych kierunkach. Dzięki temu znacznie lepiej aproksymuje globalny rozkład światła. Po napotkaniu obiektu promień jest propagowany w losowych kierunkach. Rekursja kończy się po osiągnięciu ustalonej głębokości. Wadą jest większa złożoność obliczeniowa. Każdy obiekt może pochłaniać lub emitować światło. Światło emitowane jest pochłaniane na ścieżce do obserwatora.
11
W tej metodzie podążamy za promieniem emitowanym przez źródło światła.
Forward raytracing. W tej metodzie podążamy za promieniem emitowanym przez źródło światła. Daje to znacznie lepszy efekt wizualny niż zwykły ray tracing, ale wymaga znacznie większej mocy obliczeniowej. Ma głównie specjalistyczne zastosowanie – głównie w optyce. Google
12
Metoda fotonowa (photon mapping). Algorytm
Metoda fotonowa (photon mapping). Algorytm. Pierwsza faza (tworzenie mapy fotonowej). Z obszaru, w którym znajduje się źródło światła wysyłane są fotony. Po zderzeniu fotonu z obiektem sceny określa się prawdopodobieństwo odbicia (pochłonięcia, przepuszczenia) oraz jego kierunek, a następnie zapisuje się informację w tzw. mapie fotonowej. Druga faza. Na podstawie mapy fotonowej określa się oświetlenie danej powierzchni. Dodatkowa faza (final gathering). Interpolacja na zbiorze odpowiednio wybranych punktów mapy fotonowej.
13
Przykład (final gathering).
14
Zalety. Realistyczne oświetlenie sceny. Łatwość przedstawiania efektów specjalnych – odbić zwierciadlanych, dyfrakcji, refrakcji itp. Wady. Duża złożoność obliczeniowa (konieczność tworzenia mapy fotonowej). Rozkład fotonów na scenie przechowywany jest w postaci kd-drzewa.
15
Kd drzewo Kd drzewo to drzewo binarne, którego liśćmi są punkty z P a węzłami wewnę-trznymi - proste równoległe do osi układu współrzędnych. Synami węzła odpowiada-jącego prostej pionowej są węzły odpowia-dające prostym poziomym i vice versa. Jako korzeń wybieramy prostą pionową przechodzącą przez punkt z danego zbioru będący jego medianą względem współ-rzędnych x-owych. Dzielimy dany zbiór na dwa podzbiory, do których należą punkty odpowiednio niewiększe od mediany i wię-ksze od niej, itd. (operujemy na liczbach złożonych). Przyjmijmy, że pionowa (pozioma) prosta będzie dzielić zbiór punktów P na zbiór P2 punktów leżących na prawo (powyżej) od tej prostej i zbiór P1 := P – P2.
16
procedure BUILDTREE(P,depth)
if P zawiera tylko jeden punkt then return liść pamiętający ten punkt else if depth jest parzyste then podziel P pionową prostą l na zbiory P1 i P2 else podziel P poziomą prostą l na zbiory P1 i P2; vl BUILDTREE(P1,depth+1); vp BUILDTREE(P2,depth+1); stwórz węzeł v – ojca vl i vp oraz zapamiętaj w nim l; return v e a h 1 2 3 4 b 5 f 6 c 7 g d 8 9 a b f g 9 6 c 7 e 1 2 h 3 4 d 5 8
17
Niech ls(v) (rs(v)) oznacza lewego (prawego) syna wierzchołka v, a obszar(l) jest obszarem, który dzieli prosta l. procedure SEARCHKD(v,R) if v jest liściem then if v R then zwróć v else if obszar(ls(v)) R then zwróć wszystkie liście pod- drzewa o korzeniu w ls(v) else if obszar(ls(v)) przecina R then SEARCHKD(ls(v),R) if obszar(rs(v)) R drzewa o korzeniu w rs(v) else if obszar(rs(v)) przecina R then SEARCHKD(rs(v),R) 1 8 h g f e d c b a 2 3 4 5 6 7 9 b b 2 e a a h f 3 h f d 5 c c 7 g 9 g a b f g 9 6 c 7 e 1 2 h 3 4 d 5 8 7 5
18
Lemat. Kd drzewo ma rozmiar liniowy względem rozmiaru zbioru i można je zbudować w czasie O(n log n). Dowód. Czas potrzebny na stworzenie kd drzewa jest opisany przez następujące równania rekurencyjne: T(n) = O(1) dla n =1 oraz T(n) = O(n) + 2T(n/2) dla n > 1, czyli T(n) = O(n log n). Wykorzystując kd drzewa, znalezienie wszystkich punktów z n-elementowego zbioru P należących do danego prostokąta R wymaga czasu , gdzie k jest liczbą znalezionych punktów. Policzmy, ile obszarów może zostać przeciętych przez brzeg prostokąta R. Rozważmy jedną z prostych zawierających jego bok i stwórzmy równania rekurencyjne na liczbę przecinanych obszarów po wykonaniu dwóch kroków wyszukiwania. Mają one postać: Q(n) = O(1) dla n = 1 oraz Q(n) = 2+2Q (n/4) dla n > 1, a ich rozwiązaniem jest
19
Konstrukcję kd drzewa możemy uogólnić również na wyższe wymiary.
Dla n-elementowego zbioru punktów P trzymamy wtedy drzewo rozmiaru O(n), które można skonstruować w czasie O(n log n). Czas odpowiedzi na zapytanie o punkty należące do prostokąta R wynosi O(k+n(d-1)/d), gdzie k jest liczbą znalezionych punktów, a d – wymiarem przestrzeni.
20
Metoda energetyczna (radiosity).
Metoda ta uwzględnia wyłącznie odbicia rozproszone, tzn. intensywność światła odbitego jest niezależna od kierunku. Dlatego uzyskane wyniki są niezależne od obserwatora, co pozwala na wielokrotną, dowolną wizualizację sceny bez ponawiania obliczeń. Metoda nie uwzględnia jednak rozbłysków, lustrzanych odbić, załamań światła itp. Scena jest podzielona na skończoną liczbę płatów (trójkątów lub prostokątów). Od sposobu i jakości podziału zależy czas obliczeń. Z płatami związane są współczynniki pochłaniania światła (pochłania – dodatni, emituje – ujemny).
21
Dla każdej pary płatów określony jest współczynnik sprzężenia optycznego sij, który informuje, ile energii świetlnej może zostać przekazane z jednego płata do drugiego (współczynniki zależą od wzajemnego położenia płatów – odległości i kąta). Iteracyjnie obliczamy jasność płatów: Et(i) = Et-1(i) + j sij Et(j), gdzie Et(i), Et(j) określają energię odpowiednio i-tego i j-tego płata. Równania mają tendencję do stabilizacji – energia emitowana z płata równoważy się z energią otrzymywaną z pozostałych płatów.
22
Przykład. [Wikipedia]
23
Natężenie światła. Natężenie światła w punkcie obliczamy stosując funkcję BRDF (Bidirectional Reflectance Distribution Function). Jest to stosunek luminancji energetycznej mierzonej w kierunku obserwatora do natężenia napromieniowania badanego w kierunku padania promieniowania). Dokładniej: gdzie i , 0 są parami kątów płaskich opisujących kierunek padania i odbicia promienia, L oznacza promieniowanie oddawane, E – promieniowanie przyjmowane, a i jest kątem miedzy kierunkiem padania a normalną płata. Jako pierwszy zdefiniował tę funkcję Fred Nicodemus w 1965.
24
Cieniowanie. Powierzchnie matowe rozpraszają światło w jednakowy sposób we wszystkich kierunkach i dlatego wydają się jednakowo jasne niezależnie od kąta patrzenia. Prawo cosinusów Lamberta (1760). Intensywność odbitego światła jest wprost proporcjonalna do cosinusa kąta między kierunkiem padania światła a wektorem normalnym do powierzchni odbijającej. I = Is + Idkdcos , gdzie Is oznacza natężenie światła otoczenia, Id natężenie światła punktowego źródła, a kd określa procent światła odbitego. [Wikipedia]
25
Cieniowanie płaskie (flat shading)
Cieniowanie płaskie (flat shading). Dla każdego wielokąta siatki, jego barwa jest obliczana tylko raz i używana do cieniowania całego wielokąta. Kolor wielokąta obliczany jest w oparciu o kąt między powierzchnią ściany a kie-runkiem światła, kolor ściany i oświetlenia oraz intensywność światła. Zaletą cieniowania płaskiego jest jego szybkość i prostota obliczeń. Wadą jest to, że ściana ma jednolitą barwę, co sprawia wrażenie występowania kantów i płaskich powierzchni. [Wikipedia]
26
Cieniowanie Gourauda (cieniowanie na zasadzie interpolowania jasności)
Cieniowanie Gourauda (cieniowanie na zasadzie interpolowania jasności). Cieniowanie to polega na przypisaniu punktom cieniowanego wielokąta jasności obliczonej przez interpolację wartości przypisanych każdemu wierzchołkowi. Algorytm. Na podstawie wektorów normalnych sąsiadujących ścian ścian określ wektor normalny w danym wierz-chołku (aby móc zdefiniować kąt padania światła). Oblicz jasność każdego wierzchołka. Interpoluj liniowo krawędzie wielokątów. Interpoluj liniowo ściany (zamiatając). Cieniowanie może być nieprawidłowe, gdy wnętrza wielokątów różnią się jasnością od brzegów. [Wikipedia]
27
Oświetlenie Phonga. Jest to model pozwalający opisać odbicia zwierciadlane obiektów pokrytych specjalną powłoką odblaskową (cienka warstwa umożliwiajaca odbicie zwierciadlane, pod którą następuje odbicie rozproszone). Do obserwatora docierają trzy rodzaje światła: odbite (Iif()cosn), rozproszone (Iicos ), stałe (otoczenia – Ia). Po uwzględnieniu procentowych współczynników wpływu otrzymujemy wzór:
28
Cieniowanie Phonga. Cieniowanie to polega na interpolacji wektorów normalnych na podstawie wektorów normalnych w wierzchołkach. Daje lepszy efekt wizualny niż cieniowanie Gourauda, ale jest bardziej kosztowne. [Wikipedia]
29
Problemy jakie mogą powstać podczas cieniowania z wykorzystaniem interpolacji.
Zauważalne są krawędzie siatki wielokątów. Wynik zależy od kształtu wielokąta i jego położenia (najlepszy wynik jeśli przybliżamy trójkątami). Wektory normalne w wierzchołkach nie zawsze wskazują ten sam kierunek co wektory normalne powierzchni w tym punkcie.
30
Dziękuję za uwagę.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.