====== Realistické zobrazování ====== ===== Metoda sledování paprsku ===== [[wp>Ray tracing (graphics)]] Dobře zobrazuje: * Globální stíny * Průhlednost * Odrazivé povrchy Ovšem chybí měkké stíny, prasátka, nerozkládá paprsek na spektrální složky apod. ==== Princip ==== {{ http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/Ray_trace_diagram.svg/300px-Ray_trace_diagram.svg.png}} * Simulace reálného šíření světla * Paprsky fotonů šířící se ze světla do kamery (výpočetně enormně náročné) * V reálu prováděno **zpětné** sledování paprsku pro omezení počtu počítaných paprsků * Vysílání paprsků (**primární paprsky**) z kamery každým pixelem vypočítávaného obrazu do scény * Při dopadnu na objekt (výpočet průsečíku) vyhodnoceny vlivy zdrojů světla (Phong apod.) * Vyhodnocení světelné energie (RGB) * Je možné vrhnout z bodu paprsky (**stínové paprsky**) ke všem zdrojům (omezeno na bodové zdroje) a zjistit, zda-li jsou jím zastíněné, nebo ne. Podle toho se buď připočte příspěvek zdroje, nebo ne. * Při dopadu na lesklé / průhledné povrchy se vyšlou odrazové, popřípadě lámané **sekundární paprsky**, počítají se rekurzivně * //Vrhání paprsků -- Raycasting// je základní metoda //bez sekundárních paprsků// * Nezvládá: stíny, odrazy, lomy apod. ==== Urychlení výpočtů ==== * Rychlejší výpočet průsečíku * Obaly objektů * Méně výpočtů – hierarchie ohraničujících objemů. Např. strom rovnoběžnostěnů, kde pokud neprotne rodiče, nemusíme pokračovat. * Rozdělení prostoru * Méně paprsků * Adaptivní podvzorkování (adaptive sub-sampling) sníží počet vrhaných primárních paprsků (opakem je super-sampling) * Zobecněné paprsky – válec, kužel * Snadná paralelizace * Primární paprsek se vyhodnocuje nezávisle na ostatních. ===== Radiozita ===== [[wp>Radiosity (computer graphics)]] Je postavena na jiném principu než rodina metod založených na sledování paprsku. Myšlenka radiozity spočívá v aplikaci **zákona zachování energie** na uzavřené systémy složené z povrchů, jež světlo pohlcují, odrážejí a eventuelně vyzařují. Za předpokladu dostatečně malých elementů scény a dokonalé matnosti povrchů, radiozita počítá //fyzikálně správné osvětlení// (oproti ostatním metodám). ==== Rovnice radiozity ==== Udává plošné ohodnocení povrchových elementů ve scéně z hlediska přímého i nepřímého osvětlení daného elementu. Výsledkem výpočtu tedy není snímek. Při snímkování stačí už jen vyhodnotit viditelnost. //Bᵢ// = //Eᵢ// + //ρᵢ// · ∑//BjFij// * //Bᵢ// – záření (radiosity) z povrchu //i// * //Eᵢ// – vyzařování (emissivity) z povrchu //i// * //ρᵢ// – odraznost (reflectivity) povrchu //i// * Fij – form factor povrchu //j// oproti povrchu //j// === Form factor === * Schopnost výměny světelné energie dvou plošek ve scéně * Bezrozměrná veličina * Záleží na úhlech sevřených mezi nimi ==== Výpočet ==== * Množství dopadající světelné energie je možné vyjádřit pomocí form faktorů a intenzit světla vyzařovaných všemi ostatními ploškami ve scéně. * //n// lineárních rovnic o //n// neznámých, řešením jsou intenzity vyzařování z jednotlivých plošek. * Většinou matice silně diagonální (hodně plošek mají form faktor nulový, nevidí na sebe). * Jedná se o difúzní povrchy vyzařování je konstantní do všech směrů – nemusí se při zobrazení snímků znova počítat. ==== Postup osvětlování a zobrazování pomocí radiozity ==== * Získat form-factory * Přiřadit povrchům vlastní vyzařování * Řešit rovnici * Zobrazit vhodnou zobrazovací metodou (sledování paprsku, rasterizace) ==== Nevýhoda ==== * Pouze difúzní povrchy * Není odraz, průhlednost ==== Optimalizace ==== * Postupné iterační řešení rovnic * Na začátku se uvažuje pouze zdroje světla * Iteračně se světlo šíří, tvoří virtuální zdroje * Konverguje ke stejnému řešení, jako analytické * Světelné mapy * Pomoc texturou * Předpočítané osvětlení pro statickou scénu * Pomocí multitexturingu * Možnost kombinovat s Phongovým modelem osvětlení ===== Distribuované sledování paprsku ===== [[wp>Distributed ray tracing]] * Jednoduchá modifikace Raytracingu: paprsek nahrazen distribuční funkcí paprsků * Metoda je přísně deterministická (primární i sekundární paprsky jsou přesně určeny) generuje ideální odraz. * Každý paprsek je určen distribuční funkcí (pravděpodobnost, že paprsek bude vržen daným směrem). * Výpočet pomocí Monte Carlo (distribuce vzorkována náhodně zvolenými pokusy, výsledek je vážený průměr všech pokusů). * Metoda je základem pro techniky //sledování částic// a //sledování cest// ***Supersampling** * Vhodná metoda k potlačení aliasu * Pixel je počítán více než z jednoho vrženého paprsku ==== Paprsky z kamery (Eye rays) ==== * **Motion blur** * Rychle se pohybující objekty jsou rozmazány * Distribuční funkce může mít časovou složku * Paprsky vrhány v čase a pak sečteny (víc paprsků každým pixelem) * **Depth of field** * Hloubka ostrosti * Simulace objektivu * Paprsky nejsou vrhány z jednoho bodu ale procházejí čočkou s různou pravděpodobností ==== Stínové paprsky (Shadow rays) ==== * **Měkké stíny** * Pravděpodobnost, že bude paprsek vržen do různých míst zdroje * Tedy už ne bodové zdroje ==== Odražené paprsky (Reflection rays) ==== * **Matně odrazivé povrchy** * Simulace matnosti na mikroskopické úrovni * Více odrazných paprsků * Distribuční funkce ==== Zalomené paprsky (Refraction rays) ==== * **Matné průhledné povrchy** * Podobně jako odražené sekundární paprsky i zalomené sekundární paprsky nejsou v metodě distribuovaného sledování paprsku vrhány přesně podle zákonů optiky (které jsou uplatnitelné pouze pro ideálně lesklé povrchy), ale distribuční funkce určí variaci normály v daném bodě, která vyjadřuje matnost daného průhledného povrchu.