Ray Tracing

Ray tracing – vizualizace je jednou z možností, jak se může fotografie vyvíjet do budoucna. Může překonat i digitální fotografii a stát se jejím velkým konkurentem či do konce nástupcem. Je zde opět vidět jak jde doba a vývoj stále dopředu. Jde o zobrazování skutečnosti a uplatňuje se v nejrůznějších oborech, jako jsou například architektura, strojírenství či geografie.

Její využití v architektuře je velmi přínosné. Díky ní se dají vymodelovat jak interiéry, tak i exteriéry plánovaných výstaveb. Po zpracování architektonického vizuačního modelu můžeme vidět fotorealistické obrazy ve 3D ve skutečné podobě, jak bude po provedené výstavbě budova či okolí vypadat. Dnes je již pro každý projekt a jeho následnou prezentaci využíván právě tento vizuální model. Pro architektonickou vizualizaci se používá řada počítačových programů, například ArchiCAD, Revit, 3DS Max, Maya, Cinema 4D, AutoCAD atd.[1]

 

Postup

Ray tracing neboli sledování paprsku je jednou z metod realistického zobrazování. Z kamery, která je pozorovatelem, se vyšle paprsek a zjistí se průsečík s nejbližším objektem. Následuje výpočet vržených stínů, které procházejí od světelných zdrojů. Výpočet se provádí v místě každého odrazu paprsku světla, od povrchu objektu vrhnou ještě ke všem světelným zdrojům sekundární neboli stínovací paprsky.[2]

Z oka neboli nastavení kamery se vyšle pro každý pixel obrazu paprsek a podle odrazů, průchodů a dopadu se počítá výsledná barva.[3]

Důležité je mít hodně světel kvůli více stínům, což nám pomůže ve výsledném vykreslení měkkého přirozeného stínu. Jeden bodový zdroj světla vytvoří jeden ostrý stín a více bodových světelných zdrojů vytvoří větší množství ostrých překrývajících se stínů, což je nežádoucí.

Stíny se počítají u vržených paprsků tak, že se vyšetří jejich průsečík od pozorovatele do scény. Odražené nebo lámavé paprsky nazýváme sekundární. Zachycení stínu je velmi snadné, neboť se paprsek sleduje při dopadu, jestli dokáže dorazit ke zdroji světla.[4] Pokud světlo dopadá na rozhraní dvou optických prostředí, tak se od něj částečně odráží a částečně prochází z jednoho prostředí do druhého.[5] V potaz, při zjišťování viditelnosti světla bereme pouze přímou dráhu paprsku. Například tedy zrcadla v sobě sice odráží okolí, ale naopak neodráží od sebe světlo do okolí.[6]

Ray tracing - paprsek

Ray tracing – paprsek

 

Výpočet

Ray tracing má velmi náročnou metodu výpočtu a je tedy i náročný na čas.

Algoritmus výpočtu:

For (každý zobrazovaný pixel) {   Vytvoř paprsek vycházející z pozice kamery prochazející pixelem  Nastav nejbližší objekt NejblizsiO na NULL   Nastav vzdálenost průsečíku paprsku PrusecikN s nejbližším objektem na nekonečno   Prunik_s_ojektem_sceny(paprsek)   if (NejblizsiO != NULL) {     Urci_intenzitu_paprsku(paprsek,1)     Vystínuj pixel    }    else  {     Nastav barvi pixelu na barvu pozadí} } /******************************************************************************/Prunik_s_ojektem_sceny(parsek){   for (každý objekt scény) {     if (paprsek protíná objekt) {        if (vzdalenost průsečíku je menší než PrusecikN) {           Nastav PrusecikN na vzdalenost tohoto průsečíku           Nastav nejbližší objekt NejblizsiO na tento objekt        }     }  }}/******************************************************************************/ Urci_intenzitu_paprsku(paprsek,generace){      if (generace < max_hlobka_stromu){      if (povrch je reflektivní) vytvoř reflection_ray         Urci_intenzitu_paprsku(reflection_ray,generace+1)      if (povrch je transparentní) vytvoř refraction_ray        Urci_intenzitu_paprsku(refraction_ray,generace+1)      }            for (každé světlo scéno) {           vytvoř shadow_ray            Prunik_s_ojektem_sceny(shadow_ray )          if (NejblizsiO != NULL) {pixel je vudči tomuto světlu ve stínu}          else {urči intenzitu paprsku}}[7]

 

Existují však metody, kterými se dá výpočet zjednodušit a tak i urychlit. Nejčastější zjednodušující metodou je urychlení výpočtu průsečíků. Můžeme použít buď speciální funkce na výpočet průsečíků s každým typem objektu (pro testy potencionálních průsečíků před vlastními výpočty s tělesem) anebo použít snížení počtů výpočtů průsečíků – obálky, hierarchie obálek, dělení scény (BSP, octree), paměť překážek, válcové nebo kuželové obálky paprsků.[8] Další z možností jak urychlit výpočet je takzvaný antialiasing, který se v grafice používá k vyhlazení hran či tzv. zubů. Zde použijeme Adaptivní antialiasing – zřetelné vysílání paprsků v jednoduché části obrazu a interpolace při malé změně, naopak ve složitých částech výpočet každého pixelu či dokonce výpočet několika paprsků pro jeden pixel.[9] Další metodou může být řízení hloubky rekurze, což je útlum jasu paprsků při odrazech a lomech, při poklesu pod daný limit ukončení větrání.[10] Poslední metodou můžeme využít teoreticky snadnou paralelizaci výpočtu průsečíků.[11]

 

Osvětlení

Při vybarvení celých ploch začne být proces náročnější. K dosažení tohoto vybarvení je více variant. Možnosti jsou de facto tři, ale z toho první dvě nejsou příliš ideální.

  1. Můžeme si předem stanovit, jakou barvu pixel bude mít – např. modrou. Takto se to využívá hlavně u bitmapové grafiky, jako je např. Adobe Photoshop.
  2. Jde o využití u vektorové grafiky s pomocí programu např. Adobe Ilustrator či CorelDraw a to tak, že matematicky vypočítáme oblast, kterou chceme vybarvit danou barvou, a software nám spočítá, které pixely obarví.
  3. Popíšeme zobrazovanou scénu, přiřadíme materiály, popíšeme světlo a spustíme výpočet zobrazení. Této metodě se často říká „rendering“.[12]

I když se zdá poslední z uvedených variant nejlepší, nutno připomenout, že i vytvoření popisu objektů, nasvícení, definice materiálů a další potřebné úkony zaberou spoustu času a je proto důležité si vhodně vybrat správnou variantu. Obecným pravidlem je, že pro jeden obrázek je nejvhodnější přímá kresba.[13]

 

 


[1] Vizualizace. In: Vikipedia : The Free Encyclopedia [online]. St. Petersburg (Florida) Wikipedia Fundation, 11. 12. 2006, last modified on 5 March 2015[cit. 2015-10-28]. Dostupný z: https://cs.wikipedia.org/wiki/Vizualizace
[2] MARTIN, Lucian E., Sledování paprsku (Ray tracing). In: Soulwasted [online]. August 5, 2009. [cit. 2015-10-28]. Dostupný také z: http://wp.soulwasted.net/msz/pgr/sledovani-paprsku-ray-trasing
[3] Tamtéž
[4] MARTIN, Lucian E., Sledování paprsku (Ray tracing). In: Soulwasted [online]. August 5, 2009. [cit. 2015-10-28]. Dostupné také z: http://wp.soulwasted.net/msz/pgr/sledovani-paprsku-ray-trasing
[5] Tamtéž
[6] Ray tracing. home.czu.cz [online]. 2015 [cit. 2015-10-28]. Dostupné také z: http://home.zcu.cz/~smolik/zpg/cviceni/cv_06.html
[7] Ray tracing. home.czu.cz [online]. 2015 [cit. 2015-10-28]. Dostupné také z: http://home.zcu.cz/~smolik/zpg/cviceni/cv_06.html html
[8] Tamtéž
[9] Tamtéž
[10] Tamtéž
[11] Tamtéž
[12] Ray tracing. home.czu.cz [online]. 2015 [cit. 2015-10-28]. Dostupné také z: http://home.zcu.cz/~smolik/zpg/cviceni/cv_06.html
[13] Tamtéž