290 likes | 462 Views
Algoritmus Ray-Tracing. Lukáš Miňo 3Ib. Čo nás čaká. Cieľ algoritmu Úvod do problematiky Algoritmus Zložitosť algoritmu Výhody a nevýhody Zrýchlenie. Cieľ. Získanie fotorealistického obrazu. Potrebné znalosti. Programovanie Analytická geometria Optika. Ako to celé funguje.
E N D
Algoritmus Ray-Tracing Lukáš Miňo 3Ib
Čo nás čaká • Cieľ algoritmu • Úvod do problematiky • Algoritmus • Zložitosť algoritmu • Výhody a nevýhody • Zrýchlenie
Cieľ • Získanie fotorealistického obrazu
Potrebné znalosti • Programovanie • Analytická geometria • Optika
Algoritmus • sleduj_lúč(lúč R, hĺbka rekurzie H) • nájdi priesečník P lúča R s najbližším telesom na scéne • ak P neexistuje (lúč opustil priestor scény), priraď lúču R farbu pozadia a skonč • ak P existuje, zisti pre všetky viditeľné zdroje L[i] (spojnica PL[i] nepretne žiaden objekt scény) intenzitu Iv := Iv + Idi + Isi
Algoritmus • ak hĺbka H neprekročila max. hĺbku sledovania, vyšli: • a) odrazený lúč Rr volaním sleduj_lúč (Rr, H + 1) • b) lomený lúč Rt volaním sleduj_lúč(Rt, H+1) • lúču R priraď výslednú farbu ako súčet príspevkov osvetlenia, farby odrazeného lúča Rr a farby lomeného lúča Rt
1. krok • 1. nájdi priesečník P lúča R s najbližším telesom na scéne
Priesečník • Lúč • priamka, resp.polpriamka • Bod, vektor • A[a1, a2, a3], smerovy_vektor[s1, s2, s3] • Parametrické vyjadrenie priamky: • X = A + t * smerovy_vektor • Guľa: • (x - m) * (x - m) + (y - n) * (y - n) + (z - p) * (z - p) - r * r == 0
2. krok • 2. ak P neexistuje (lúč opustil priestor scény), priraď lúču R farbu pozadia a skonč
3. krok • ak P existuje, zisti pre všetky viditeľné zdroje L[i] (spojnica PL[i] nepretne žiaden objekt scény) intenzitu • Iv := Iv + Idi + Isi
Phongov osvetľovací model • Iv = Is + Id + Ia • Iv – intenzita odrazeného svetla • Is – zrkadlová zložka • Id – difúzna zložka • Ia – ambientná zložka
4. krok • ak hĺbka H neprekročila max. hĺbku sledovania, vyšli: • a) odrazený lúč Rr volaním sleduj_lúč (Rr, H + 1) • b) lomený lúč Rt volaním sleduj_lúč(Rt, H+1)
5. krok • lúču R priraď výslednú farbu ako súčet príspevkov osvetlenia, farby odrazeného lúča Rr a farby lomeného lúča Rt
Zložitosť algoritmu • rd – hĺbka rekurzie • Npix – počet pixelov / počet lúčov • Nls – počet svetelných zdrojov • Nobj – počet obejktov na scéne
Výhody: Paralelné spracovanie postupného vytvárania obrazu priesvitnosť Nevýhody: Bodové zdroje (polotiene) Nepriame zdroje iba z dominantného smeru Iba pre statickú scénu Výhody a nevýhody
Zrýchlenie • Vysielať zväzky lúčov • Obalenie telies guľami • Zoradenie objektov podľa x, y, z
Použité zdroje • http://en.wikipedia.org/wiki/Ray_tracing_(graphics) • http://www.scratchapixel.com/joomla/lang-en/basic-lessons/lesson1.html • http://www.codermind.com/articles/Raytracer-in-C++-Part-I-First-rays.html • http://www.few.vu.nl/~kielmann/theses/avdploeg.pdf • http://cgg.ms.mff.cuni.cz/~pepca/ • http://amigareview.amiga.sk/amiga-review-23/najprv-bola-myslienka-potom-pocitac • http://www.3dstudio.cz/3dsmax/ostatni/index-lomu-svetla-(ior).html • http://grafika.sk/clanok/ps-halftone-efekt/ • http://www.math.sk/skripta/node22.html • http://www.butkaj.com/fyzika1?id_menu=561&id_sub=39&id_left=130