Metoda śledzenia promieni (ang. ray tracing)

Podobne dokumenty
Podłączanie bibliotek Zapis danych do pliku graficznego Generowanie promienia pierwotnego Import sceny z pliku Algorytm ray tracingu

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Grafika realistyczna. Oświetlenie globalne ang. global illumination. Radosław Mantiuk

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Zaawansowana Grafika Komputerowa

Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor

Obraz cyfrowy. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Gry komputerowe: efekty specjalne cz. 2

Śledzenie promieni w grafice komputerowej

WSTĘP DO GRAFIKI KOMPUTEROWEJ

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

GRK 4. dr Wojciech Palubicki

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

Grafika Komputerowa. Metoda śledzenia promieni

Teksturowanie (ang. texture mapping)

Zjawisko widzenia obrazów

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

Przestrzenie 3D (algorytmy renderingu)

Przestrzenie 3D (algorytm rendering y u)

Próbkowanie (ang. sampling) - kwantyzacja. Rastrowa reprezentacja obrazu 2D. Generowanie obrazu rastrowego 2D. Próbkowanie i integracja

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Synteza i obróbka obrazu. Algorytmy oświetlenia globalnego

Animowana grafika 3D. Opracowanie: J. Kęsik.

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Julia 4D - raytracing

Filtrowanie tekstur. Kinga Laurowska

Animowana grafika 3D. Opracowanie: J. Kęsik.

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Plan wykładu. Akcelerator 3D Potok graficzny

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

Intro 4kb. sphere tracing. Maciej Matyka (maq / floppy) Dla koła naukowego Voxel

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Efekty dodatkowe w rasteryzacji

Algorytmy oświetlenia globalnego

Aparat widzenia człowieka (ang. Human Visual System, HVS) Budowa oka. Komórki światłoczułe. Rastrowa reprezentacja obrazu 2D.

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

Trójwymiarowa wizualizacja danych przestrzennych

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Oświetlenie obiektów 3D

Animowana grafika 3D. Opracowanie: J. Kęsik.

Wprowadzenie do grafiki komputerowej

1. Podstawowe algorytmy techniki rastrowe a) dwa przecinające się odcinki mogą nie mieć wspólnego piksela (T) b) odcinek o współrzędnych końcowych

Podstawy POV-Ray a. Diana Domańska. Uniwersytet Śląski

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela. Rysowanie linii: Kod programu

Architektura Komputerów

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

GRK 5. dr Wojciech Palubicki

Gry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Potok graficzny. System graficzny. Potok graficzny 3D. O$wietlenie globalne i lokalne. scena 3D algorytm graficzny obraz 2D. czasu rzeczywistego

Grafika komputerowa Tekstury

Grafika trójwymiarowa. Grafika trójwymiarowa. Pojęcie kamery. Źródła światła - przykłady. Rzutowanie trójwymiarowych obiektów. Grafika trójwymiarowa

Optyka instrumentalna

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela

Grafika Komputerowa, Informatyka, I Rok

i = [ 0] j = [ 1] k = [ 0]

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Obliczenie punktu przecięcia półprostej i płaszczyzny w przestrzeni 3-D wymaga rozwiązania równania liniowego.

GRK 5. dr Wojciech Palubicki

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 12 AiR III

Reprezentacja i analiza obszarów

6 Przygotował: mgr inż. Maciej Lasota

Klasa III technikum Egzamin poprawkowy z matematyki sierpień I. CIĄGI LICZBOWE 1. Pojęcie ciągu liczbowego. b) a n =

Prosta i płaszczyzna w przestrzeni

Architektura Procesorów Graficznych

Grafika 3D program POV-Ray - 1 -

OpenGL przezroczystość

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Załamanie na granicy ośrodków

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Unity 3D - tworzenie sceny

Transformacje obiektów 3D

Techniki wizualizacji. Ćwiczenie 9. System POV-ray - wprowadzenie

7. PLANIMETRIA.GEOMETRIA ANALITYCZNA

Wykład 4. Rendering (1) Informacje podstawowe

Ćwiczenie z fizyki Doświadczalne wyznaczanie ogniskowej soczewki oraz współczynnika załamania światła

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Aerotriangulacja. 1. Aerotriangulacja z niezależnych wiązek. 2. Aerotriangulacja z niezależnych modeli

Operatory mapowania tonów

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

Światła i rodzaje świateł. Dorota Smorawa

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Prawo odbicia światła. dr inż. Romuald Kędzierski

Wykład 17: Optyka falowa cz.2.

Obraz realistyczny. Realizm w grafice komputerowej. Realizm modelu: z!o#one siatki wielok$tów. Realizm modelu geometrycznego. Realizm modelu: spline'y

OPTYKA GEOMETRYCZNA I INSTRUMENTALNA

Kryteria oceniania z matematyki Klasa III poziom podstawowy

Zasada Fermata mówi o tym, że promień światła porusza się po drodze najmniejszego czasu.

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 KOMPUTEROWA

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Rok akademicki: 2017/2018 Kod: JFM s Punkty ECTS: 7. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Transkrypt:

Referencje Metoda śledzenia promieni (ang. ray tracing) Kevin Suffern, "Ray Tracing from the Ground Up", A K Peters/CRC Press, 007. Andrew S. Glassner, "An Introduction to Ray Tracing", Morgan Kaufmann, 1989. Wann Jensen, "Realistic Image Synthesis Using Photon Mapping", AK Peters, 001 Radosław Mantiuk Metoda śledzenia promieni (ang. ray tracing) Śledzenie promienia od kamery do obiektów. Algorytm ray tracingu Śledzenie drzewa promieni. Grafika czasu rzeczywistego próbkowanie obiektów sceny promień testujący cienie (ang. shadow ray) promień wtórny odbity (reflected) Backward ray tracing Forward rendering normalna do powierzchni Próbkowanie pikseli obrazu. Cienie, powierzchnie odbijające i przezroczyste (elementy oświetlenia globalnego). Właściwe przesłanianie się obiektów. Brak wzajemnego oświetlania się obiektów o powierzchniach dyfuzyjnych (oświetlenie lokalne). dla każdego piksela obrazu promień pierwotny promień wtórny załamany (refracted) ray casting - bez promieni wtórnych Algorytm ray tracingu (algorytm standardowy) for each PIXEL in the image { generate primary RAY (crossing the pixel) COLOR = background color ENERGY = 1.0 (1) for each OBJECT in the scene { check if RAY intersects OBJECT if( is intersection ) store the closest INTERSECTION (from camera) if( no INTERSECTION at all ) continue (analyse next PIXEL) generate SHADOW_RAY from INTERSETION point for each OBJECT in the scene { check if SHADOW_RAY intersects OBJECT if( is intersection ) break (INTERSECTION point in the shadow) if INTERSETION not in the SHADOW { compute color (solve light equation) COLOR = COLOR + ENERGY * color decrease ENERGY compute secondary RAY Algorytm ray tracingu (algorytm rekurencyjny) (1) for each PIXEL in the image { ENERGY = 1.0 generate primary RAY (crossing PIXEL) COLOR = trace_ray( RAY, background color, ENERGY ) set pixel COLOR function COLOR trace_ray( RAY, &COLOR, &ENERGY ) { INTERSECTION = find_intersection( RAY, true ) if( INTERSECTION == NULL ) return COLOR generate SHADOW_RAY from INTERSETION point INTERSECTION = find_intersection( SHADOW_RAY, false ) if( INTERSECTION!= NULL ) compute color (solve light equation) COLOR = COLOR + ENERGY * color decrease ENERGY if( ENERGY < small value ) return COLOR compute SECONDARY_RAY trace_ray( SECONDARY_RAY, &COLOR, &ENERGY ) goto (1) return COLOR

Algorytm ray tracingu (algorytm rekurencyjny) () Ray tracing, Albrecht Durer (16-ty wiek) function INTERSECTION find_intersection( RAY, closest_intersection ) { INTERSECTION = NULL for each OBJECT in the scene { check if RAY intersects OBJECT if( is intersection ) if(closest_intersection == true ) store the closest INTERSECTION continue else store INTERSECTION break; return INTERSECTION; Kamera Obscura Kamera Aparat fotograficzny Definicja kamery! Definiuje jaka część przestrzeni trójwymiarowej będzie widoczna na wyjściowym obrazie D.! Określa sposób rzutowania (prostokątne, perspektywiczne, itp.). xres up lookp twist! kąt patrzenia FOV (ang. Field of View)! punkt położenia kamery! punkt, na który patrzy kamera! kąt skręcenia kamery! rozdzielczość pionowa i pozioma yres! orientacja obrazu! aspekt (ang. aspect ratio) FOV eyep Courtesy of Andries van Dam

Parametryczne równanie wektora/promienia Równanie promienia w postaci uwikłanej (ang. implicit): ray = pos + t dir Obliczanie kierunku promienia pierwotnego (1) Obliczenia dla piksela o współrzędnych (i,j) i obrazu o maksymalnej rozdzielczości (width, height). ray.x = pos.x + t dir.x ray.y = pos.y + t dir.y ray.z = pos.z + t dir.z! # u x v x o x dir = # u y v y o y # "# u z v z o z $! & i $ # & & # j & & # %& " 1 & % (i, j) pos Obliczanie kierunku promienia pierwotnego () up look u = up look o look u v v = u look u look o = look look width tan( FOV ) width u height v width u Obliczanie przecięć promienia z obiektami Wyrażenie wektorów w proporcjach wielkości obrazu. x tan FOV = look width x width x height v Obliczanie przecięć: przecięcie promienia z kulą Przecięcie promienia z kulą: szukanie punktów wspólnych wektora i kuli. x o = r x = pos + t dir pos + t dir o = r v = pos o v + t dir = r v + t dir + v t dir = r położenie kamery (dir )t + (v dir)t + (v r ) = 0 równanie kuli (w postaci uwikłanej, ang. implicit) równanie promienia pos t punkt przecięcia o środek kuli t - odległość od kamery do punktu przecięcia liczona wzdłuż promienia. Wybieramy najmniejszy dodatni parametr t r Obliczanie przecięć: przecięcie promienia z kulą Przecięcie promienia z kulą: szukanie punktów wspólnych wektora i kuli. Δ < 0 Δ > 0 Δ = 0 Wybieramy punkt przecięcie z najmniejszym dodatnim parametrem t A t + B t + C = 0 Δ = B 4 A C t = B ± Δ A

Obliczanie przecięć: przecięcie promienia z trójkątem Obliczanie przecięć: przecięcie promienia z trójkątem 1. Przecięcie z płaszczyzną A x + B y + C z + D = 0 t = -(A*pos.x + B*pos.y + C*pos.z + D) / (A*dir.x + B*dir.y + C*dir.z). Rzutowanie punktów na płaszczyznę (z zachowaniem maksymalnej powierzchni trójkąta po rzutowaniu) 3. Sprawdzenie czy punkt przecięcia leży wewnątrz trójkąta (http://www.blackpawn.com/texts/ pointinpoly/default.html) Tomas Moller, Ben Trumbore, "Fast, Minimum Storage Ray/Triangle Intersection" Tomas Moller, Ben Trumbore, "Fast, Minimum Storage Ray/Triangle Intersection" Model oświetlania (model Phong'a) Równanie oświetlenia obliczane dla każdego punktu przecięcia i każdego źródła światła. Obliczanie koloru powierzchni i tot = i amb + N k=1 k (i diff k + i spec ) i amb = m amb s amb i diff = m diff s diff (l n) i spec = m spec s spec (v r) m shi v r vρ r n l n l p r = (n l) n l Równanie oświetlenia (model Blinna) Obliczenie koloru w wierzchołkach wielokątów na podstawie parametrów powierzchni oraz parametrów źródeł światła. i tot = i amb + N k (i diff k=1 k + i spec ). Wektor normalny: Sfera punkt przecięcia: p = ray.pos + t ray.dir i amb = m amb s amb i diff = m diff s diff (l n) i spec = m spec s spec (n h) m shi v ρ h 1 / 1 / p n l h = l + v l + v kierunek wektora normalnego: n = normalize(p o) o p

Promień wtórny odbity (ang. reflection) Kierunek promienia odbitego od powierzchni: Promienie wtórne v ' = v ( v n) n v s s dla znormalizowanych wektorów v i n v s v ' = v + s = v + n cosφ in = v + n ( v n) = v ( v n) n Prawo Snell'a: promień wtórny załamany (ang. refraction) Zależność pomiędzy kątem padania i kątem załamania promienia: Drzewo promieni Śledzenie drzewa promieni: funkcje rekurencyjne, - współczynniki załamania ośrodków (stosunek prędkości światła w próżni do prędkości w danym ośrodku) Materiały przezroczyste Absorbcja światła (eneria zamienia się na ciepło), prawo Beer'a-Lambert'a: I - intensywność światła po przejściu przez ośrodek, Io - Intensywność światła wchodzącego do matariału - współczynnik absorbcji zależny od rodzaju matariału x - grubość matariału Teksturowanie Modyfikacja koloru obliczonego za pomocą równania oświetlenia. Etapy tekturowania: 1. Mapowanie tekstury: obliczenie współrzędnych (u,v) testury dla danego punktu przecięcią.. Filtracja tekstury i obliczenie współrzędnych teksela (s,t). 3. Modyfikacja koloru poprzez wymnożenie wartości koloru razy kolor teksela. Dyfuzja/rozproszenie (ang. diffusion/scattering) - odbicie lub załamanie światła jednocześnie w wielu kierunkach. Stopień i charakter rozproszenia zależy od wartości współczynników załamania dwóch ośrodków oraz od stosunku długości fali świetlnej do wielkości molekuł w ośrodku rozpraszającym.

Teksturowanie: mapowanie sferyczne Obliczenie współrzędnych teksela (s,t) dla puntu przecięcia (x,y,z) (r promień kuli, s,t w zakresie <0,1>): Figury otaczające (ang. bounding volumes) Przyśpieszanie obliczania przecięć. s = acos(z / r) / pi t = acos(x / (rsin(pi * s))) / pi Modyfikacja koloru piksela bądź składowej diffuse koloru piksela. Hierarchia figury otaczających Łączenie figur otaczających w podgrupy.. Jednorodny podział przestrzeni (ang. uniform spatial subdivision) Podział przestrzeni sceny na woksele i przyporządkowanie każdemu wokselowi listy obiektów. grid - struktura wokseli wskazniki do list obiektów występujących w poszczególnych wokselach: void* cells[x][y][z] Algorytm 3DDDA Szukanie kolejnych wokseli, przez które przechodzi promień. ray = pos + t *dir Struktura drzewa ósemkowego (ang. octree) Efektywniejszy podział przestrzeni (mniej pustych wokseli). Bardziej skomplikowane śledzenie promienia przez woksele. (x+1,y+1) (x+,y+1) ysize ystart (x,y) xstart (x+1,y) xsize (x,y) = indeks początkowego woksela xstep = xsize/dir.x ystep = ysize/dir.y dx = xstart/dir.x dy = ystart/dir.y while((x,y) in grid) { if( dx < dy ) { x++; dx += xstep; else { y++; dy += ystep;

Podział k-d Tree Podział podobny jak dla octree, ale rozmiary wokseli mogą być dowolne i różne w kierunkach x,y i z. Struktura drzewa BSP (ang. BSP tree) Podział przestrzeni płaszczyznami o dowolnym położeniu (nie muszą być ortogonalne). Trudne szacowanie dobrego podziału przestrzeni. Bardziej skomplikowane śledzenie promienia przez woksele. Efektywniejszy podział przestrzeni w stosunku do oct-tree. Anty-aliasing (ang. anti-aliasing) (1) Zmniejszanie aliasingu w syntezowanych obrazach. Anty-aliasing (ang. anti-aliasing) () Próbkowanie stochastyczne (ang. stochastic sampling) - podział piksela na regiony i wysyłanie promieni pierwotnych przez losowy punkt w każdym z regionów. Końcowy kolor jest sumą ważoną wartości koloru dla poszczególnych próbek. Supersampling - kilka promieni pierwotnych na jeden piksel i uśrednianie rezultatów Antyaliasing adaptacyjny Obliczanie koloru dla dodatkowych promieni pierwotnych wysyłanych pomiędzy pikselami, dla których: różnica kolorów jest duża, promienie trafiają w różne obiekty, różnica pomiędzy kierunkami wektorów normalnych jest duża. Kolor piksela obliczany jest jako średnia arytmetyczna wszystkich kolorów obliczonych dla promieni wysyłanych w obrębie tego piksela.

: Głębia ostrości