Sledování cest

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Sledování cest je termín používaný k popisu aktivity prováděné státem nebo jinými orgány za účelem monitorování pohybu lidí. Tato praxe byla běžná během komunistického režimu v Československu, kdy byla vládou sledována a kontrolována téměř každá činnost občanů. Sledování cest se také vyskytuje v současném Česku, ačkoli s omezenějším rozsahem. Během sledování jsou sbírána data o pohybu lidí pomocí různých technologií, jako jsou videokamery, mobilní telefony nebo platební karty. Tyto informace jsou používány k zajištění veřejné bezpečnosti, dodržování zákonů nebo v rámci vyšetřování trestných činů. Existují také obavy ohledně ochrany soukromí v souvislosti se sledováním cest. Lidé mají obavy o to, že jejich soukromí je narušováno a že jsou neustále pod dohledem. Již několikrát bylo zjištěno, že státní orgány nelegálně získávají a uchovávají data o pohybu občanů. Z tohoto důvodu je třeba, aby byla sledování cest prováděna v souladu se zákony a musí být zaručena přiměřená ochrana soukromí občanů. Sledování by mělo být prováděno pouze za účelem veřejného zájmu a nemělo by být zneužíváno k omezování svobod a práv občanů.

Sledování cest, je algoritmus používaný v počítačové 3D grafice k syntéze (renderování) obrazu virtuální trojrozměrné scény, v níž věrně simuluje globální osvětlení. Řeší zobrazovací rovnici za pomoci Monte Carlo integrování, kdy pro každý pixel výsledného obrázku opakovaně simuluje tok světla ve scéně formou náhodné procházky, neboli sleduje možné cesty paprsků světla, které vycházejí ze světelných zdrojů a po interakci se scénou dopadají do daného pixelu virtuální kamery (odtud název).

Sledování cest přirozeně a fyzikálně přesně simuluje mnoho efektů nepřímého osvětlení, které musí být při užití jiných metod (např. sledování paprsku) komplikovaně imitovány. +more Patří mezi ně zejména ideální odraz a lom světla, „půjčování barev“ (anglicky color bleeding), kaustiky, měkké stíny, zachycuje rovněž hloubku ostrosti či rozmazání pohybem. Při kombinaci s dostatečně přesnými modely povrchů objektů, světelných zdrojů a kamery pak produkuje obrázky nerozeznatelné od reálných fotografií. Pro získání takto kvalitních výstupů však musí být odsimulováno velké množství paprsků, jinak jsou výsledky zatíženy viditelným šumem.

Časová náročnost této metody dosud komplikuje nasazení v interaktivních aplikacích, díky své přesnosti a nestrannosti ale našla uplatnění například ve filmovém průmyslu a designu či je používána ke generování referenčních obrázků při testování kvality jiných renderovacích algoritmů. +morejpg|náhled'>Ukázka scény zobrazené pomocí algoritmu sledování cest. .

...

Historie

Když v roce 1986 James Kajiya publikoval zobrazovací rovnici a její využití v počítačové grafice, představil rovněž algoritmus pro nalezení jejího numerického řešení, jenž nazval sledováním cest. O deset let později na něj navázal Lafortune a navrhl mnohá zlepšení včetně tzv. +more obousměrného sledování cest.

V roce 1997 přispěli svou modifikací obousměrného sledování cest Eric Veach a Leonidas J. Guibas. +more Nesla název Metropolis light transport a byla založena na znovu využívání již nalezených cest z kamery do světelných zdrojů za účelem zvýšení výkonu v náročných scénách.

Na počátku nového tisíciletí bylo směřování dalšího vývoje ovlivněno nástupem programovatelných GPU. V roce 2002 prezentoval Timothy Purcell první algoritmus globálního osvětlení běžící na GPU. +more Následné zdokonalení technologií pro programování GPU (OpenCL, CUDA, ATI Stream) pak spolu s nárůstem výpočetní síly znovu podnítilo zájem o algoritmy založené na sledování cest. První komerční GPU implementaci sledování cest demonstroval Austin Robison ze společnosti NVIDIA v únoru 2009 a další následovaly. V současnosti jsou již některé schopny vykreslovat fotorealistické scény v reálném čase.

Existující implementace

Čistě CPU: ** [url=http://corona-renderer. com/]Corona[/url] (volně dostupný, ve vývoji, český autor) ** [url=http://www. +moresolidangle. com/]Arnold[/url] (komerční) * Čistě GPU: ** [url=http://render. otoy. com/]Octane Render[/url] (komerční) * Hybridní (CPU s GPU akcelerací): ** [url=https://web. archive. org/web/20121221062442/http://www. randomcontrol. com/arion]Arion[/url] (komerční) ** [url=http://www. luxrender. net]LuxRender[/url] (open-source) ** [url=http://www. maxwellrender. com/]Maxwell Render[/url] (komerční) ** [url=http://www. indigorenderer. com/]Indigo[/url] (komerční).

Základní verze algoritmu

Teoretické pozadí

Algoritmus chápe světlo jako spojitou nekonečně dělitelnou energii, která vychází ze světelných zdrojů a šíří se prostředím, kde interaguje s povrchy objektů, až se ustálí v rovnovážném stavu. Přitom předpokládá, že se světlo vzájemně neovlivňuje, tj. +more že energie přicházející do jednoho místa z více směrů se jednoduše sčítá. Tento model je zjednodušením reality, nepostihuje vlnový ani částicový charakter světla, odpovídá spíše geometrické optice. Sledování cest tudíž v této podobě nesimuluje jevy jako je difrakce, disperze, interference či polarizace.

Vyzařování a přenos světla jsou charakterizovány radiometrickými veličinami, zejména září L(\mathbf{x},\omega) vyjadřující směrovou hustotu toku světla v bodě \mathbf{x} ve směru \omega. Zář daným bodem emitovaná je typicky značena L_e a nabývá nenulových hodnot pro body na povrchu světelných zdrojů. +more Nelze ji však použít pro popis bodových zdrojů, k tomu slouží veličina zářivost.

Interakce světla s hmotou je vyjádřena pomocí BRDF, tj. funkce f_r(\mathbf{x},\omega_i\rightarrow\omega_o) udávající v zásadě hustotu pravděpodobnosti, s jakou se světlo dopadající ze směru \omega_i do bodu \mathbf{x} odrazí do směru \omega_o. +more Tato funkce zachycuje odrazivé vlastnosti materiálů ve scéně, modeluje mikrostrukturu jejich povrchů.

Podmínku na rovnovážné rozložení světla ve scéně formuluje zobrazovací rovnice: :L(\mathbf x,\omega_o) = L_e(\mathbf x,\omega_o) + \int_H L(r(\mathbf x, \omega_i), -\omega_i) \cdot f_r(\mathbf x, \omega_i \rightarrow \omega_o) \cdot cos(\theta_i)\mathrm d \omega_i. Ta říká, že odchozí zář v bodě \mathbf{x} ve směru \omega_o je dána součtem záře tímto bodem do tohoto směru emitované a integrálu záře příchozí do \mathbf{x} z libovolného směru hemisféry, která se s pravděpodobností danou BRDF do směru \omega_o odrazila.

Cílem algoritmu pak je pro daný popis světelných zdrojů pomocí emitované radiance a povrchů pomocí BRDF nalézt takové rozložení světla ve scéně, které splňuje zobrazovací rovnici, tzn. nalézt její řešení. +more Zobrazovací rovnici je však typicky nemožné vyřešit analyticky (scény mají složitou geometrii, integrand je tudíž nespojitý a nabývá takřka libovolných hodnot), sledování cest je proto řešením numerickým. Integrál v rovnici algoritmus odhadne metodou Monte Carlo pomocí jednoho náhodně vygenerovaného směru, neboli spočítá :\hat{L}(\mathbf x,\omega_o) = L_e(\mathbf x,\omega_o) + \frac{L(r(\mathbf x, \omega_i), -\omega_i) \cdot f_r(\mathbf x, \omega_i \rightarrow \omega_o) \cdot cos(\theta_i)}{p(\omega_i)}, kde \omega_i je směr náhodně vygenerovaný podle hustoty pravděpodobnosti p.

Algoritmus

Vlastní renderování probíhá následovně. Pro daný pixel výstupního obrázku je náhodným směrem skrze něj z kamery do scény vržen paprsek. +more Jestliže žádný objekt scény netrefí, použije se zář pozadí a cesta končí. Jinak se nalezne nejbližší průsečík se scénou a spočítá se zde odhad odchozí záře podle vztahu výše. Tj. leží-li průsečík na zdroji, přičte se emitovaná zář zdroje, a zář odražená se odhadne rekurzivně opětovným vržením paprsku do scény v náhodném směru hemisféry. Aby nevznikaly nekonečné cesty a algoritmus skončil, nevrhá se další paprsek vždy, nýbrž pouze s pravděpodobností rovnou odrazivosti povrchu v místě průsečíku. Tento postup se pro každý pixel zopakuje mnohokrát a příspěvky jednotlivých cest se zprůměrují.

V této podobě lze celý algoritmus zapsat následujícím pseudokódem:

renderImage { for each pixel p { Color pixelColor = (0, 0, 0); for k = 1 to N { w = randomDirThroughPixel(cameraPosition, p); pixelColor += getL(cameraPosition, w); } setOutputPixel(p, pixelColor / N); } }

getL(x, wo) { Color L = (0, 0, 0); hit = nearestIntersection(x, wo); if isEmpty(hit) return backgroundRadiance(x, wo); if isOnLightSource(hit) L += Le(hit. pos, -wo); ρ = reflectance(hit. +morepos, -wo); if rand.

Vylepšení

Popsaná verze algoritmu je ryze základní, slouží především pro ilustraci. Ač je z teoretického hlediska korektní, v praxi velice špatně konverguje, pročež se typicky implementuje s celou řadou vylepšení. +more Mezi nejvýznamnější z nich patří:.

Vzorkování podle BRDF

Místo uniformního generování směrů (vzorkování) hemisféry se použije technika vzorkování podle důležitosti a hemisféra se vzorkuje podle BRDF. Tedy místo konstantní hustoty 1/(2\pi) jsou směry generovány podle hustoty co nejpodobnější BRDF. +more Například pro difúzní komponentu Phongovy BRDF se používá hustota \cos(\theta)/\pi, kde \theta je úhel mezi vygenerovaným směrem a normálou plochy v místě průsečíku. Paprsky jsou tak vrhány ve směru pravděpodobnějšího odrazu.

Vzorkování světelných zdrojů

V některých situacích samotné vzorkování podle BRDF selhává (zejména pro malé či bodové světelné zdroje). Kombinuje se proto se vzorkováním světelných zdrojů, kdy se v místě dopadu paprsku vrhá, vedle paprsku sloužícího pro rekurzivní výpočet odražené záře, ještě jeden speciální paprsek k náhodně vygenerovanému bodu na zdroji (ten ve zdroji končí, cesty se tedy exponenciálně nevětví). +more Příspěvky obou paprsků se poté sečtou s vhodnými vahami.

Složitější interakce světla se scénou

BRDF popisuje pouze odraz světla, počítá se proto s komplikovanějšími distribucemi BTDF či BSDF modelujícími lom, resp. rozptyl světla, pro některé materiály se uvažují i odrazy pod povrchem (BSSRDF).

Osvětlení mapou prostředí

Místo bodových a plošných světelných zdrojů scénu osvětluje myšlená nekonečná koule kolem ní, na níž byl namapován obraz reálného prostředí. Implementace tohoto vylepšení významně ovlivňuje uvěřitelnost výstupu.

Obousměrné sledování cest

Sledování cest směrem z kamery do světelných zdrojů není v praxi pro vykreslení některých jevů použitelné, např. kaustiky konvergují jen velice pomalu. +more Obousměrné sledování cest proto tento směr kombinuje i se směrem opačným, tj. ze zdrojů do kamery.

Zkratky

BSDF - Bidirectional scattering distribution function * BRDF - Bidirectional reflectance distribution function * BTDF - Bidirectional transmittance distribution function * BTF - Bidirectional texture function * BSSRDF - Bidirectional Surface Scattering Reflectance Distribution Function * SVBRDF - Spatially Varying Bidirectional Reflectance Distribution Function

Odkazy

Reference

Literatura

KŘIVÁNEK, Jaroslav. Počítačová grafika III. +more Praha, 2012. Přednáška na Matematicko-fyzikální fakultě Univerzity Karlovy. [url=http://cgg. mff. cuni. cz/~jaroslav/teaching/2012-NPGR010/index. html]Dostupné online[/url].

VEACH, Eric. Robust Monte Carlo Methods for Light Transport simulation. +more Stanford, 1998. Disertační práce (PhD. ). Stanford University. [url=http://graphics. stanford. edu/papers/veach_thesis/]Dostupné online[/url]. (anglicky).

Související články

Obousměrné sledování cest * Globální osvětlení * Zobrazovací rovnice * Radiometrické veličiny * BRDF * Monte Carlo integrování

Externí odkazy

[url=http://people. cs. +morekuleuven. be/~philip. dutre/GI/]Global Illumination Compendium[/url] - Souhrn matematických vztahů souvisejících nejen se sledováním cest ale s globálním osvětlením obecně (anglicky).

Kategorie:Počítačová 3D grafika Kategorie:Algoritmy počítačové grafiky

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top