České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Bakalářská práce
Simulace stárnutí materiálů
Filip Hřebačka
Vedoucí práce: Ing. Sloup Jaroslav
Studijní program: Elektrotechnika a informatika, strukturovaný, bakalářský Obor: Výpočetní technika 10. června 2008
ii
Poděkování Děkuji svému vedoucímu Ing. Jaroslavu Sloupovi za pomoc při tvorbě této bakalářské práce.
iii
iv
Prohlášení Prohlašuji, že jsem práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu paragrafu 60 Zákona L. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 10.6.2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
vi
Abstract In this paper we present aging and weathering simulation techniques. To this category belong not only corrosion, patina, dirt, scratches, lichen growth and particle transfer between objects in virtual scene. We aim on technique that works well for a wide variety of weathering phenomena. This technique is called Visual Simulation of Weathering By γ-ton Tracing. Several effects that are challenging for existing techniques like particle transfer, “stain-bleeding” or multi-weathering effects can be readily captured by γ-ton tracing. In scope of activity application was created. This application can simulate corrosion, patina, lichen growth and particle transfer by setting up several parameters.
Abstrakt V této práci představíme metody, pomocí kterých je možno simulovat stárnutí a opotřebení materiálů. Do této kategorie mimo jiné patří rez, patina, špína, škrábance, růst lišejníků a přenos částic mezi jednotlivými objekty ve virtuální scéně. Zaměříme se zejména na metodu, pomocí které je možno simulovat široké spektrum efektů stárnutí. Tato metoda se nazývá vizuální simulace stárnutí sledováním γ-tonů. S pomocí této metody je možno simulovat i několik efektů, které bylo dříve velmi obtížné simulovat, jako přenos částic mezi objekty, “stékání skvrn (stain-bleeding) ”, nebo simulace několika efektů naráz. V rámci práce byla vytvořena aplikace, která umožňuje simulovat rez, patinu, růst mechu a přenos částic pouhým nastavením několika parametrů.
vii
viii
Obsah 1 Úvod
1
2 Shrnutí existujících řešení 3 2.1 Hromadění prachu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Vizuální simulace ukládání prachu . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Simulace stárnutí klimatickými jevy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.1 Vizuální simulace stárnutí za pomoci sledování γ-tonů . . . . . . . . . . . 5 2.2.2 Simulování a renderování koroze. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Škrábance a promáčkliny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.1 Povrchové škrábance: Měření, modelování a renderování. . . . . . . . 13 2.3.2 Stárnutí povrchu nárazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Růst lišejníků . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3 Analýza a návrh řešení 19 3.1 PBRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 Odlišnosti oproti původní předloze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3 Vlastnosti aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4 Změny oproti fotonovým mapám v PBRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4 Implementace 23 4.1 Metody použité v implementaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1.1 Výběr náhodného bodu na povrchu jednotkové koule . . . . . . . . . . . 23 4.2 Popis vybraných částí implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2.1 Střílení γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2.2 Chování γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2.3 Přenos a rozpoznání materiálů. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.4 Zobrazování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5 Výsledky a testování 5.1 Tečení skvrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Postupné stárnutí sochy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Rozdíl mezi usazením, odrazem, odskokem a tečením. . . . . . . . . . . . . . . . . . . 5.3 Časová složitost v závislosti na parametrech. . . . . . . . . . . . . . . . . . . . . . . . . . .
29 29 31 32 33
6 Závěr
35
7 Seznam použité literatury
37
A Uživatelská příručka A.1 Instalace pod Windows vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Spuštění pod Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Konfigurační soubor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4 Parametry stárnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.5 Materiály v našem systému a jejich vlastnost . . . . . . . . . . . . . . . . . . . . . . . . .
39 39 39 40 41 42
B Obsah CD
43 ix
Seznam obrázků 1.1: Model hydrantu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.1 Zaprášené koule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Zaprášená koule se setřeným nápisem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Shrnutí sledování γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Střílení γ-tonů z polokulového zdroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5 Bodová reprezentace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 Čtyři možnosti pohybu γ-tonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.7 γ-přenos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.8 Skvrna vzniklá kapáním vody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.9 Sfinga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.10 Růst mechu a kapání koroze z řetězu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.11 Galvanická koroze a diferenciální aerace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.12 Expanze koroze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.13 Sekáček . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.14 Koroze trubek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.15 Profil škrábance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.16 Mapa škrábanců . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.17 Poškrábané nástroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.18 Staré promačkané objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.19 První 2 kroky simulace stárnutí povrchu nárazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.20 Adaptivně zjemněná síť . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.21 Usazení lišejníků . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.21 Komplexní scéna s různými typy lišejníků . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1 Ukázky PBRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.1 Rozložení bodů na povrchu koule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 Zdroje γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.3 γ-tonové mapy u různých zdrojů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4 Chování částice při odrazu a odskoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5 Chování částice při tečení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.6 γ-tonové mapy dle chování γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.7 Přenos materiálů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1 Řetěz zavěšený na dvou sloupcích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 Řetěz zavěšený na dvou sloupcích s tečením částic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.3 Řetěz zavěšený na dvou sloupcích s odskokem částic . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4 Postupné stárnutí bronzové sochy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31-32 5.5 Zkorodovaný drak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.6 Rotoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.7 Textový výstup PBRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.8 Graf časové náročnosti na počtu γ-tonů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
x
Seznam tabulek 3.1 Definovatelné parametry v konfiguračním souboru . . . . . . . . . . . . . . . . . . . . . . . . . . 20 A.1: Parametry stárnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xi
41
xii
1. Úvod Většina materiálů v reálném světě mění po čase svůj vzhled díky interakci materiálů a prostředí, které je obklopuje. Modelování těchto nedokonalostí, jako jsou prach, špína, škrábance, patina, rez a další vady materiálů v počítačové grafice je nezbytné, aby obrázky vypadaly jako ze světa, ve kterém žijeme. Jeden z nejrozšířenějších přístupů je prostě vytvářet detailní textury a objekty „ručně“. Ale toto je velmi časově náročný a obtížní úkol, který mohou vykonávat pouze nadaní umělci a designéři. Fyzikálně založené techniky *9+ mohou simulovat mnoho různých nedokonalostí. Stinná stránka tohoto přístupu je, že musíme vytvořit nový model pro každý specifický efekt. A navíc fyzikálně založená simulace není vždy možná, protože proces stárnutí, ať už fyzikální, chemický, biologický, nebo jejich kombinace je příliš složitý na simulaci, nebo mu plně nerozumíme. V této práci bychom Vám rádi představili metodu známou jako „Visual Simulation of Weathering By γ-ton Tracing“ neboli vizuální simulace stárnutí (klimatickými vlivy) za pomoci γ-tonů [5]. γ-ton (vyslovuje se jako gamaton) je pojmenován podle řeckého slova „γεροs“, což znamená stáří. Generování procesu stárnutí se skládá ze dvou kroků. Nejprve emitujeme částice ze zdrojů γ-tonů a poté je sledujeme po scéně. Výsledkem prvního kroku je γ-tonová mapa, která obsahuje informace o pohybu γ-tonů. V druhé fázi z této mapy generujeme výsledný efekt stárnutí změnou vlastností povrchu a geometrie objektu. Pomocí této metody můžeme simulovat i více efektů najednou, jak je vidět na obrázku 1.1. Dále je možno simulovat přenos materiálů, s kterým mají ostatní metody velké problémy.
Obrázek 1.1: Model hydrantu. Zleva doprava přibývá rez a špína. Mezery mezi dlaždicemi zarůstají mechem. Převzato z [5].
1
V další části práce je proveden rozbor existujících řešení. Důraz je kladen na metodu, kterou jsme se rozhodli implementovat tj. na vizuální simulaci stárnutí za pomoci γ-tonů. Ve třetí části naleznete analýzu řešení následovanou implementací. V páté části vás seznámíme s výsledky naší implementace.
2
2. Shrnutí existujících řešení Stárnutí materiálů je proces, při kterém dochází k změnám na povrchu materiálů. V přírodě může trvat tento proces i tisíce let, například eroze. Stárnutí se dělí na mechanické, chemické a biologické. Mechanické stárnutí je způsobeno ukládáním cizích částic na povrchu, jeho poškrábáním, promáčknutím, rozlomením, odloupnutím, nebo erozí. Chemické stárnutí způsobuje patinu, korodování, nebo ztrátu lesku. Biologické procesy způsobují růst organických materiálů, nebo zvrásnění. V dalším textu si popíšeme některé vybrané metody simulace stárnutí (hromadění prachu, eroze, koroze, opotřebení, růst organických materiálů) materiálů používané v počítačové grafice.
2.1 Hromadění prachu Prach je souhrnné jméno pro drobné částice s průměrem menším než 500 mikrometrů. Částice v atmosféře se skládají ze zdrojů jako prašná půda zvířená větrem, sopečné erupce a znečištění. Prach v domácnostech, kancelářích a dalších lidských prostředích obsahuje lidskou kůži, pyl, lidské a zvířecí vlasy, textilní vlákna, částečky papíru, hlínu a mnoho dalších materiálů, které mohou být nalezeny v místním prostředí.
Obrázek 2.1: Zaprášené koule. Vlevo počítačem generovaná, vpravo skutečná. Převzato z [1]. Na rozdíl od laboratoří a operačních sálů jsou téměř všechny místnosti a předměty více či méně zaprášené. Ačkoliv se na prach většinou nebere ohled, je občas nutné ho zahrnout do renderovaných scén, abychom dostali opravdu realistické obrázky, protože rozptyl a odraz světla zaprášených předmětů se liší od těch čistých.
3
2.1.1 Vizuální simulace ukládání prachu Simulací ukládání prachu se zabývá práce *1+, ve které je hromadění prachu založeno na zjištění vlastností povrchu, jako je jeho naklonění a přilnavost a poté je upraveno za pomoci několika vnějších faktorů jako vítr a zakrytí ostatními objekty. K vypočtení hromadění prachu je definována takzvaná „normálová prachová funkce“. Tato funkce aproximuje množství prachu za použití orientace povrchu, orientace zdroje prachu a přilnavosti povrchu. Vliv externích faktorů je modelován za použití faktoru alfa, který udává informaci, jaké množství prachu bude skutečně uloženo. Dostupnost povrchu pro bod P je změřena střílením a sledováním několika náhodných paprsků z tohoto bodu a počítáním nárazů. V závislosti na prostředí může dostupnost povrchu mít záporný efekt (méně částic může dosáhnout povrchu na tomto místě), nebo kladný efekt (prach má menší šanci být odstraněn větrem, nebo setřením) na hromadění prachu. Efekty setření, které můžeme vidět na obrázku 2.2, jsou modelovány za použití prachových map. Množství prachu na povrchu je změněno podle vzorku v prachové mapě.
Obrázek 2.2: Zaprášená koule se setřeným nápisem. Převzato z [1]
Ke zvýšení realismu můžeme použít několik zdrojů prachu. Při renderování se nejprve sečte množství prachu podle Perlinovy šumové funkce. Finální vlastnosti povrchu jsou lineárně interpolované z vlastností plně zaprášeného povrchu a vlastností původního povrchu. Abychom dostali přesnější výsledky, tak můžeme použít předpočítané BRDF tabulky s různým množstvím prachu. Během renderování můžeme interpolovat mezi těmito tabulkami.
4
2.2 Simulace stárnutí klimatickými jevy Modelování stárnutí klimatickými jevy je určitě velmi důležitý aspekt v generování realistických obrázků, protože téměř každý venkovní objekt v „reálném světě“ je ovlivněn těmito jevy. Tyto jevy samozřejmě můžeme modelovat vytvářením detailních textur jejich kombinováním, ale toto je obvykle velmi časově náročný úkol. Navíc tento přístup není příliš flexibilní, protože i malá změna v geometrii objektu může naší snahu znehodnotit. Následující více sofistikované metody často nabízejí mnoho možností, jak dosáhnout stejných, či dokonce lepších výsledků rychleji a jednodušeji.
2.2.1 Vizuální simulace stárnutí za pomoci sledování γ-tonů Tato technika zvaná sledování γ-tonů (vyslovuje se „gamaton“) je založena na věk simulujících částicích zvaných γ-tony [5]. Generování efektu stárnutí je iterativní proces. Každá iterace vytváří krok v sekvenci stárnutí dvěma kroky. V prvním kroku jsou γ-tony emitovány ze zdrojů a jsou sledovány po scéně podobně jako sledování fotonů [12]. Výsledkem prvního kroku je γ-tonová mapa popisující pohyb γ-tonů po scéně. Z γ-tonové mapy se v druhém kroku generuje aktuální efekt stárnutí změnou povrchových vlastností materiálu a změnou geometrie přes multi-texturing, syntézu textury a displacement mapping. Díky iteracím můžeme vytvořit kumulativní efekt stárnutí. Zdroje γ-tonů jsou zdroje stárnutí, které mohou být bodové, prostorové, nebo environmentální. Bodový zdroj je vhodný pro efekty jako stékání rzi dolů po stěně z kapající trubky, kdežto environmentální se hodí pro efekty stárnutí způsobené ambientními faktory, jako jsou znečištěný vzduch. Emitované γ-tony se pohybují po scéně, interagují s povrchy. Každý bod povrchu má definovány vlastnosti zvané činitele odrazu, které ovlivňují směr odražených γ-tonů. Pro hospodárnost jsou směry γ-tonů dány pravděpodobnostně činiteli odrazu za použití Ruské rulety. Interakce γ-tonů s povrchy neovlivňuje pouze směr γ-tonů, ale také umožňuje γ-přenos. Výslovně γ-ton, který se odrazil od bodu na povrchu, může vzít nečistotu a uložit ji na jiném místě. Se sledováním γ-tonů můžeme generovat efekty stárnutí přizpůsobené geometrii scény. Iterativní povaha sledování γ-tonů nám umožňuje měnit činitele odrazu povrchů za použití γ-tonové mapy z předchozí iterace a toto ovlivňuje sledování γ-tonů v dalších iteracích. Toto se hodí pro modelování mnoha efektů stárnutí, jako je fakt, že ve skutečném světě korodují rychleji již zkorodované oblasti. Toto může být modelováno přes iterativní úpravu činitele odrazu zkorodovaných oblastí, aby zachytávaly více γ-tonů. γ-přenos je důležitou součástí sledování γ-tonů. S touto vlastností můžeme zachytit efekt globálního přenosu, nebo “stékání skvrn”. Navíc, protože nečistoty mohou být přenášeny z jednoho místa na jiné, kde budou dělat jiný typ procesu stárnutí, γ-přenos 5
umožňuje komplexní mnohonásobný efekt stárnutí (multi-weathering efekt), který je výsledkem několika souběžně běžících a ovlivňujících se procesů stárnutí. Další důležitou vlastností sledování γ-tonů je, že může generovat efekt stárnutí, který nezahrnuje pouze změnu textury, ale i změnu geometrie. Změn geometrie ve velkém měřítku je možné dosáhnout díky iteracím. Změna geometrie v každé iteraci je implementována jako displacament mapa definována shodně jako γ-tonová mapa. V další iteraci je sledování γ-tonů a displacement mapping vykonány na vrchol změněné geometrie z předchozí iterace. Díky tomuto je možné dosáhnout změn geometrie ve velkém měřítku a simulovat efekty stárnutí jako jsou eroze a koroze.
Sledování γ-tonů
Obrázek 2.3: Shrnutí sledování γ-tonů. Převzato z [5].
Obrázek 2.4: Střílení γ-tonů z polokulového zdroje. γ-tony po dopadu odskakují. Převzato z [5]. Střílení γ-tonů je shrnuto na obrázku 2.3. Během každé iterace jsou vytvořeny a vystřeleny tisíce γ-tonů. Jak se γ-tony pohybují scénou, tak katalyzují stárnutí povrchů, do kterých narazily (obrázek 2.4). Při každém nárazu mohou sebrat, nebo uložit částečky na povrchu. Abychom mohli přesně uložit náhodné rozmístění γ-tonů a reprezentovat vlastnost povrchu v těchto místech, tak generujeme bodový model [13] ze vstupní scény, jak je vidět na obrázku 2.5. Každý generovaný surfel má svoje vlastní činitele odrazu a vlastnosti materiálu. Činitel odrazu ovlivňuje, jak se γ-tony odráží, kdežto vlastnosti materiálu udržují 6
informace o složení materiálu. Nečistota, která je modelována, je jedna z vlastností materiálu. Hromadění nečistot na všech surfelech utváří přenos nečistot, γ-tonovou mapu. Tato bodová reprezentace γ-tonové mapy nám umožňuje zvládnout různé geometrické reprezentace vstupní scény.
Obrázek 2.5: Originální model (vlevo) je přetransformován do bodové reprezentace (uprostřed). Po sledování γ-tonů obdržíme γ-tonovou mapu nad surfely (vpravo) indikující přítomnost metalické patiny. Převzato z [5].
γ-tony a jejich zdroje Každý γ-ton přenáší dva hlavní typy atributů, pohyb a přenos. Atribut pohybu udává, jakým směrem se γ-ton pohybuje, kdežto atribut přenosu udává, jaké částečky jsou přenášeny. Tyto atributy pohybu jsou povinné pro všechny γ-tony, kdežto atributy přenosu závisí na efektu, který simulujeme. Příklad γ-tonu: Ton { ks , kp , kf ;
sv ; ss ; sh ; }
// Atributy pohybu: // Pravděpodobnost pohybu po přímce, parabole a tečení //Atributy přenosu: // Vlhkost // Množství špíny // Množství hub
Cesta γ-tonu je náhodně určená jeho vlastnostmi pohybu (ks,kp,kf). V daném čase může být γ-ton jen v jednom ze čtyř základních pohybových stavů (Obrázek 2.6) a to po přímce, parabole, téct po objektu, nebo se usadit na objektu. Atributy pohybu reprezentují energii γ-tonu. γ-ton se pohybuje jedním ze tří prvních možností, dokud mu zbývá dostatek energie. Jakmile mu energie dojde tak se usadí. Součet atributů pohybu musí být menší, nebo roven jedné ( ks+kp+kf≤0 ). A proto je pravděpodobnost usazení reprezentována jako ( 1–ks-kp-kf ). Tyto vlastnosti pohybu se nemění dokud γ-ton nenarazí na povrch, kde se tyto vlastnosti změní podle činitele odrazu povrchu. 7
Obrázek 2.6: Čtyři možnosti pohybu γ-tonu po nárazu na povrch. Převzato z [5].
Atributy přenosu jsou pro každou možnou přenášenou částici. Počet atributů se může měnit a záleží na efektu stárnutí, který modelujeme. Navíc mohou být i γ-tony, které zpomalují stárnutí. Například γ-tony přenášející „teplo“ napodobující sluneční záření, které snižují korozivní částečky, jako jsou „vlhkost“ na povrchu kovů.
Činitel odrazu a vlastnosti materiálu Každý materiál má dvě vlastnosti, činitel odrazu a vlastnost materiálu. Činitel odrazu (Δs, Δp, Δf) udává, jak se γ-tony od povrchu odrážejí. Vlastnost materiálu zahrnuje množství špíny a jiných částic na povrchu. Příklad surfelu: Surfel { Δs, Δp, Δf; sv ; ss ; sh ; }
// Činitel odrazu //Vlastnosti materiálu: // Vlhkost // Množství špíny // Množství hub
Činitel odrazu je povinný, kdežto atributy materiálu závisí na efektu, který simulujeme. Například, když modelujeme růst mechu, množství mechu by měl být atribut pohybu γ-tonu, tak i vlastnost materiálu. Když γ-ton narazí do objektu, tak se změní jeho atributy pohybu podle těchto jednoduchých rovnic: ks’ = max(ks - Δs , 0) kp’ = max(kp – Δp , 0) kf’ = max(kf + max(kp – Δp , 0)- Δf , 0)
8
Pohyb γ-tonu a γ-přenos γ-ton je emitován ze zdroje po přímce. Směr pohybu je náhodně určen z vlastností zdroje γ-tonů jako ve sledování fotonům [12]. γ-ton se odráží po scéně, dokud se neusadí, nebo dokud nevyletí pryč ze scény. Kdykoliv γ-ton narazí do povrchu, Ruská ruleta [14] je použita, aby určila typ pohybu γ-tonu. Jako ve sledování fotonů používáme náhodnou proměnou ξ ε *0,1+ a vykonáme následující rozhodnutí: odraz jestliže ξ ε *0,ks+, odskok jestliže ξ ε *ks,ks+kp+, tečení jestliže ξ ε *ks+kp,ks+kp+kf+, jinak se γ-ton usadí. Pro odražené a odskočené γ-ton považujeme povrch za „difúzní“ a rovnoměrně distribuujeme odchozí směry do horní polokoule se středem v místě dopadu. Pokud se γ-ton neusadí, tak jsou jeho atributy pohybu změněny podle činitele odrazu a γ-ton pokračuje v pohybu s novými atributy pohybu. Pro γ-tony,které odskočily je délka skoku parametr, který uživatel zadává u každého typu γ-tonu. Jak γ-ton pohybuje, tak sbírá a ukládá částečky na surfely, do kterých narazil. Tomuto chování říkáme γ-přenos (obrázek 2.7). Je to právě úbytek a přídavek částic, který způsobuje stárnutí.
Obrázek 2.7: γ-přenos γ-tony. Převzato z [5].
Během pohybu γ-tonu sledujeme jeho cestu a hledáme povrch, do kterého narazil. Pro γ-ton pohybující se po přímce je průsečík určen stejně jako ve sledování paprsku (ray tracingu). Pro γ-ton pohybující se po parabolické křivce je jeho trajektorie lineárně aproximována. γ-ton tečící po povrchu se posune malý krok ve směru tangenty povrchu a interaguje s povrchem na nové pozici. Délka kroku je konstanta pro daný typ γ-tonu a je specifikována uživatelem. Jakmile je nalezen průsečík, tak se podíváme na blízké surfely. Hledání blízkých surfelů je urychleno organizováním všech surfelů do kd-stromu.
Vlastnosti povrchu a změna geometrie Pohyb γ-tonů a γ-přenos mění původní vlastnosti povrchu. My měníme tyto vlastnosti na základě γ-tonové mapy, kterou obdržíme z předchozí iterace. Uživatel může definovat jednoduchou funkci pro tuto změnu. V případech jako je eroze, nebo koroze je geometrie také deformována na základě γ-tonové mapy. 9
Příklady
Obrázek 2.8 Skvrna vzniklá kapáním vody. Simulováno pomocí bodového zdroje. Převzato z [5].
Obrázek 2.9 Eroze sfingy za tisíce let. Převzato z [5].
Obrázek 2.10 Růst mechu a kapání koroze z řetězu. Převzato z [5]. 10
Náročnost Čas sledování γ-tonů závisí na dvou hlavních faktorech. Na množství emitovaných γtonů a na množství surfelů. Scéna na obrázku 2.10 je rozložena na 100 000 surfelů. Každá iterace v této scéně trvá přibližně jednu minutu a je v ní emitováno 15 000 γ-tonů. Model sfingy, který můžeme vidět na obrázku 2.9 je rozložen do 200 000 surfelů a jedna iterace, v které je emitováno 10 000 γ-tonů trvá okolo tří minut. Ve všech případech je pro simulování příslušného efektu stárnutí puštěno třicet iterací. Všechny tyto časy jsou měřeny na PC s procesorem Pentium 4 na frekvenci 3GHz.
2.2.2 Simulování a renderování koroze Technika popsaná v této části je zaměřena na modelování a renderování porézních korozních vrstev změnou geometrie (jsou tvořeny „opravdové díry“ ), barvy a lesku. [6] V prvním kroku uživatel nastaví množství bodů, kde koroze začíná pro každý kovový objekt (reprezentován jako síť (mesh)) ve scéně. Lokace takovýchto bodů je poté automaticky spočítána za použití několika parametrů. Každá ploška objektu Fi má stejný koeficient pravděpodobnosti pi, že obdrží startovní bod koroze. Tento koeficient je poté modifikován takzvanými vnitřními a vnějšími parametry. Vnitřní parametry jsou například nedokonalosti povrchu, které většinou zvýší pravděpodobnost koroze, nebo nečistoty (mastné vrstvy obvykle brání korozi ). Vnější parametry jsou spojeny s dalšími objekty. Například galvanická koroze (koroze bude na ploškách, které se dotýkají méně ušlechtilého kovu), nebo diferenciální aerace (rozdíl v přístupu vzduchu ke dvěma částem stejného materiálu). Například představte si trubku vedoucí ze zdi. Plošky na trubce blízko zdi jsou charakterizovány velkou diferenciální aerací vedoucí ke zvýšené korozi.
Obrázek 2.11 Galvanická koroze vlevo a diferenciální aerace vpravo. Převzato z [6]. Druhý krok spočívá ve vytvoření mapy koroze, která je poté namapována na objekt. Dříve spočítané body původu koroze jsou umístěny na mapu za použití inverzního mapování. Barva, koeficient pórovitosti, koeficient hrubosti a koeficient vyvýšení jsou uloženy.
11
Koroze expanduje od uložených bodů za použití techniky „random walk“, neboli náhodného kroku. Na erodovaném „pixelu“ jsou změněny hrubost, barva, pórovitost a je snížena výška. Protože koroze neovlivňuje všechny body najednou, „místní korozní čas“ je spočítán pro každý pixel, což adekvátně ovlivňuje rychlost koroze.
Obrázek 2.12 Expanze koroze v bodě Ps a změna vlastností bodu Pv. Převzato z [6]. Renderování je provedeno podle modelu popsaného v *6+, které počítá s pórovitostí i hrubostí. Pro neerodované části je použito “Cook and Torrance BRDF for iron” *10].
Obrázek 2.13 Změna geometrie sekáčku. Převzato z [6].
12
Obrázek 2.14 Důlková koroze nahoře ve srovnání s rovnoměrnou korozí dole. Převzato z [6].
2.3 Škrábance a promáčkliny Škrábance a promáčkliny jsou jedny z nejdůležitějších a nejvíce známých technik stárnutí materiálů. Ale díky jejich geometrickým vlastnostem je velmi těžké najít přijatelnou cestu k jejich modelování a renderování.
2.3.1 Povrchové škrábance: Měření, modelování a renderování Velmi realistická a přesná technika k modelování a renderování škrábanců byla popsána v článku [3]. Využívá separátních odrazových modelů pro škrábance a nepoškrábané části. Je použito stávající BRDF a klasické 2D mapování textur.
13
Abychom dostali reálné výsledky, škrábance na opravdových modelech byly změřeny za použití přístroje pro měření povrchu. Hodnoty byly použity pro stanovení korespondujících BRDF pro každý materiál.
Obrázek 2.15 Změřený profil škrábance a jeho průřez. Převzato z [3].
Jelikož odrazové vlastnosti škrábance se liší od zbytku objektu, škrábance a zbytek jsou zkoumány zvlášť. Za pomoci dat z měření je definován teoretický průřez (viz obrázek 2.15). Každý profil je rozdělen do šesti oblastí: čtyři centrální oblasti odpovídající škrábanci a dvě okrajové části odpovídají nepoškrábané části. Jejich vlastnosti jako jsou úhel a výška jsou později použity při výpočtu BRDF. Abychom popsali umístění škrábance na samotném povrchu objektu, je použita jednoduchá technika 2D mapování textur. Jedna barva popisuje poškrábané oblasti a druhá nepoškrábané. Mapa není použita na změnu barvy objektu, ale na změnu jeho BRDF. Touto cestou jsou vypočteny dvě BRDF pro proces renderování.
Obrázek 2.16 Mapa škrábanců aplikována na toroid. Převzato z [3]. 14
Tato technika není vhodná pro extrémně blízké pohledy, jako jsou mikroskopické pohledy, u kterých by měly být použity více výpočetně složité přístupy jako displacement maping. Když je pohled příliš blízký, tak pozorující očekává, že uvidí deformace v geometrii, které nejsou touto technikou vytvořeny.
Obrázek 2.17 Čerstvě poškrábaný starý nástroj. Převzato z [3].
2.3.2 Stárnutí povrchu nárazy Autoři článku [4] popisují poloautomatickou metodu stárnutí povrchu, která simuluje deformace objektu způsobené opakovanými nárazy po dlouhý časový úsek. Toho je docíleno simulováním nárazů jiného objektu do povrchu následovaného zjemněním a deformací sítě.
15
Obrázek 2.18 Příklady starých objektů. Vlevo reálné a vpravo syntetické. Převzato z [4]. Jako první krok vybere uživatel takzvaný nástroj, který představuje objekt, který bude opakovaně narážet do povrchu. Parametry tohoto nástroje jsou tvar, velikost a rozsah stlačení (definuje reakci objektu na náraz). Poté je interaktivně definována lineární cesta nástroje ve 3D pohledu, která popisuje pohyb nástroje při nárazu do objektu. Uživatel specifikuje, kolik cest bude vytvořeno jedním stisknutím myši. Každou cestu reprezentuje náraz během simulace.
Obrázek 2.19 První dva kroky simulace: vyhledání a zjemnění zasažených plošek. Převzato z [4]. Abychom zjemnili síť, budoucí body nástroje (viz obrázek 2.19) jsou promítnuty na povrch sítě. Promítnuté body jsou poté použity na zjemnění sítě dalším rozdělením odpovídajících trojúhelníků. Abychom zabránili pravidelnosti, tak nové vrcholy na okraji kolísají. T-vrcholkům se vyhneme rozdělením přilehlých plošek. Když je zjemnění sítě kompletní, tak je vypočteno posunutí bodů. 16
Obrázek 2.20 Adaptivně zjemněná síť. Převzato z [4].
2.4 Růst lišejníků Vzhled objektů v přírodě je ovlivněn nejen počasím a stárnutím, ale i například růstem hub a lišejníků. Technika uvedená v [7] používá fraktální algoritmus k simulaci a modelování růstu lišejníku. Tato technika je složena ze tří kroků. Nejprve jsou rozprášeny spóry lišejníků po objektech, které budou kolonizovány. Poté se lišejníky rozšíří po povrchu a nakonec je vytvořena komplexní geometrie a textura lišejníků. Pro rozprášení spór je použita simulace větru a tečení vody. Spóry jsou náhodně emitovány z kolových zdrojů ve scéně, které jsou zde umístěny uživatelem. V závislosti na podloží, geometrii v místě, typu lišejníku a přístupnosti povrchu se spóry přichytí na určitá místa. Například spóra na snadno přístupném místě je odstraněna, z důvodu, že může být odfouknuta. Spóry na těžko přístupných místech jsou také odstraněny. Simulace tečení vody popsána v [15] může být použita pro realističtější distribuci.
Obrázek 2.21 Usazení a růst lišejníků za pomoci dostupnosti a simulace tečení vody. Převzato z [7]. 17
Protože tato simulace může být početně náročná, kreslící technika je nabízena jako alternativa. Spočívá v rozšíření spór přímo na povrch kreslením. Použitá barva udává intenzitu. Šíření po povrchu má dvě fáze. Nejprve je spočtena vlhkost a osvětlení kolonizovaných povrchů. Trajektorie slunce na obloze, rozptýlení deště a vody a zdroje vlhkosti jako jsou řeky a jezera jsou brány v potaz během simulace. Druhý krok spočívá ve vyvolání Open DLA modelu, který distribuuje částice, aby se formovaly do shluků. Lišejníky upřednosťují nepřímé zdroje světla, kdežto přímé světlo omezuje jejich vývoj. A proto jsou vytvořeny dvě různé světelné mapy pro objekty, které budou kolonizovány. Jelikož simulování deště v celé scéně a vliv vodních zdrojů jako jsou řeky a jezera je velmi složitý a výpočetně náročný, tak je mapa vlhkosti vytvořena za pomoci 3D kreslícího interfejsu umožňující specifikovat vlhké a suché oblasti. Jak již bylo zmíněno dříve, spóry se rozšiřují pomocí Open DLA modelu (modifikované verze DLA modelu představeného *16]). Spóry jsou nejprve přetransformovány do semen, které postupně rostou do shluků, které se formují na tvary s mnoha stromy organizovanými do fraktálního vzoru. S použitím informací vytvořených v předchozí fázi musí být lišejníky zobrazeny. Jelikož mají všechny velmi komplexní barvu a vzorky textury, nabízí se vytvoření atlasu lišejníků, kde by byly dříve vytvořené tvary lišejníků. Semena by byla okamžitě přetvořena do modelů z atlasu, což šetří paměť a umožňuje, aby byly efektivně pokryty velké plochy. Parametry jako typ lišejníku, věk a orientace by hrály roli při výběru. Lišejníky, které vytvářejí tří-dimenzionální listem podobné laloky a malé křoví rostou vzhůru za použití specifického L-systému. Textury jsou použity z reálných obrázků.
Obrázek 2.22 Komplexní scéna s různými typy lišejníků. Převzato z [7].
18
3. Analýza a návrh řešení V naší práci jsme se rozhodli implementovat metodu vizuální simulace stárnutí za pomoci sledování γ-tonů [5]. Pomocí této metody lze modelovat celou škálu stárnutí materiálů. Metodu jsme se rozhodli implementovat jako rozšíření frameworku PBRT. Jako základ byla použita již existující implementace fotonových map. Vstupem bude konfigurační soubor a výstupem obrázek ve formátu OpenEXR.
3.1 PBRT PBRT je renderer popsaný v grafické knize Physically Based Rendering from Theory to Implementation. Autory jsou Matt Pharr a Greg Humphreys. Autoři nabízejí jejich renderer a dokonce i zdrojový kód, aby čtenáři lépe pochopili danou problematiku. Procvičováním toho, co jste se naučili v knize, usnadní pochopení renderovacích algoritmů. Navíc je tento renderer často používán ve výzkumu, protože má flexibilní datové struktury umožňující přidání dalších funkcí. Renderer je implementován v jazyce c++. Na obrázku 3.1 je několik příkladů.
Obrázek 3.1 Vlevo objekt složený z lesklých koulí, vpravo krajina
3.2 Odlišnosti oproti původní předloze [5] V implementaci nebudeme používat bodovou reprezentaci modelu a iterace. Bodová reprezentace je velmi složitá na implementaci a v PBRT by znamenala rozsáhlejší změny fotonových map, než jsme zamýšleli. Navíc přímým ukládáním částic do γ-tonových map, které jsou vnitřně reprezentovány jako kd-strom, se vyhneme množství surfelů v oblastech s malým výskytem částic (například když je stárnutí lokalizované). Iterace nemají bez bodové reprezentace cenu a jejich efekt se projeví pouze ve velmi specifických situacích. Dále nebude možné měnit geometrii modelu. V PBRT se geometrie objektu načte na začátku a není možné jí měnit bez rozsáhlého zásahu do kódu. Ve své práci se budeme snažit zasahovat do kódu pouze minimálně, a proto tuto část vynecháme. 19
Výsledky takto zjednodušené verze by měly být ve většině případů stejné, ale nepůjde simulovat například erozi a další efekty vyžadující změnu geometrie.
3.3 Vlastnosti aplikace Aplikace by měla obsahovat několik různých materiálů a typů nečistot. Uživatel by měl mít možnost definovat, které materiály se přenášejí a v jaké míře. Každý materiál by měl mít dané vlastnosti materiálu a činitele odrazu. Uživatel by měl dále mít možnost nastavit atributy pohybu γ-tonů. Operace tečení a odskok by měly být snadno parametrizovatelné. Následující tabulka obsahuje parametry definovatelné v konfiguračním souboru. Dopad změn parametrů na výsledný obrázek naleznete v dalších kapitolách.
Jméno
Hodnota Výchozí Význam
gammatons nused
Int>0 Int>0
100000 50
maxdist
Float>0
0.005
Int Int prenos3 Int strelba Int ID1p1 Float ID1p2 Float ID1p3 Float intersection2 Bool selfprenos Bool onlyCastice Bool SkokFlow Float>0 VyskaFlow Float>0 ObtokHranFlow Float>1 maxdistBounce Float>0 stepBounce Float>0 bodZdrojx Float bodZdrojy Float bodZdrojz Float gammatonFlow Float gammatonBounce Float gammatonReflect Float velikostB Float>0
0 0 0 0 0.05 0.05 0.05 true true false 0.003 0.002 4 0.003 0.3 0 5 0 0 0 0 0.5
prenos1 prenos2
Počet střílených γ-tonů Maximální počet γ-tonů ovlivňujících místo dopadu Maximální vzdálenost γ-tonů ovlivňujících se mezi sebou ID přenášeného materiálu ID přenášeného materiálu ID přenášeného materiálu Typ zdroje γ-tonů (bodový, déšť, koulový) Množství přenášeného materiálu Množství přenášeného materiálu Množství přenášeného materiálu Má-li se zaznamenávat i původní dopad Přenos materiálu sám po sobě Má-li se zobrazit pouze γ-tonová mapa Délka kroku u tečení Výška nad povrchem při tečení Jak moc ostré hrany jsou obtečeny při tečení Délka kroku částice u odskoku Síla gravitace u odskoku Souřadnice bodového zdroje Souřadnice bodového zdroje Souřadnice bodového zdroje Pravděpodobnost tečení Pravděpodobnost odskoku Pravděpodobnost odrazu Vzdálenost zdroje od počátku
Tabulka 3.1 Definovatelné parametry v konfiguračním souboru 20
Konfigurační soubor by měl mít stejnou stavbu jako v PBRT. Nejprve definujeme rozlišení obrázku, kameru, způsob zobrazování (například pomocí γ-tonových map), způsob výběru barev, světla a nakonec definujeme objekty a jejich vlastnosti. Následuje jednoduchý konfigurační soubor zobrazení kovové koule. Film "image" "string filename" ["koule.exr"] // jméno výstupního souboru "integer xresolution" [500] "integer yresolution" [500] // rozlišení SurfaceIntegrator "directlighting" // způsob zobrazování Sampler "bestcandidate" "integer pixelsamples" [1] // způsob výběru barev LookAt 0 .3 .5 -.01 .06 0 0 1 0 // bod a směr pohledu Camera "perspective" "float fov" [33] // typ kamery WorldBegin
// začátek definice objektů a světel
AttributeBegin LightSource "point" "point from"[0 .35 0]"color I"[.1 .1 .1] //zdroj světla AttributeEnd Material "shinymetal" Shape "sphere" "float radius" 0.01
// typ materiálu // typ objektu a jeho vlastnosti
WorldEnd
// konec definice objektů a světel
3.4 Změny oproti fotonovým mapám v PBRT Ve fotonových mapách má foton jako parametry bod, spektrum světla a vektor dopadu. Fotony jsou emitovány ze světel a mají jeho barvu a intenzitu. Vytvořeny jsou tři fotonové mapy přímé, nepřímé a kaustické. Paprsek se může odrazit, nebo být pohlcen. Při renderování jsou body, kam dopadly fotony, patřičně přisvíceny. V γ-tonových mapách potřebujeme, aby měl γ-ton jako parametry bod, atributy pohybu a atributy přenosu. γ-tony by mělo být možno emitovat z bodového zdroje definovaného bodem v prostoru, ze zdroje simulujícího ovzduší a ze zdroje simulujícího déšť. γ-tony by měly být uchovávány v jedné γ-tonové mapě. γ-tony by měly moci simulovat korozi a patinu na kovových materiálech, růst lišejníku na hliněných a dalších vhodných materiálech. Dále by mělo být možné přenášet materiál a částice nečistot po scéně. Částice by měla být vystřelena ze zdroje jako paprsek ve fotonových mapách, ale po dopadu se může odrazit, odskočit, téct po povrchu, nebo se na povrchu usadit. Při renderování by se měl výsledný materiál v daném místě chovat jako vážený průměr materiálu původního a materiálů nanesených částicemi.
21
22
4.Implementace V této kapitole se dozvíte, jaké postupy jsme použili při implementaci. popíšeme některé vybrané zajímavé části implementace.
Dále si
4.1 Metody použité v implementaci
4.1.1 Výběr náhodného bodu na povrchu jednotkové koule Marsaglia (1972) vymyslel elegantní metodu, která spočívá v nezávislém rovnoměrném výběru x1 a x2 z (-1,1) a odmítnutí bodů, pro které platí . Ze zbývajících bodů vytvoříme rovnoměrné rozložení na povrchu jednotkové koule (Obrázek 3.1) podle následujících rovnic:
Obrázek 4.1: Rozložení bodů na povrchu koule. Z leva 100,1000 a 5000 bodů (počítáno před odmítnutím bodů). Převzato z [8] 23
4.2 Popis vybraných částí implementace V této podkapitole se dozvíte, jak jsme implementovali nejzajímavější části aplikace a jak změna jejich parametrů ovlivní výsledný obrázek. Mezi nejzajímavější části bezesporu patří střílení γ-tonů, chování γ-tonů po dopadu na povrch, přenos materiálů a způsob zobrazování.
4.2.1 Střílení γ-tonů Rozhodli jsme se implementovat čtyři typy zdrojů γ-tonů. Parametry ovlivňující tuto část jsou strelba (0 pro kulový zdroj, 1 pro rovný déšť, 2 pro šikmý déšť a 3 pro bodový zdroj), velikostB a případně souřadnice bodového zdroje. Bodový zdroj je vhodný například pro lokalizované stárnutí. Zdroj simulující prostředí je vhodný pro rovnoměrné rozložení dopadajících částic. Princip tohoto zdroje je založen na výběru 2 bodů na kouli o poloměru velikostB a středu v počátku. γ-ton bude vystřelen z jednoho bodu ve směru druhého bodu. Zdroj simulující déšť je čtverec o straně velikostB ve výšce velikostB nad počátkem.
Obrázek 4.2: Zleva: zdroj simulující déšť, ovzduší a bodový zdroj
Na obrázku 4.3 si ukážeme různé parametry proměnné strelba. Proměnná velikostB a umístění bodového zdroje by mělo být ve vhodné vzdálenosti od objektu. Příliž vzdálený zdroj radikálně zvýší dobu střílení γ-tonů. Naopak si musíme dávat pozor, aby zdroj nebyl uvnitř objektu, to by mohlo negativně ovlivnit výsledek.
24
Obrázek 4.3: Vlevo nahoře model draka, vpravo nahoře γ-tonová mapa při střelbě simulující ovzduší, vlevo dole při střelbě simulující déšť a vpravo dole při střelbě z bodového zdroje umístěného před drakem. Každá mapa obsahuje 15 000 částic.
4.2.2 Chování γ-tonů Po vystřelení se γ-ton pohybuje po přímce od zdroje daným směrem. Po dopadu na povrch se γ-ton ocitne v jednom ze 4 stavů podle principu popsaného v kapitole 2.2.1. Za prvé je to odraz. Odražená částice se bude pohybovat po přímce ve směru náhodného bodu na vrchní polokouli umístěné v bodě dopadu, jak můžeme vidět na obrázku 4.4. Další možností je odskok částice. V tomto případě se částice vydá po lineárně aproximované dráze v náhodném směru, kde povrch a směr svírají úhel 45°. Parametr maxdistBouce udává délku kroku a stepBounce změnu vektoru v y složce. Třetí možností je tečení (obrázek 4.5). Směr tečení bude shodný s jednotkovým vektorem s největší y složkou ležícím na ploše v místě dopadu. Částici nejprve zvedneme nad povrch o parametr VyskaFlow a poté pošleme v daném směru o velikost SkokFlow. Pokud částice narazí, tak zavoláme odskok. Jinak částici pustíme zpět ve směru povrchu. Pokud narazí výše, než částice předtím, tak se usadí. Pokud narazí ve stejné vzdálenosti, tak jí posuneme. Když v této vzdálenosti nenarazí, tak provedeme obtok hran ( zvětšíme tuto vzdálenost parametrem ObtokHranFlow a pokud narazí, tak máme nový bod). Jinak posuneme částici o SkokFlow ve směru tečení a pustíme jí dolů ve směru osy y. Poslední možností je usazení. Částice se v tomto případě nebude dále pohybovat.
25
Obrázek 4.4: Chování částice při odrazu vlevo. Chování částice při odrazu vpravo.
Obrázek 4.5: a) Výběr směru dle tangenty povrchu. b) Odskok v případě nárazu. c) Posunutí po povrchu. d) Obtečení hrany. e) Skápnutí dolů.
Obrázek 4.6: Zleva bronzová soška Budhy. γ-tonové mapy při odrazu, odskoku a tečení částic. Mapy obsahují 30 000 částic a bylo stříleno ze zdroje simulujícího ovzduší. První kontakt s povrchem po vystřelení se do mapy neukládá. 26
4.2.3 Přenos a rozpoznání materiálů V PBRT není možno zjistit jakékoliv údaje o materiálu, na který dopadne částice. Proto bylo třeba přidat do třídy BSDF veřejnou proměnou materID typu integer reprezentující id materiálu. Každý materiál musí mít toto id unikátní. Částice po dopadu na povrch zjistí id materiálu a pomocí atributů materiálu patřičně změní atributy pohybu γ-tonu. Částice si dále změní atributy přenosu (rez, patina a mech). Další atributy přenosu závisejí na nastavení parametrů prenos1, prenos2 a prenos3. Pomocí těchto parametrů definuje, které materiály chceme ve scéně přenášet. Intenzita přenášených materiálu je definována parametry ID1p1, ID1p2 a ID1p3.
Obrázek 4.7: Vlevo obrázek bez přenosu materiálů, vpravo přenos materiálů (Emitováno 150000 γ-tonů, které tečou).
4.2.4 Zobrazování V PBRT se k barevné reprezentaci používá spektrum. Obsahuje informace o barvě a její intenzitě. V každém místě vždy vyhodnotíme množství nečistot a přenášených materiálů. Je li toto množství větší než 1, tak každou složku zmenšíme, abychom dostali 1. Dále pro tento bod vyhodnotíme spektrum pro původní materiál, každý přenášený materiál a všechny nečistoty. Poté tyto hodnoty váženě sečteme a dostaneme finální barvu v tomto bodě. V případě že je množství nečistot rovno jedné, tak dojde k úplnému překrytu.
27
28
5. Výsledky a testování V této kapitole si ukážeme několik vygenerovaných scén. Nejdříve si ukážeme tečení skvrn, a jak ho lze docílit. Poté necháme postupně zestárnout bronzovou sochu. Dále si ukážeme rozdíl odskoku, odrazu, tečení a usazení na modelu draka. Nakonec zjistíme časovou náročnost v závislosti na počtu γ-tonů. Všechny obrázky v této kapitole jsou vytvořeny za pomoci naší aplikace a v rozlišení 1000x1000 na počítači s procesorem Intel Core 2 Duo na frekvenci 2.66 GHz.
5.1 Tečení skvrn Ukážeme si přenos rzi na hrbolatou plochu. Nejdříve původní scénu, poté scénu, kde γ-tony tečou a nakonec scénu s odskakujícími γ-tony. γ-tony dopadající na řetěz způsobí jeho korozi. Koroze poté stéká po řetězu (obrázek 5.2). Když už nemůže téct po řetězu, tak skápne na podložku, nebo sloupek. Poté pokračuje v tečení a zanechává za sebou korozi. Na obrázku 5.3 koroze nestéká, ale odskakuje. Tímto simulujeme odlupující se korozi odfoukávanou větrem.
Obrázek 5.1: Řetěz zavěšený na dvou sloupcích a pod nimi hrbolatá plocha. Doba vykreslování 228s.
29
Obrázek 5.2: Zrezavělý řetěz zavěšený na dvou sloupcích a pod nimi hrbolatá plocha. Rez kape ze řetězu dolů. Doba vykreslování 281s. Zdroj γ-tonů je šikmý déšť.
Obrázek 5.3: Zrezavělý řetěz zavěšený na dvou sloupcích a pod nimi hrbolatá plocha. Rez odpadává ze řetězu dolů. Doba vykreslování 286s. Zdroj γ-tonů je šikmý déšť.
30
5.2 Postupné stárnutí sochy. Necháme postupně stárnout bronzovou sochu. S přibývajícím časem přibývá patina. Vygenerovali jsme šest obrázků (obrázek 5.4). Stříleno bylo postupně 0, 10000, 30000, 50000, 100000 a 200000 γ-tonů. Byl použit odskok částic s parametry maxdistBounce 0.002 a stepBounce 0.03. Částice odskočí jednou až dvakrát a pak se usadí. První náraz částice do γtonové mapy nezaznamenává.
0 γ-tonů
10000 γ-tonů
30000 γ-tonů 50000 γ-tonů Obrázek 5.4: Postupné stárnutí bronzové sochy. Doba renderování 40-80s. 31
100000 γ-tonů 200000 γ-tonů Obrázek 5.4: Postupné stárnutí bronzové sochy. Doba renderování 40-80s.
Z obrázků vyplývá, že příliš mnoho částic může být na škodu. Předejít tomuto by se dalo, pokud bychom vzali texturu skutečné patiny místo difůzní barvy, kterou používáme nyní. Průměrně staré sochy vypadají velmi realisticky.
5.3 Rozdíl mezi usazením, odrazem, odskokem a tečením Na model draka jsme postupně stříleli γ-tony, které se rovnou usadí, odrazí se jednou až dvakrát, odskočí jednou až dvakrát, nebo potečou až o 200 kroků. γ-tony jsme stříleli ze zdroje simulujícího ovzduší a vystřeleno jich bylo vždy 140 000. Při usazování γ-tonů je drak zkorodován rovnoměrně, při odrazu se koroze hromadí v blízkosti výčnělků, při odskoku se koroze hromadí na nohou a hřbetu draka a při tečení je koroze na místech, kudy by stékala voda.
32
Obrázek 5.5: Zleva: usazení, odraz, odskok, tečení. Doba renderování 200s.
5.4 Časová složitost v závislosti na parametrech Testy budou probíhat na objektu z obrázku 5.6. Objekt se skládá z 20544 polygonů a rozlišení použijeme 1000x1000. PBRT generuje výstupní informace obsahující mimo jiné čas střílení γ-tonů a dobu renderování (Ukázka na obrázku 5.7). Budeme postupně střílet 1000, 10000, 100000, 1 00000, 2500000, 5000000, 7500000 a 10000000 částic a hodnoty vyneseme do grafu (obrázek 5.8).
Obrázek 5.6: Rotoid složený z 20544 polygonů.
33
Obrázek 5.7: Textový výstup obsahuje například informace o době provádění, kameře, geometrii objektů a světlech.
Čas v závislosti na Počtu γ-tonů 250
čas v sekundách
200 150 Doba střílení
100
Doba renderování 50 0 0
5000000
10000000
15000000
počet γ-tonů
Obrázek 5.8: Graf časové náročnosti na počtu γ-tonů
Z grafu vyplývá, že doba střílení γ-tonů roste lineárně. Ukládání γ-tonů do γ-tonové mapy reprezentované KD-stromem je taktéž lineární. Doba renderování stoupá logaritmicky. Vyhledání prvku v KD-stromu tedy trvá log(n). 34
6. Závěr V této bakalářské práci jsme představili několik technik sloužících k simulaci stárnutí materiálů. Zaměřili jsme se na techniku vizuální simulace stárnutí sledováním γ-tonů, na jejímž základě jsme vytvořili aplikaci formou rozšíření PBRT. Výsledná aplikace se od předlohy mírně odlišuje zejména nepoužitím bodové reprezentace. Aplikace je funkční na OS Windows i Linux a mělo by být možno ji převést na jinou platformu. V aplikaci je možno simulovat tvorbu koroze a patiny, růst mechu a přenos materiálů mezi objekty. Vstupem je konfigurační soubor a výstupem je obrázek ve formátu OpenEXR. Aplikace vytvořená autory [5] slouží pouze k ověření jejich techniky a není možné ji vyzkoušet. Porovnávat můžeme proto pouze výsledky. Tvorbu patiny a tečení skvrn se nám podařilo implementovat velmi podobně. Dokonce jsme schopni pomocí naší aplikace přenášet materiály. Naše aplikace neumožňuje měnit geometrii objektů. Námětem pro budoucí práci může být například vytvoření bodové reprezentace, díky které by bylo možné provádět proces stárnutí po iteracích. Dále by bylo dobré doimplementovat již zmíněnou deformaci geometrie. Aby byla aplikace použitelná v komerčním sektoru, tak by musela být napsána formou rozšíření některého modelovacího systému (Například Maya, nebo Softimage), kde by se dal snadno umístit zdroj γ-tonů a výsledkem by byly upravená geometrie a textury.
35
36
7. Seznam použité literatury [1] CHI HSU, S., AND TSIN WONG, T. 1995. Simulating dust accumulation. IEEE Comput. Graph. Appl. 15,1, 18–22. [2] Michael Schwärzler, Michael Wimmer Rendering Imperfections: Dust, Scratches, Aging,... TR-186-2-07-09, September 2007 [3] MERILLOU, S., DISCHLER, J.-M., AND GHAZAN-FARPOUR, D. 2001. Surface scratches: measuring,modeling and rendering. The Visual Computer 17, 1,30–45. [4] ERIC PAQUETTE, PIERRE POULIN, G. D. 2001. Surface aging by impacts. In Graphics Interface 2001,175–182. [5] CHEN, Y., XIA, L., WONG, T.-T., TONG, X., BAO,H., GUO, B., AND SHUM, H.-Y. 2005. Visual simulation of weathering by g-ton tracing. In SIG-GRAPH ’05: ACM SIGGRAPH 2005 Papers, ACM Press, New York, NY, USA, 1127–1133 [6] MERILLOU, S., DISCHLER, J.-M., AND GHAZAN-FARPOUR, D. 2001. Corrosion: Simulating and rendering. In Proceedings of Graphics Interface 2001, B. Watson and J. W. Buchanan, Eds., 167–174. [7] DESBENOIT, B., GALIN, E., AND AKKOUCHE, S.2004. Simulating and modeling lichen growth.Tech. Rep. RR-LIRIS-2004-007, LIRIS UMR 5205 CNRS/INSA de Lyon/Universit Claude Bernard Lyon 1/Universit Lumire Lyon 2/Ecole Centrale de Lyon, Mar. [8] Sphere Point Picking http://mathworld.wolfram.com/SpherePointPicking.html [9] DORSEY, J., AND HANRAHAN, P. 2000. Digital materials and virtual weathering. Scientific American (February), 64–71. [10] Cook and Torrance 1981 [11] Matt Pharr, Greg Humphreys: Physically Based Rendering from Theory to Implementation Morgan Kaufmann August 4, 2004 [12] JENSEN, H. W. 1996. Global illumination using photon maps. In Eurographics Rendering Workshop 1996, 21–30. [13] PFISTER, H., ZWICKER, M., VAN BAAR, J., AND GROSS, M. 2000. Surfels: surface elements as rendering primitives. In Proceedings of SIGGRAPH ’00, 335–342. [14] SPANIER, J., AND GELBARD, E. 1969. Monte Carlo Principles and Neutron Transport Problems. Addison-Wesley. [15] DORSEY, J., AND HANRAHAN, P. 1996. Modeling and rendering of metallic patinas. Computer Graphics 30, Annual Conference Series, 387–396. 37
[16] WITTEN, T. A., AND SANDER, L. M. 1981. Diffusion- limited aggregation, a kinetic critical phenomenon. Physical Review Letters 47, 19 (November), 1400+.
38
A Uživatelská příručka A.1 Instalace pod Windows Vista 1.Nainstalujeme cygwin, konkrétně Bison a Flex z http://cygwin.com/ 2.Zkopírujeme Adresář pbrt z CD na disk (Cesty budou uváděny pro adresář C:\pbrt\ ) 3. Přidáme systémovou proměnou PBRT_SEARCHPATH. a) Otevřete Start b) Vybereme ovládací panely c) Zde vybereme systém d) Zde Změnit nastavení e) Vybereme záložku upřesnit a zde Proměnné prostředí f) U systémové proměnné klikneme na Nová g) Název bude PBRT_SEARCHPATH a hodnota C:\pbrt\pbrt\win32\Projects\Release
A.2 Spuštění pod Windows 1. Spustíme příkazovou řádku (cmd) 2. Přejdeme do adresáře C:\pbrt\pbrt\win32\Projects\Release 3. Spustíme příkazem: pbrt.exe konfiguracni_soubor.pbrt (nebo jiný konfigurační soubor) 4. Vygenerovaný obrázek nalezneme v adresáři C:\pbrt\pbrt\win32\Projects\Release . Bude se jmenovat pbrt.exr, pokud v konfiguračním souboru neurčíme jinak. Obrázek můžeme otevřít například v programu Adobe Photoshop CS4.
39
A.3 Konfigurační soubor Konfigurační soubor upravujeme v některém textovém editoru. Uvedu zde konfigurační soubor pro vytvoření zrezavělého draka. Detailní popis konfiguračního souboru naleznete v [11]. Nastavení parametrů stárnutí je kurzívou. Film "image" "integer xresolution" [1000] "integer yresolution" [1000] //Rozlišení SurfaceIntegrator "gammatonmap" //Stárnutí "integer gammatons" [140000] "integer nused" [40] "float maxdist" [.002] "float gammatonReflect" [1] "float gammatonBounce" [0] "float gammatonFlow" [0] "integer strelba" [0] "float SkokFlow" [0.006] Sampler "bestcandidate" "integer pixelsamples" [4] //Vyhlazování LookAt 0 .3 .5 -.01 .06 0 0 1 0 //Kamera Camera "perspective" "float fov" [33] //Kamera VolumeIntegrator "single" "float stepsize" .05 WorldBegin AttributeBegin AreaLightSource "area" "color L" [ 2 2 2 ] "integer nsamples" [16] Translate 0 .35 0 Rotate 90 1 0 0 Shape "disk" "float radius" [.2] //Světlo AttributeEnd AttributeBegin Material "shinymetal" //Materiál Include "geometry/dragon.pbrt" //Geometrie objektu AttributeEnd WorldEnd
40
A.4 Parametry stárnutí Parametry a jejich vysvětlení je v následující tabulce.
Jméno
Hodnota Výchozí Význam
gammatons nused
Int>0 Int>0
100000 50
maxdist
Float>0
0.005
prenos1
Int Int prenos3 Int strelba Int ID1p1 Float ID1p2 Float ID1p3 Float intersection2 Bool selfprenos Bool onlyCastice Bool SkokFlow Float>0 VyskaFlow Float>0 ObtokHranFlow Float>1 maxdistBounce Float>0 stepBounce Float>0 bodZdrojx Float bodZdrojy Float bodZdrojz Float gammatonFlow Float gammatonBounce Float gammatonReflect Float velikostB Float>0 Tabulka A.1: Parametry stárnutí prenos2
0 0 0 0 0.05 0.05 0.05 true true false 0.003 0.002 4 0.003 0.3 0 5 0 0 0 0 0.5
Počet střílených γ-tonů Maximální počet γ-tonů ovlivňujících místo dopadu Maximální vzdálenost γ-tonů ovlivňujících se mezi sebou ID přenášeného materiálu ID přenášeného materiálu ID přenášeného materiálu Typ zdroje γ-tonů (bodový, déšť, koulový) Množství přenášeného materiálu Množství přenášeného materiálu Množství přenášeného materiálu Má-li se zaznamenávat i původní dopad Přenos materiálu sám po sobě Má-li se zobrazit pouze γ-tonová mapa Délka kroku u tečení Výška nad povrchem při tečení Jak moc ostré hrany jsou obtečeny při tečení Délka kroku částice u odskoku Síla gravitace u odskoku Souřadnice bodového zdroje Souřadnice bodového zdroje Souřadnice bodového zdroje Pravděpodobnost tečení Pravděpodobnost odskoku Pravděpodobnost odrazu Vzdálenost zdroje od počátku
41
A.5 Materiály v našem systému a jejich vlastnosti Částice se od materiálu odrazí, nebo odskočí 1x-2x(pro každý materiál) a teče 1x-200x (různě dle vlastností materiálu).
matte
shinymetal
bluepaint
glass
skin
translucent
plastic
– ID 1 - Čistě difůzní materiál – ID 2 - Kov, podléhá korozi – ID 3 - Modrý materiál – ID 4 - Skleněný materiál – ID 5 - Materiál imitující kůži – ID 6
– ID 7 - Použit pro simulaci patiny - Doporučujeme použít texturu bronzu brushedmetal – ID 8
clay
– ID 9 - Hlína, obrůstá mechem.
42
B Obsah přiloženého CD
[Text] – Adresář s textem bakalářské práce [pbrt] – Adresář s přeloženou verzí pod Windows v Microsoft Visual Studiu 2005 , zdrojovými kódy včetně pbrt, ukázkovými scénami a modely ve formátu .pbrt [examples] – Vygenerované obrázky [source] – Zdrojové kódy změněné v pbrt Readme.txt – Textový soubor popisující význam jednotlivých souborů a adresářů na CD, popis nahrání a spuštění programu.
43