Z´apadoˇcesk´a univerzita v Plzni Fakulta aplikovan´ych vˇed Katedra informatiky a v´ypoˇcetn´ı techniky

Bakal´aˇrsk´apr´ace

Fotorealistick´yrendering ter´enu

Plzeˇn2011 Milan Staffa Prohl´aˇsen´ı

Prohlaˇsuji, ˇzejsem bakal´aˇrskou pr´aci vypracoval samostatnˇea v´yhradnˇe s pouˇzit´ım citovan´ych pramen˚u.

V Plzni dne 27. dubna 2011 Milan Staffa Abstract

Photorealistic terrain rendering

This thesis is focused on the problem of photorealistic terrain rendering. Main task is to create modules for photorealistic terrain rendering in RenderMan Shading Language (RSL) and make photorealistic output images of requested terrain. Output images of these modules have to be comparable with outputs of other programs with similar field of use. In order to provide greater variability, graphical user interface (GUI) frontend was made in C#. This program simplifies creating these modules and offers wide range of options. Obsah

1 Uvod´ 1

2 Teoretick´aˇc´ast 2 2.1 Fotorealistick´ezobrazov´an´ıter´enu ...... 2 2.2 Datov´areprezentace ter´enu ...... 3 2.3 RenderMan shading language ...... 4 2.4 Reprezentace ploch ter´enu v RenderManu ...... 5 2.4.1 Plochy tvoˇren´ebiline´arn´ımi pl´aty ...... 6 2.4.2 Plochy tvoˇren´ebikubick´ymi pl´aty ...... 6 2.5 Sumov´efunkceˇ ...... 7 2.5.1 Perlin˚uvˇsum ...... 7 2.5.2 Skl´ad´an´ıˇsumov´ych funkc´ı ...... 9 2.5.3 Turbulence ...... 10 2.6 Programy pro rendering ter´enu ...... 14

3 Realizaˇcn´ıˇc´ast 19 3.1 Fotorealistick´eter´eny v Terragenu ...... 19 3.1.1 V´yˇskov´adata ...... 20 3.1.2 Texturov´an´ı ...... 23 3.2 GUI program ...... 26 3.2.1 V´yˇskov´adata ...... 27 3.2.2 Podm´ınky povrchu ...... 28 3.2.3 N´ahled vybran´eho ter´enu ...... 30 3.2.4 Tvorba surface shaderu a texturov´an´ı...... 31 3.3 RIB soubory ...... 33 3.4 Moduly a jejich pouˇzit´ı...... 34 3.4.1 Modul v´ypoˇctu Turbulence ...... 35 3.4.2 Modul v´ypoˇctu Bump mappingu ...... 35 3.4.3 Modul m´ıch´an´ıbarev ...... 36 3.4.4 Modul pro um´ıstˇen´ıter´enu na povrch ...... 39 3.4.5 Modul hlavn´ıho surface shaderu ...... 43 OBSAH OBSAH

3.5 Dosaˇzen´ev´ysledky ...... 43 3.5.1 Napodoben´ıre´aln´ehory Mount Ruapehu ...... 43 3.5.2 Napodoben´ıpouˇstn´ıscen´erie ...... 46 3.5.3 Napodoben´ıhorsk´escen´erie ...... 47 3.5.4 Napodoben´ıantarktick´escen´erie ...... 49 3.5.5 Napodoben´ıhorsk´escen´erie ...... 51

4 Z´avˇer 53

Literatura 54

Seznam zkratek 56

Pˇr´ıloha A 57

Pˇr´ıloha B 66

4 1 Uvod´

C´ılem t´eto pr´ace je snaha o pˇribl´ıˇzen´ıse realistick´emu vyobrazen´ıter´enu (tak jak to dˇelaj´ınapˇr´ıklad k tomuto ´uˇcelu urˇcen´eprofesion´aln´ıprogramy). Nejde tedy o tvorbu simulace re´aln´eho ter´enu, jde pouze o ˇcistˇev´ytvarn´yprostˇredek vyobrazen´ıter´enu do obr´azku. Ke splnˇen´ıtohoto c´ıle je nutno sezn´amit se se specifikac´ıRenderMan a pomoc´ıt´eto specifikace vhodnˇeimplementovat bloky pro tvorbu v´ysledn´eho obr´azku.

Vytvoˇren´eobr´azky budou porovn´av´any jak se skuteˇcn´ymi fotkami tak i s umˇele vytvoˇren´ymi obr´azky ter´en˚u(kter´ebyly vytvoˇreny pomoc´ıjin´ych program˚u).

Modern´ı poˇc´ıtaˇcov´agrafika se v dneˇsn´ı dobˇesnaˇz´ı dos´ahnout co nej- v´ıce fotorealistick´eho zobrazov´an´ı umˇele vytvoˇren´ych objekt˚u. Tato snaha zapoˇcala mal´ıˇrstv´ım, kdy se umˇelci snaˇzili napodobit co nejl´epe skuteˇcn´ekra- jiny. Dnes je tato snaha patrn´anejv´ıce ve v´yvoji poˇc´ıtaˇcov´ych her a v ani- movan´ych filmech, kde jsou tyto techniky podstatou realistiˇcnosti. Pro co nejpˇresvˇedˇcivˇejˇs´ızobrazov´an´ıse klade d˚uraz hlavnˇena pˇrirozen´eosvˇetlen´ıa vyobrazen´ıpovrchu objekt˚u.

Pˇred zobrazen´ım ter´enu je nutno si zvolit reprezentaci ter´enu samotn´eho, na kter´yse n´aslednˇepak aplikuj´ı shadery. Ukolem´ shader˚uje napodobo- vat na ter´enu co nejv´ıce realistickou texturu (obarven´ıter´enu) a dodateˇcn´e ´upravy geometrie p˚uvodn´ıho tvaru ter´enu.

Pr´acepojedn´av´ao vytvoˇren´ı modul˚ua jejich aplikaci na jednoduchou geometrii reprezentuj´ıc´ıter´entak, aby v´ysledn´yefekt byl co nejv´ıce fotoreali- stick´y.Tyto moduly po sloˇzen´ıd´av´aj´ıdohromady shader, kter´yse na ter´en aplikuje a obarv´ıho do v´ysledn´epodoby. Pro psan´ıshader˚ubyl zvolen pro- gramovac´ıjazyk RenderMan Shading Language.

Pro uˇzivatelskou pˇr´ıstupnost bude v jazyce C# vytvoˇren interaktivn´ıGUI program (nazvan´y RTC - RenderMan Terrain Creator), kter´ypodle nastave- n´ych hodnot vygeneruje vˇsechny zdrojov´esoubory pro vytvoˇren´ıv´ysledn´eho obr´azku s obarven´ym ter´enem.

1 2 Teoretick´aˇc´ast

2.1 Fotorealistick´ezobrazov´an´ıter´enu

Pro vytvoˇren´ı obr´azku s fotorealistick´ym zobrazen´ım ter´enu je potˇreba si urˇcit, z ˇceho a jak bude tento obr´azek vytvoˇren. Je tedy nutn´eurˇcit tvar ter´enu, jak´abude textura tohoto ter´enu (respektive jak definovat obarven´ı povrchu tak, aby co nejv´ıce pozorovateli pˇripom´ınal re´aln´ypovrch ter´enu). D´ale je potˇreba urˇcit, jak´ym svˇetlem bude ter´enosvˇetlen, zda a jak´ebudou ve sc´enˇes ter´enem p˚usobit atmosf´erick´ejevy (tedy mlha atd) a podobnˇe.

V tomto textu si pop´ıˇseme, jak reprezentovat ter´en. Digit´aln´ımodel ter´enu (DMT) budeme reprezentovat v trojrozmˇern´emprostoru. DMT se rozum´ı prostorov´ygeometrick´ypopis reli´efuter´enu. Na tomto ter´enu se daj´ıd´ale modelovat nejr˚uznˇejˇs´ıobjekty (napˇr´ıklad budovy, vegetace a podobnˇe). Pro samotn´yDMT jsou vˇsak tyto objekty ned˚uleˇzit´e.

Mezi charakteristick´evlastnosti DMT patˇr´ı:

• ter´en je nepravideln´aplocha. V t´eto ploˇsese nach´azej´ıjak m´ısta s hlad- kou geometri´ıtak s naruˇsen´ım t´eto hladk´egeometrie. Zvl´aˇstn´ımi ˇc´astmi ter´enu jsou vrcholy, sedla, ´udolnice (coˇzje kˇrivka spojuj´ıc´ım´ısta nejvˇe- tˇs´ıho vyhlouben´ıpˇr´ıˇcn´eho ˇrezu ´udol´ım) a hˇrbetnice (ta je opakem ´udol- nice - tedy hˇrbetnice spojuje relativnˇenejvyˇsˇs´ıbody ter´enn´ıho tvaru), kter´emaj´ıpod´elnˇeˇcasto hladk´ypr˚ubˇeh, avˇsak v kolm´emsmˇeru m˚uˇze doj´ıt k ostr´emu l´am´an´ıplochy. Tˇemto ´uk´az˚um se ˇr´ık´a singularity“. ” • jelikoˇzse vych´az´ız re´aln´ych ter´en˚u, v´yˇskov´asouˇradnice (vˇetˇsinou jde o souˇradnici z) je vzhledem k souˇradnic´ım d´elky a ˇs´ıˇrky DMT v niˇzˇs´ı hodnot´ach. Z toho d˚uvodu jsou tak´ev DMT niˇzˇs´ıpˇrev´yˇsen´ı.

• k popisu plochy je potˇreba velk´emnoˇzstv´ıdat (z d˚uvodu rozs´ahlosti digit´aln´ıho modelu ter´enu).

• zobrazovan´yter´en lze vˇetˇsinou z matematick´eho hlediska ch´apat jako funkci dvou promˇenn´ych z = f(x, y), kde funkˇcn´ıhodnota z je jedno- znaˇcnˇepˇriˇrazen´aa vyjadˇruje v´yˇsku ter´enu v dan´embodˇe [x,y]. Pro- bl´emem jsou pouze pˇrevisy a svisl´eplochy, kter´esamozˇrejmˇeneod- pov´ıdaj´ıcharakteru zobrazen´ı(respektive funkce dvou promˇenn´ych),

2 Teoretick´aˇc´ast Datov´areprezentace ter´enu

protoˇze jednomu bodu [x, y] je pˇriˇrazeno v´ıce v´yˇskov´ych hodnot z. Sin- gularity lze ch´apat z matematick´eho hlediska jako m´ısta s nespojit´ymi parci´aln´ımi derivacemi funkce popisuj´ıc´ıtvar ter´enu.

2.2 Datov´areprezentace ter´enu

Pro snadn´ypopis ter´enu se ˇcasto pouˇz´ıv´arozdˇelen´ıcel´eplochy DMT na menˇs´ı ˇc´asti, kter´ese daj´ı jednoduˇsejigeometricky popsat. Podle charakteristiky tˇechto ploˇsek se rozliˇsuj´ın´asleduj´ıc´ıtypy model˚u:

• Polyedrick´ymodel – V tomto modelu jsou element´arn´ı ploˇsky tvoˇreny troj´uheln´ıky. Tyto troj´uheln´ıky k sobˇepˇril´ehaj´ı a tvoˇr´ı tak mnohostˇen(bez podstavy), kter´yse pˇrimyk´ak ter´enu. Vrcholy mnohostˇenu (tedy jednotliv´evrcholy troj´uheln´ık˚u) jsou body na ter´enn´ıploˇse.Ty jsou souˇradnicovˇepˇredem urˇcen´e. – Interpolace plochy ter´enu se prov´ad´ıline´arnˇepo troj´uheln´ıc´ıch. Vrcholy troj´uheln´ık˚uje vˇsakvhodn´ezvolit tak, aby vystihovaly nejen obecnˇepr˚ubˇehtvaru ter´enu, ale i jeho singularity. – Popis tohoto modelu je rozdˇelen do geometrick´e ˇc´asti, kter´aud´av´a souˇradnice vrchol˚utroj´uheln´ık˚u, a do ˇc´asti topologick´e, jej´ımˇz´uko- lem je pˇriˇrazovat vrcholy jednotliv´ym troj´uheln´ık˚um a udrˇzetsou- sednost troj´uheln´ık˚u. • Rastrov´ymodel – Tento model je d´an mnoˇzinou element´arn´ıch ploˇseknad prvky pravideln´eho rastru1. Jde vlastnˇeo ˇctyˇr´uheln´ıky, kter´eje moˇzno rozdˇelit na troj´uheln´ıky. – V´yhoda tohoto modelu je v tom, ˇzepracuje s pravidelnou matic´ı uzlov´ych bod˚u, kter´ese daj´ısnadno vypoˇc´ıtat a nen´ınutn´eo nich udrˇzovat vˇsechny ´udaje. Naopak nev´yhodou m˚uˇzeb´yt r˚uznorod´y ter´en, kter´yobsahuje napˇr´ıklad rozs´ahl´erovn´eplochy a z´aroveˇn vysok´epohoˇr´ı. V tom pˇr´ıpadˇeje tedy nutn´etento model rozdˇelit na menˇs´ımodely, kter´ereprezentuj´ıdan´ytyp povrchu a zpraco- v´avat je ve vhodn´emrozliˇsen´ı, kaˇzd´eho tohoto podmodelu.

1Rastr = mˇr´ıˇzka bod˚u.

3 Teoretick´aˇc´ast RenderMan shading language

– Rastrov´ymodel je v principu definov´an prostorov´ymi souˇradnicemi kaˇzd´eho bodu rastru (tedy souˇradnicemi bodu x, y, z). Pˇri prakti- ck´empouˇzit´ıstaˇc´ıurˇcit vzd´alenost bod˚urastru a um´ıstit jeden bod do souˇradn´eho syst´emu. Vˇsechny ostatn´ıbody se pak snadno dopoˇc´ıtaj´ı. Z toho tedy vypl´yv´a, ˇzeprakticky pouˇziteln´yrastrov´y form´at m˚uˇzeobsahovat pouze: ∗ souˇradnice jednoho rohu rastru ∗ ´uhel natoˇcen´ırastrov´es´ıtˇe ∗ rozmˇerjednoho prvku rastru ∗ matici v´yˇskov´ych hodnot kaˇzd´eho bodu rastru

• Pl´atov´ymodel

– Tento typ modelu pˇredpokl´ad´a, ˇzese povrch rozdˇel´ına nepravidel´e, obecnˇekˇriv´eploˇsky troj´uheln´ıkov´eho tvaru, pˇriˇcemˇzhranice se ve- dou po singularit´ach (v pˇr´ıpadˇe,ˇzese v modelu vyskytuj´ı). Pouˇz´ı- vaj´ıse tak´erovnˇeˇzobecn´en-´uheln´ıky (napˇr. ˇctyˇr´uheln´ıky). Tˇemto n-´uheln´ık˚um se ˇr´ık´apl´aty (patch). – Rozdˇelen´ıplochy pomoc´ıpl´at˚un´amumoˇzˇnuje zachycovat singu- laritu a charakteristick´ebody ter´enu. – Pro dalˇs´ıvysvˇetlov´an´ıse bude pˇredpokl´adat tento model.

V´ıce o digit´aln´ıch modelech ter´enu v [12].

2.3 RenderMan shading language

RenderMan shading language (d´ale jako RSL) je souˇc´ast´ıspecifikace Render- Man Interface a slouˇz´ık definici shader˚u.

Shadery vytvoˇren´epodle RSL jsou pˇreloˇziteln´ev jak´emkoli kompilaˇcn´ım n´astroji RenderManu (napˇr´ıklad , , JrMan a dalˇs´ı).

RSL definuje pˇettyp˚ushader˚u:

• surface shader - definuje optick´evlastnosti tˇelesa

• light shader - definuje vlastnosti svˇetla

4 Teoretick´aˇc´ast Reprezentace ploch ter´enuv RenderManu

• displacement shader - modifikuje povrch tˇelesa

• imager shader - slouˇz´ıpro koneˇcn´ekorekce

• volume shaders - skupina tˇr´ıdalˇs´ıch shader˚u:

– external volume shader - pro modifikaci svˇetla proch´azej´ıc´ıho skrz nˇejak´eprostˇred´ı(napˇr. atmosf´eru) – internal volume shader - pˇri pr˚uhlednosti tˇelesa modifikuje svˇetlo proch´azej´ıc´ıskrz nˇej – atmosphere shader - ovlivˇnuje svˇetlo jdouc´ıod tˇelesa ke kameˇre

Bliˇzˇs´ıinformace v [1, 2, 3, 11].

V t´eto pr´acise budu zab´yvat pˇrev´aˇznˇesurface shaderem, pomoc´ıkter´eho se bude napodobovat fotorealistick´eobarven´ıporvchu ter´enu. Obarven´ıbude provedeno pomoc´ıtzv. procedur´aln´ıtextury. Procedur´aln´ıtextura se d´adefi- novat jako vyj´adˇren´ıtextury pomoc´ımatematick´efunkce. Jej´ıv´yhodou je, ˇzenez´aleˇz´ına jej´ım rozliˇsen´ı, protoˇzeprocedur´aln´ıtextura se pˇrizp˚usob´ıve- likosti vykreslovan´eho (jinak ˇreˇceno renderovan´eho) obrazu. Nev´yhodou je vˇsak, ˇzene vˇsechny povrchy se daj´ıpomoc´ımatematick´ych funkc´ıvyj´adˇrit.

2.4 Reprezentace ploch ter´enu v RenderManu

V RenderManu se pro popis komplikovan´ych objekt˚upouˇz´ıvaj´ı pl´aty (viz kapitola 2.1). Pˇri tvorbˇeploch pomoc´ıpl´at˚upouˇz´ıv´ame pro navazov´an´ıjed- notliv´ych pl´at˚utzv. pl´atov´an´ı. Pro pl´atov´an´ıje potˇreba vysvˇetlit pojem C spojitost.

Pojem C spojitost znamen´a:dva pl´aty maj´ınapojen´ı C0, maj´ı-li spole- ˇcnou krajn´ıstranu (hranu), kter´aje kˇrivkou tˇr´ıdy2 alespoˇn C0.

RenderMan podporuje pl´aty biline´arn´ıa bikubick´e.

2Kˇrivka m´aspojitost C0, pokud pro kaˇzd´edva sousedn´ıkˇrivkov´esegmenty, ze kter´ych je tato kˇrivka sloˇzena plat´ı, ˇzekoncov´ybod jedn´ekˇrivky je poˇc´ateˇcn´ım bodem kˇrivky druh´e. Dva segmenty kˇrivky maj´ıspojen´ı C1, pokud je teˇcn´yvektor v koncov´embodˇeprvn´ıho segmentu kˇrivky roven teˇcn´emu vektoru v poˇc´ateˇcn´ımbodˇedruh´eho segmentu kˇrivky (jsou si rovny prvn´ıderivace v obou bodech). Stejn´ym zp˚usobem lze urˇcit C2 spojistost (jsou si rovny nejen prvn´ıderivace, ale i druh´ederivace). Obdobnˇelze definovat Cn spojitost.

5 Teoretick´aˇc´ast Reprezentace ploch ter´enuv RenderManu

2.4.1 Plochy tvoˇren´ebiline´arn´ımi pl´aty

V RenderManu se pouˇz´ıv´advou typ˚upl´at˚u- biline´arn´ıch a bikubick´ych. Hlavn´ım stavebn´ım prkvem biline´arn´ıch pl´at˚ujsou ´useˇcky (pˇr´ımky). U biku- bick´ych pl´at˚uto jsou kˇrivky tˇret´ıho stupnˇe(kubiky).

Pl´atbiline´arn´ıplochy je obecnˇeud´andvˇemi okrajov´ymi ´useˇckami a0 a a1. Tyto ´useˇcky se daj´ıcharakterizovat jako vektorov´efunkce a0(t) a a1(t), kde parametr t je z intervalu t ∈ h0, 1i. Detailnˇejˇs´ıpopis je v [4] a konkr´etn´ı realizace pro RenderMan je pops´ana v [9].

Kvalitativnˇeje pouˇzit´ı tˇechto pl´at˚une pˇr´ıliˇsdokonal´e(popis t´eto ne- dokonalosti je pops´an v [7]).

2.4.2 Plochy tvoˇren´ebikubick´ymi pl´aty

Bikubick´epl´aty se pro modelov´an´ıplochy ter´enu hod´ıv´ıce neˇzbiline´arn´ı(viz pˇredchoz´ıkapitola). Pop´ıˇseme si Coonsovy B-spline pl´aty, kter´ebyly zvoleny v t´eto pr´aci za nejvhodnˇejˇs´ıpro reprezentaci povrchu ter´enu.

Tyto pl´aty se obecnˇesnadno navazuj´ıa z tohoto d˚uvodu jsou vhodn´e pro modelov´an´ı(v naˇsempˇr´ıpadˇepro modelov´an´ıter´enu). B-Spline plochy n-t´eho stupnˇemaj´ı Cn−1 spojitost (viz kapitola 2.4) a to ve vˇsech sv´ych bodech. Pˇri zmˇenˇenˇekter´eho z ˇr´ıd´ıc´ıch bod˚umˇen´ıme tvar vˇzdy pouze urˇcit´e ˇc´asti B-Spline plochy.

B-spline pl´atdefinuje (m + 1) × (m + 1) bod˚u(m odpov´ıd´aˇr´adu plochy). Pˇri pl´atov´an´ıse pouˇzije pro nov´ypl´at m ˇrad ze st´avaj´ıc´ıho pl´atu a pˇrid´ase dalˇs´ıˇrada m bod˚u. Tedy pro pˇrid´an´ıdalˇs´ıho pl´atu se pouˇzije m × (m + 1) bod˚uze st´avaj´ıc´ıho pl´atu. V´ıce v [4].

Nejednoduˇsˇs´ız B-spline ploch jsou bikubick´eB-spline plochy. Jelikoˇzv naˇsem pˇr´ıpadˇejde pr´avˇeo kubiky (respektive Coonsovy B-spline pl´aty), tak se pˇri tvorbˇeplochy jednotliv´epl´aty pˇrekr´yvaj´ıve tˇrech sloupc´ıch a pˇrid´av´a se jeden nov´ysloupec nebo se pˇrekr´yvaj´ıve tˇrech ˇr´adc´ıch a pˇrid´av´ase jeden nov´yˇr´adek. Protoˇzejsou tˇret´ıho stupnˇe(tedy jsou kubick´e), je zajiˇstˇeno, ˇze jsou C2 spojit´e. Proto se pouˇz´ıvaj´ıve sloˇzitˇejˇs´ıch modelovac´ıch programech.

Podrobnˇejio tvorbˇetˇechto ploch v RenderManu v [14].

6 Teoretick´aˇc´ast Sumov´efunkceˇ

Podrobnˇejio tˇechto pl´atech v [4] a o jejich implementaci v RenderManu v [9].

2.5 Sumov´efunkceˇ

Pro vytv´aˇren´ı pˇrirozen´ych (tedy n´ahodn´ych) povrch˚ua pohyb˚uje snaha ˇcasto pouˇz´ıvat klasick´egener´atory pseudon´ahodn´ych ˇc´ısel, kter´emaj´ıza ´ukol simulovat nepˇredv´ıdateln´ev´ysledky.

V t´eto pr´aci vyuˇzijeme ˇsumu na napodobov´an´ıpˇr´ırodn´ıch jev˚u, jak´ese objevuj´ıv re´aln´emsvˇetˇe.Pro jejich napodoben´ıse ˇcasto pouˇz´ıv´aspojit´ych funkc´ı(napˇr´ıklad tzv. Perlinova ˇsumu a turbulence). Pro tuto pr´aci jsem si vybral turbulenci, jelikoˇzjej´ıv´ysledky v´ıce odpov´ıdaj´ıre´aln´enepravidelnosti.

Pro pochopen´ıturbulence je potˇreba nejdˇr´ıve vysvˇetlit, co je to Perlin˚uv ˇsum a skl´ad´an´ıˇsumov´ych funkc´ı.

Bliˇzˇs´ıinformace o ˇsumov´ych funkc´ıch v [4, 5].

2.5.1 Perlin˚uvˇsum

Perlin˚uv ˇsum patˇr´ık nejpouˇz´ıvanˇejˇs´ıa nejrozˇs´ıˇrenˇejˇs´ıformˇeˇsumu v poˇc´ı- taˇcov´egrafice. Pro pops´an´ıPerlinovy ˇsumov´efunkce vych´az´ım z [4, 10].

Ken Perlin navrhl ˇsumovou funkci, kterou lze rychle vypoˇc´ıtat a kter´a splˇnuje n´asleduj´ıc´ıpoˇzadavky:

• Perlinova ˇsumov´afunkce je spojit´a

• je statisticky invariantn´ıvzhledem k ot´aˇcen´ıa posunut´ı

• m´aomezen´efrekvenˇcn´ıspektrum a je opakovateln´a3.

Podstatou Perlinova ˇsumu je generov´an´ı spojit´eho ˇsumu, kter´yje vy- poˇc´ıt´av´an v diskr´etn´ımˇr´ıˇzce. Perlin˚uv ˇsum lze definovat v libovoln´edimenzi. Pro dalˇs´ıvysvˇetlen´ıbudeme pˇredpokl´adat trojrozmˇern´ypˇr´ıpad.

3Pˇrizavol´an´ıfunkce s parametrem x vˇzdy vr´at´ıstejnou hodnotu y.

7 Teoretick´aˇc´ast Sumov´efunkceˇ

Z´akladem je ˇsumov´afunkce noise(x,y,z), kter´apro hodnoty [x,y,z] vrac´ı vˇzdy stejn´en´ahodn´eˇc´ıslo z intervalu hodnot h−1, 1i. To, ˇzetato funkce vrac´ı vˇzdy stejnou hodnotu je vlastnˇesplnˇen´ım podm´ınky, ˇzem´ab´yt v´ysledek opakovateln´y.

Hlavn´ımyˇslenkou Perlinovy ˇsumov´efunkce je rozdˇelen´ıprostoru do pravi- deln´emˇr´ıˇzky, jej´ıˇzvrcholy si oznaˇc´ıme jako [i,j,k]. Souˇradnice vrchol˚umˇr´ıˇzky nab´yvaj´ı celoˇc´ıseln´ych hodnot. V kaˇzd´emz tˇechto vrchol˚uje definov´ana pseudon´ahodn´atrojrozmˇern´afunkce, kter´ase oznaˇcuje jako wavelet (neboli volnˇepˇreloˇzeno vlnka). Vlnka m´atzv. polomˇer, kter´yud´av´ajej´ırozsah (tzn. ˇzehodnoty vlnky za t´ımto polomˇerem jsou nulov´e). Vlnka z´aroveˇnproch´az´ı poˇc´atkem. To tedy znamen´a,ˇzepro parametry [i,j,k] je jej´ıhodnota nulov´a. Proto se tedy nemus´ıbr´at v ´uvahu hodnota vlnky v poˇc´atku a definuje se pouze gradient vlnky.

Pro v´ypoˇcetPerlinovy ˇsumov´efunkce v bodˇe[x,y,z] je pouˇzit n´asleduj´ıc´ı algoritmus:

• Urˇc´ıme osm nejbliˇzˇs´ıch vrchol˚umˇr´ıˇzky (tedy urˇc´ıme buˇnku, ve kter´ese bod [x,y,z] nach´az´ı).

• Pro kaˇzd´yz tˇechto osmi vrchol˚uspoˇcteme tvar vlnky.

• Hodnoty vlnek (ovlivnˇen´evzd´alenostmi od dan´ych vrchol˚uv˚uˇcibodu [x,y,z]) jsou seˇcteny.

Ken Perlin zjednoduˇsil pˇriˇrazen´ıgradient˚uvrchol˚um na jednorozmˇern´e pole (256 vektor˚u), ze kter´eho se vyb´ır´agradient (jednotkov´yvektor) pro dan´yvrchol. Vˇsech osm vrchol˚ubuˇnky m´apˇriˇrazeny gradienty

gi,j,k = G[P [P [P [i] + j] + k]], kde P je pˇredem stanoven´apermutace, kter´an´ahodnˇerozmist’uje gradienty do pole G. Pro vytvoˇren´ıgradient˚u g je zvolen takov´yalgoritmus, aby se tyto r˚uzn´egradienty neopakovaly.

Po pˇriˇrazen´ıgradient˚uokoln´ım vrchol˚um je nutno vypoˇc´ıtat vliv tˇechto vrchol˚una bod [x,y,z]. Vliv je d´an relativn´ıvzd´alenost´ıbodu [x,y,z] od vrcholu [i,j,k]. Tato vzd´alenost se d´avyj´adˇrit

[u, v, w] = [x, y, z] − [i, j, k], −1 ≤ u, v, w < 1.

8 Teoretick´aˇc´ast Sumov´efunkceˇ

Podle Perlina je pokles hodnoty funkce se vzd´alenost´ıd´an kubickou funkc´ı4

drop(t) = 1 − 3t2 + 2t3.

Celkov´y´ubytek Ω(u, v, w) v bodˇe[u, v, w] je d´an jako

Ω(u, v, w) = drop(u) · drop(v) · drop(w).

Na konec vyn´asob´ıme relativn´ı ´ubytek Ω(u, v, w) n´ahodnou hodnotou urˇcenou G(i,j,k) a t´ım z´ısk´ame celkov´yrelativn´ı´ubytek od dan´eho vrcholu.

V´yslednou hodnotu v bodˇe[x,y,z] pak urˇc´ıme souˇctem vˇsech relativn´ıch ´ubytk˚uod okoln´ıch vrchol˚u(v˚uˇcibodu [x,y,z]).

V´ıce o Perlinovˇeˇsumu v [4].

2.5.2 Skl´ad´an´ıˇsumov´ych funkc´ı

Pro zlepˇsen´ıv´ysledku generov´an´ıˇsumu se pouˇz´ıv´atzv. skl´ad´an´ıˇsumov´ych funkc´ı. Skl´ad´an´ıˇsumov´ych funkc´ıse nejˇcastˇeji pouˇz´ıv´av poˇc´ıtaˇcov´egrafice na co nejrealistiˇctˇejˇs´ınapodoben´ıre´aln´etextury nebo na bump mapping pro napodoben´ızvr´asnˇen´eho povrchu. Castoˇ se pouˇz´ıv´apro napodoben´ıtextur napˇr´ıklad mramoru, dˇreva, ohnˇe,vody, struktury zeminy apod.

Pro vysvˇetlen´ı t´eto tematiky je potˇreba definovat pojmy amplituda a frekvence ˇsumov´efunkce. Amplituda definov´ana jako rozd´ıl minim´aln´ıa maxi- m´aln´ıhodnoty, kterou m˚uˇzefunkce nab´yvat a frekvence je pˇrevr´acen´ahod- nota vzd´alenosti mezi jednotliv´ymi body, kter´ejsou pouˇzity pro spojitou interpolaci.

Z matematick´eho hlediska se nejedn´ao nic jin´eho, neˇzo souˇcet funkc´ı ˇsumu, kde kaˇzd´afunkce se liˇs´ı amplitudou a frekvenc´ı. Tento souˇcetˇsu- mov´ych funkc´ıse ˇcasto nespr´avnˇeoznaˇcuje jako Perlinova funkce, aˇckoli jde ve skuteˇcnosti pouze o skl´ad´an´ılibovoln´ych ˇsumov´ych funkc´ı(at’ Perlinov´ych nebo jin´ych). Sˇc´ıtanc˚um (jednotliv´ymˇsumov´ym funkc´ım) se ˇr´ık´aokt´avy.

4V roce 2002 Ken Perlin pˇredvedl na konferenci Siggraph vylepˇsen´ıtohoto algoritmu na rovnici p´at´eho ˇr´adu.

9 Teoretick´aˇc´ast Sumov´efunkceˇ

Matematick´evyj´adˇren´ıvypad´atakto:

n−1 X sNoise(x, y, z, p, n) = ai · noise((x, y, z) · fi), i=0 kde n ud´av´apoˇcet okt´av(sumarizovan´ych ˇsumov´ych funkc´ı) a ai ud´av´aam- plitudu, kter´aje pro kaˇzdou i-tou okt´avu urˇcena jako

i ai = p .

Promˇenn´a p ud´av´arychlost kles´an´ıvlivu kaˇzd´eokt´avy na celkov´yv´ysledek a naz´yv´ase persistence p, kde p ∈ (0, 1). Frekvence fi i-t´eokt´avy se urˇc´ıjako

i fi = 2 .

Pokud je persistence rovna jedn´e, tak samozˇrejmˇenedoch´az´ık ˇz´adn´emu ´utlmu v´ysledn´eho ˇsumu jednotliv´ymi okt´avami. V´ıce o skl´ad´an´ıˇsumov´ych funkc´ıv [4].

Na obr´azc´ıch 2.1 a 2.2 je vidˇet skl´ad´an´ıˇsumov´efunkce.

2.5.3 Turbulence

Turbulence je pˇr´ıpadem souˇctu ˇsumov´ych funkc´ı. Ken Perlin pouˇzil souˇcetab- solutn´ıch hodnot ˇsumov´ych funkc´ıa v roce 1984 jej pojmenoval Turbulence. D´ıky absolutn´ıhodnotˇese z´aporn´ehodnoty pˇri v´ypoˇctu pˇrekl´ap´ıdo klad- n´ych hodnot. Vˇsechny v´ysledky se budou pohybovat v kladn´ych hodnot´ach a ve funkci pˇribudou body, ve kter´ych nebudou existovat parci´aln´ıderivace (zjednoduˇsenˇeˇreˇceno ve funkci dojde k ostr´ym zlom˚um“). ” D˚usledkem toho se pˇri vykreslen´ıturbulence jev´ıtento jev jako tmav´e nepravideln´epruhy. Absolutn´ıhodnota vytv´aˇr´ıefekt, kter´yse projevuje na naruˇsen´ıhladkosti ˇsumu. Turbulence je ˇcasto pouˇz´ıv´ana na napodoben´ıtex- tury dˇreva, mramoru, d´ale tak´eatmosf´ery a exploz´ı.

Matematick´evyj´adˇren´ıturbulence je:

n−1 X turbulence(x, y, z, p, n) = ai · abs(noise((x, y, z) · fi)) i=0

10 Teoretick´aˇc´ast Sumov´efunkceˇ

Obr´azek 2.1: Uk´azka skl´ad´an´ıˇsumov´ych funkc´ı(v tomto pˇr´ıpadˇepro 5 okt´av). C´ısloˇ pˇred z´avorkou ud´av´aokt´avu, ˇc´ıslo v z´avorce ud´av´afrekvenci.

11 Teoretick´aˇc´ast Sumov´efunkceˇ

Obr´azek 2.2: Uk´azka skl´ad´an´ıˇsumov´ych funkc´ıve 2D (v tomto pˇr´ıpadˇepro 5 okt´avje vidˇet, ˇzeposledn´ıokt´ava nem´ana v´ysledek velk´yvliv). C´ısloˇ pˇred z´avorkou ud´av´aokt´avu, ˇc´ıslo v z´avorce ud´av´afrekvenci.

12 Teoretick´aˇc´ast Sumov´efunkceˇ

Obr´azek 2.3: Uk´azka proloˇzen´ıgenerovan´ych n´ahodn´ych hodnot interpolaˇcn´ı kˇrivkou a pouˇzit´ıabsolutn´ıhodnoty u turbulence (jedna okt´ava).

Rychlost kles´an´ıvlivu kaˇzd´eokt´avy je stejnˇedefinov´ana jako u skl´ad´an´ı ˇsumov´ych funkc´ı, tedy je to persistence p, kde p ∈ (0, 1) a amplituda ai i-t´e okt´avy je v tomto vyj´adˇren´ıud´ana jako i ai = p .

Frekvence fi i-t´eokt´avy se urˇc´ıjako i fi = 2 .

Porovn´an´ımezi turbulentn´ım ˇsumem a Perlinov´ymˇsumem je vidˇet na ob- r´azku 2.4.

U turbulentn´ıho ˇsumu se daj´ıpouˇz´ıt r˚uzn´edruhy vypoˇct˚u. Pro naˇsi pr´aci si turbulentn´ıˇsum uprav´ıme takto:

n−1 X turbulence(x, y, z, p, n, f, a) = ai · abs(noise((x, y, z) · fi)), i=0

kde pro pro nultou okt´avu je f0 = f a a0 = a a pro i-tou okt´avu plat´ı −1 fi = fi−1 · p

ai = ai−1 · p

V´ıce o tubrulenci v [5, 6].

13 Teoretick´aˇc´ast Programy pro rendering ter´enu

Obr´azek 2.4: Uk´azka rozd´ılu mezi Perlinovo (vlevo) a turbulentn´ım ˇsumem (vpravo).

2.6 Programy pro rendering ter´enu

Pˇri ˇsirok´emrozˇs´ıˇren´ıpoˇc´ıtaˇcov´egrafiky bylo vyvinuto velk´emnoˇzstv´ıkomer- ˇcn´ıch i nekomerˇcn´ıch program˚u, kter´ese zab´yvaj´ı fotorealistick´ymrende- ringem sc´en obsahuj´ıc´ıch ter´eny. Nˇekter´ez tˇechto program˚use d´ıky sv´e ´uspˇeˇsnosti rozˇs´ıˇrily i do oblasti film˚ua poˇc´ıtaˇcov´ych her.

Mezi nejzn´amˇejˇs´ıprogramy tohoto druhu patˇr´ınapˇr´ıklad Terragen, kter´y se doˇckal jiˇzdruh´everze. Jeho rozˇs´ıˇrenost je d´ana jak dostupnost´ıpro ne- komerˇcn´ı´uˇcely, tak i snadnou ovladatelnost´ı, velkou kvalitou a realistiˇcnost´ı v´ystupn´ıch obraz˚u. V t´eto ˇc´asti budou pops´any nˇekter´ez tˇechto program˚u.

Tyto programy lze rozdˇelit do z´akladn´ıch kategori´ı:

• programy, kter´epro vytv´aˇzen´ı sc´eny poskytuj´ı uˇzivateli pouze ˇr´ıd´ıc´ı panely (bez moˇznosti ruˇcn´ı´upravy objekt˚upˇr´ımo ve 3D sc´enˇe). Mezi tyto programy patˇr´ınapˇr. Terragen Classic, VistaPro a World Machine

• programy, kter´euˇzivateli poskytuj´ımoˇznost upravovat objekty pˇr´ımo ve 3D sc´enˇe,jako je tomu u 3D modelovac´ıch program˚u. K tˇemto pro- gram˚um patˇr´ınapˇr´ıklad Terragen 2, E-ON Vue, Bryce a WorldBuilder

Mezi nejzn´amˇejˇs´ıpatˇr´ı:

• Terragen 0.9.43 (tak´ezn´am´yjako Terragen Classic)

14 Teoretick´aˇc´ast Programy pro rendering ter´enu

Program Terragen Classic je zaloˇzen na uprovov´an´ıter´enu pomoc´ıˇr´ıd´ı- c´ıch panel˚u(respektive nedovoluje zasahovat uˇzivateli pˇr´ımo“ do 3D ” prostoru sc´eny, kromˇenastaven´ım´ısta kamery).

– jeden z nejzn´amˇejˇs´ıch program˚upro tvorbu fotorealistick´ych ter´en˚u se ˇsirok´ym spektrem moˇznost´ınastaven´ıscen´erie – nedovoluje do sc´eny umist’ovat vegetaci ani dalˇs´ıobjekty – disponuje moˇznost´ırenderingu atmosf´ery – k dispozici na Microsoft Windows (Windows 95 a novˇejˇs´ı), Mac OS 9 a Mac OS X – pro nekomerˇcn´ı´uˇcely je zdarma – tento program byl zvolen jako pˇredloha t´eto pr´ace a vytvoˇren´eho GUI programu

• Terragen 2.2 Tento program tvoˇr´ısc´enu v tzv. Node Network“, coˇzje sch´emati- ” ck´ezn´azornˇen´ısc´eny v podobˇegrafu. Kaˇzd´yobjekt, kter´yse ve sc´enˇe nach´az´ı(krajiny, vodn´ıpovrchy, svˇeteln´ezdroje, kamery, extern´ıob- jekty apod.), je reprezentov´an uzlem (tzv. Node) v grafu, vazby mezi tˇemito objekty jsou zn´azornˇeny ˇsipkami. Jde o obdobu grafov´eho zn´a- zornˇen´ısc´eny, kter´eje moˇzno i vidˇetu dalˇs´ıch 3D modelovac´ıch aplikac´ı (napˇr´ıklad 3Ds Max). D´ıky tomuto grafu je zˇrejm´e, z jak´ych objekt˚use tvoˇren´asc´ena skl´ad´aa jak´ym zp˚usobem ji bude renderer zpracov´avat. Moˇznosti tohoto programu jsou podobn´ejako u Terragen Classic, avˇsak jsou rozˇs´ıˇreny o pˇrid´an´ıobjekt˚ua vylepˇsen´egrafick´erozhran´ıa ren- derovac´ıj´adro.

– n´astupce Terragen Classic, kter´yoproti sv´emu pˇredch˚udci vyuˇz´ıv´a jin´eho grafick´eho rozhran´ıa pouˇz´ıv´avylepˇsen´erenderovac´ıj´adro – tento gener´ator nav´ıc tak´eobsahuje moˇznost importu extern´ıch model˚u, pˇrid´an´ıobjekt˚ua vegetace do sc´eny – disponuje moˇznost´ırenderingu atmosf´ery – dostupn´yna platform´ach Microsoft Windows (Windows 2000 a novˇejˇs´ı) a Mac OS X (10.4 a novˇejˇs´ı) – pro nekomerˇcn´ıvyuˇzit´ızdarma s omezen´ımi (velikost v´ysledn´eho obrazu omezena do rozliˇsen´ı800 x 600, nepovolena nejvyˇsˇs´ıkvalita detail˚urenderingu a kvality anti-aliasingu)

15 Teoretick´aˇc´ast Programy pro rendering ter´enu

– pro komerˇcn´ı´uˇcely placen´y(bez omezen´ızm´ınˇen´ych u nekomerˇcn´ı verze)

• E-ON Vue 9 Ovl´ad´an´ıtohoto programu je zaloˇzeno na ˇctyˇrech pohledov´ych oknech (kde jedno okno slouˇz´ık pohledu z libovoln´eho ´uhlu a dalˇs´ıtˇri okna pohl´ıˇz´ı na ter´enze smˇeru os x, y a z). Do sc´eny je moˇzno um´ıstit na uˇzivatelem poˇzadovan´em´ısto libovoln´emnoˇzstv´ıter´en˚ua objekt˚u. Nastavov´an´ımateri´alu ter´en˚u, je moˇzno vˇzdy lehce kontrolovat pomoc´ı n´ahledov´ekuliˇcky“ (ta sv´ym porvchem simuluje povrch v´ysledn´eho ” ter´enu). Program se d´ale tak´ezab´yv´amoˇznost´ıpˇrid´an´ıtzv. ekosyst´emu do ter´enu (r˚uzn´edruhy vegetace atd) pro zv´yˇsen´ırealistiˇcnosti. Ovl´ad´an´ım je tento program podobn´ynapˇr. programu WorldBuilder. Oproti program˚um Terragen 2 a Bryce je moˇznost tedy vytv´aˇrer sc´enu z v´ıce pohled˚u.

– E-ON Vue je high-endov´ygener´ator krajin – dovoluje pˇrid´an´ıstatick´ych i dynamick´ych objekt˚udo sc´eny (ob- sahuje napˇr´ıklad pˇres 170 typ˚uvloˇziteln´evegetace) – vytv´aˇr´ıplnˇeanimovan´esc´eny s obs´ahl´ymnastaven´ım atmosf´ery (obsahuje 160 typ˚upˇreddefinovan´ych atmosf´era 140 typ˚utyp˚u oblaˇcnosti) – dostupn´yna platform´ach Microsoft Windows (Windows XP, Win- dows Vista a Windows 7) a Mac OS X (10.5 a novˇejˇs´ı) – placen´ykomerˇcn´ıprogram dostupn´yv nˇekolika verz´ıch (napˇr. In- finite a xStream)

• Bryce 7.1 Program pro generov´an´ıkrajin zaloˇzen´yˇcistˇena jednoduch´emumist’o- v´an´ı a ´upravˇeter´enu v 3D grafick´emprostˇred´ı. Pro tvorbu povrchu d´av´ak dispozici ruˇcn´ı´upravu v´yˇskov´emapy a ˇsirokou ˇsk´alu moˇznost´ı pro nastaven´ıvlastnost´ımateri´alu ter´enu. Oproti E-ON Vue je vˇetˇsina ovl´adac´ıch prvk˚utohoto programu za- mˇeˇrena na tvorbu objekt˚uve sc´enˇe. A d´ale tak´eoproti E-ON Vue disponuje pro pohled na vytv´aˇrenou sc´enu nahl´ıˇzen´ım pouze z jednoho pohledu, coˇzm˚uˇzeb´yt umist’ov´an´ıobjekt˚udo sc´eny nepraktick´e.

16 Teoretick´aˇc´ast Programy pro rendering ter´enu

– p˚uvodnˇebyl vytvoˇren hlavnˇena tvorbu frakt´aln´ıch povrch˚uhor a pobˇreˇz´ı – podporuje tvorbu animac´ıa 3D modelov´an´ı – dovoluje umist’ov´an´ıobjekt˚ua vegetace do sc´eny – dostupn´yna platform´ach Microsoft Windows (Windows NT4(SP6), Windows 2000(SP2), Windows XP, Windows Vista a Windows 7) a na Mac OS X (10.4 a novˇejˇs´ı) – placen´ykomerˇcn´ıprogram

• VistaPro Renderer 4.2 Program VistaPro oproti vˇetˇsinˇegener´ator˚ukrajin nevyuˇz´ıv´a3D roz- hran´ına tvorbu sc´eny. Oproti (napˇr´ıklad Bryce 7.1) tedy nedovoluje uˇzivateli zasahovat pˇr´ımo“ do 3D prostoru. Uˇzivatel si m˚uˇzenasta- ” vit poˇzadovanou sc´enu pouze zmˇenou hodnot v jednotliv´ych oknech nastaven´ı. Program Terragen, kter´yje tak´ezamˇeˇren na tvorbu sc´eny pˇres ˇr´ıd´ıc´ı panely oproti tomuto programu nedisponuje moˇznost´ıvloˇzit do sc´eny napˇr´ıklad stromy a dalˇs´ıobjekty, avˇsakd´av´ak dispozi ˇsirˇs´ınastaven´ı atmosf´ery ve sc´enˇe.

– gener´ator krajin a povrch˚u – moˇzˇnuje umist’ovat do sc´eny dalˇs´ıobjekty (jako jsou r˚uzn´edruhy strom˚ua modely dom˚u) – dovoluje pˇrid´an´ıvelmi jednoduch´eho typu atmosf´ery do sc´eny – p˚uvodnˇeurˇcenpro Amiga a PC – nejnovˇejˇs´ıverze dostupn´apouze na platformˇeMicrosoft Windows (Windows 98, Windows ME, Windows 2000 a Windows XP) – placen´ykomerˇcn´ıprogram

• WorldBuilder Pro 4 Tento program pˇripom´ın´asv´ym uˇzivatelsk´ym prostˇred´ım 3D mode- lovac´ı programy (napˇr. Blender). Ter´ena dalˇs´ı objekty se v tomto programu umist’uj´ıpomoc´ın´ahledov´ych oken, kter´a(pˇrednastavenˇe) ukazuj´ısc´enu ze tˇr´ıpohled˚uurˇcen´ych osami (x,y,z) a oknem pro pohled na sc´enu z voliteln´eho ´uhlu. Ter´en se upravuje pomoc´ın´astroj˚upro o- vlivnˇen´ıtvaru (tedy v tomto pˇr´ıpadˇejde hlavnˇeo kˇrivky, kter´e pr˚u- ” chodem“ skrz plochu ter´enu mˇen´ıjeho geometrii).

17 Teoretick´aˇc´ast Programy pro rendering ter´enu

Vˇsechny nastaven´ıse pak prov´adˇej´ıv postrann´ınab´ıdce, kde je moˇzno pouˇz´ıt n´astroje pro ´upravu povrchu ter´enu, um´ıstˇen´ısvˇetla a mnoho dalˇs´ıho. Program WorldBuilder je podobn´yprogramu E-ON Vue, avˇsak oproti nˇemu je tvorba plochy reprezentuj´ıc´ıter´env tomto programu sloˇzitˇejˇs´ı.

– gener´ator krajin s n´avaznost´ına 3D modelovac´ıprogramy Max, Maya, LightWave a SoftImage – podporuje tvorbu animac´ıa moˇznost vloˇzen´ıefektu deˇstˇea snˇehu – dostupn´yna platformˇeMicrosoft Windows (Windows NT4(Service Pack 5), Windows 2000(Service Pack 2) a Windows XP(Service Pack 1)) – placen´ykomerˇcn´ıprogram

• World Machine 2.2 Tento program zprostˇredkov´av´atvorbu ter´enu pomoc´ınapojov´an´ıjed- notliv´ych zaˇr´ızen´ı“ (angl. device - obdoba Node network“ z Terragenu ” ” 2). Kaˇzd´eobsahuje sv´edetailn´ınastaven´ıpodle toho, k ˇcemu je urˇceno. Jejich postupn´ym poskl´ad´an´ım (respektive propojen´ım do hierarchick´e struktury) se tvoˇr´ıv´ysledn´asc´ena. Program World Machine je podobn´yprogramu Terragen 2, ale oproti nˇemu je tento program urˇcen pˇrev´aˇznˇena tvorbu ter´enu (ve formˇe objetku nebo v´yˇskov´emapy) pro pouˇzit´ıv dalˇs´ıch programech (jako jsou E-ON Vue a dalˇs´ı).

– gener´ator pro tvorbu umˇeleck´ych sc´en, krajin pro poˇc´ıtaˇcov´ehry a dalˇs´ı – nab´ız´ımodelov´an´ıeroz´ıpovrchu, velk´emoˇznosti v nastaven´ıtex- turov´an´ıpovrch˚u – dostupn´yna platformˇeMicrosoft Windows – placen´ykomerˇcn´ıprogram

Z tˇechto program˚ubyl prvn´ıjmenovan´yprogram Terragen vybr´an jako pˇredloha pro vytvoˇren´ıinteraktivn´ıho GUI programu, kter´ybude generovat bloky, z nichˇzse sestav´ısurface shader pro obarvov´an´ıuˇzivatelem defino- van´eho ter´enu.

18 3 Realizaˇcn´ıˇc´ast

Na fotorealistick´yrendering ter´enu (neboli vyobrazen´ıter´enu tak, aby po- zorovateli pˇripadalo jako co nejv´ıce pˇrirozen´e)existuje mnoho program˚u(viz kapitola 2.6).

K tomu, aby se dal vygenerovat fotorealistick´yobr´azek umˇel´eho ter´enu, je potˇreba definovat v´yˇskov´adata, kter´aurˇcuj´ıgeometrii ter´enu, jak´ymzp˚u- sobem bude vytvoˇrena textura ter´enu (tedy jak bude obarven), osvˇetlen´ı sc´eny a atmosf´erick´ejevy, kter´ev´ıce pˇribliˇzuj´ıv´ysledek realitˇe.

M´ym c´ılem je realizovat interaktivn´ıaplikaci, kter´avytv´aˇr´ısurface shader, jehoˇz´ukolem je obarven´ıter´enu ve v´ysledn´esc´enˇe.Tento shader bude sloˇzen z nˇekolika kombinovateln´ych blok˚u, kter´emaj´ıza ´ukol ve v´ysledku vypoˇc´ıtat barvu kaˇzd´eho bodu povrchu tak, aby v´ysledek byl kvalitativnˇeporovnateln´y s ostatn´ımi programy (kter´ese zab´yvaj´ı renderingem pˇr´ırodn´ıch povrch˚u ter´enu).

Pro n´azornost k tomu pouˇziji jeden z nejzn´amˇejˇs´ıch program˚uzab´yva- j´ıc´ım se problematikou fotorealistick´eho renderov´an´ıobrazu ter´en˚u. T´ımto programem je v kapitole 2.6 zm´ınˇen´yTerragen Classic.

3.1 Fotorealistick´eter´eny v Terragenu

Terragen Classic je jeden z nejzn´amˇejˇs´ıch program˚upro fotorealistick´yren- dering ter´enu. Tento program dovoluje uˇzivateli nastavovat pro sc´enu jak obarven´ıter´enu tak i atmosf´eru a mnoho dalˇs´ıho.

Mezi jeho nev´yhody se vˇsak ˇrad´ıto, ˇzenedovoluje umist’ovat do vytv´aˇren´e sc´eny dalˇs´ıobjekty a vegetaci.

N´asbude pˇredevˇs´ım zaj´ımat, jak´ymtento program zpracov´av´aobarven´ı ter´enu pro generovan´epovrchy.

Nejdˇr´ıve si pop´ıˇseme, jak vypad´atvorba ter´enu, kter´aje vidˇetna obr´azku 3.1. Na tomto obr´azku jsou pops´any hlavn´ıˇc´asti grafick´eho uˇzivatelsk´eho prostˇred´ı(GUI).

19 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

1. Panel pro generov´an´ıter´enu. Pomoc´ıtohoto panelu se daj´ıimportovat vstupn´ıv´yˇskov´adata ter´enu do Terragenu a stejnˇetak se daj´ıexpor- tovat v´yˇskov´adata vygenerovan´eho ter´enu ve form´atu RAW1 obr´azku. D´ale je zde moˇzno vidˇetn´ahled vygenerovan´eho ter´enu a napˇr´ıklad nastavit ˇsk´alov´an´ıv´yˇsky a dalˇs´ımodifikace geometrie aktu´alnˇezpra- cov´avan´eho ter´enu.

2. Tento panel slouˇz´ı k manu´aln´ımu nastaven´ı pozice a smˇeru pohledu kamery v ter´enu.

3. Nastaven´ıpozice kamery pomoc´ıˇc´ıseln´ych hodnot.

4. Seznam druh˚ut´er´en˚upro vytvoˇren´ıprocedur´aln´ıtextury ter´enu.

5. N´ahledov´eokno ter´enu s moˇznost´ızmˇeny kvality zobrazen´ıv´ysledku. Poskytuje moˇznost nastaven´ı velikosti v´ystupn´ıho obr´azku, vypnut´ı vykreslov´an´ıoblohy a tvorby animace.

6. Panel k otevˇren´ıoken s dalˇs´ım nastaven´ım. Od shora to jsou:

• Nastaven´ırenderingu • Povrch ter´enu • Nastevn´ıvodn´ıplochy • Nastevn´ıoblohy (mraky) • Nastaven´ıosvˇetlen´ı • Interaktivn´ı3D n´ahled • Posledn´ıvytvoˇren´yobr´azek

3.1.1 V´yˇskov´adata

Prvn´ı, co v je v Terragenu nutno udˇelat, je z´ıskat v´yˇskov´adata, ze kter´ych bude vytvoˇren ter´en. Pro tuto ´ulohu obsahuje Terragen vlastn´ı gener´ator v´yˇskov´ych dat.

Gener´ator tˇechto v´yˇskov´ych dat je vidˇetna obr´azku 3.2 a spouˇst´ı se z hlavn´ıho okna pˇres tlaˇc´ıtko Generate Terrian v panelu 1 na obr´azku 3.1.

1form´atRAW = jde o nekomprimovan´epole v´yˇsek s 8 nebo 16 bitovou pˇresnost´ı.Tento typ form´atu m˚uˇzeobsahovat doplˇnuj´ıc´ıinformace v hlaviˇccesoubor (pro naˇsi pr´acivˇsak ˇz´adn´adata v hlaviˇcce souboru neobsahuje).

20 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

Obr´azek 3.1: Uk´azka hlavn´ıho okna programu Terragen Classic.

21 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

Obr´azek 3.2: Uk´azka nab´ıdky pro vygenerov´an´ı nov´e geometrie povrchu ter´enu v programu Terragen Classic

Na tomto obr´azku je vidˇet, ˇze Terragen disponuje moˇznost´ınastaven´ımetody pro generov´an´ıpovrchu a moˇznost´ıupraven´ıparamametr˚u, z kter´ych je tento povrch generov´an. Tyto metody jsou:

• Subdivide & Displace II - origin´aln´ı“ generov´an´ıv´yˇskov´ych dat pro Ter- ” ragen • Perlin noise - Perlin˚uv ˇsum • Ridged Perlin - rozˇs´ıˇren´ıPerlinova ˇsumu s t´ım, ˇzedo t´er´enu pˇrid´av´a v´ıce hˇreben˚u2 • Multi-versions of Perlin - vytv´aˇr´ıv´ıce hrbolat´ya nepravideln´ypovrch neˇzsamotn´aPerlinova ˇsumov´afunkce (do tˇechto metod patˇr´ı Multi Perlin a Ridged Multi Perlin )

Pro n´azornou uk´azku tˇechto metod je vidˇetna obr´azku 3.3 pˇr´ıklad vy- generovan´ych v´yˇskov´ych map.

Dalˇs´ımoˇznost´ıje import v´yˇskov´ych dat do programu Terragen z extern´ıch zdroj˚u(tedy ze soubor˚u). Nejˇcastˇeji se pouˇz´ıv´aform´atu RAW, kter´yobsahuje ˇcist´adata. Pro ´uˇcelreprezentace v´yˇskov´ych dat se vyuˇz´ıv´a8 bitov´yRAW, kde kaˇzd´ych 8 bit˚uud´av´ajeden pixel (ˇsedot´onov´eho) obr´azku. Pixely tohoto obr´azku ud´avaj´ıtvar ter´enu (respektive reprezentuj´ıv´yˇskov´adata ter´enu). Jak tato reprezentace vypad´aje vidˇetna obr´azku 3.4.

2Hˇreben je oznaˇcen´ıskaln´ıho tˇelesa, kter´ese t´ahne mezi dvˇemavrcholy povrchu, ˇcijako dlouh´epomˇernˇerovn´em´ısto, na jehoˇzdvou stran´ach doch´az´ık prudk´emu poklesu v´yˇsky.

22 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

Obr´azek 3.3: Druhy metod generov´an´ıter´en˚u(z leva: Subdivide & Displace II, Perlin noise, Multi Perlin, Ridged Perlin a Ridged Multi Perlin).

Obr´azek 3.4: V´yˇskov´adata pomoc´ıRAW obr´azku (vlevo), 3D v´yˇskov´amapa vytvoˇren´az tˇechto dat (vpravo).

Tato data se kromˇeimportu daj´ı tak´eexportovat ve stejn´emform´atu pro pouˇzit´ıv dalˇs´ıch programech.

3.1.2 Texturov´an´ı

Na vygenerovan´yter´enje potˇreba vytvoˇrit obarven´ı (tedy pˇridat ter´enu texturu). Obarvov´an´ı povrchu ter´enu se v Terragenu prov´ad´ı pomoc´ı bu- dov´an´ıprocedur´aln´ıtextury ve formˇev´ypoˇcetn´ıho stromu. V programu je to reprezentov´ano stromovou strukturou, kde kaˇzd´yuzel t´eto struktury pˇred- stavuje jeden typ subtextury ter´enu. Ve stromov´estruktuˇre se nach´az´ıjedna z´akladn´ıtextura a ta se pˇrekr´yv´atˇemito subtexturami.

23 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

U z´akladn´ıtextury se nastavuje jedna barva, kter´abude pouˇzita pro obar- ven´ıtohoto ter´enu v m´ıstech, kde nebude ˇz´adn´asubtextura. Na obarvovan´an´ı vˇsak neni pouˇzita ˇcistˇeuˇzivatelem definovan´abarva, ale m´ana ni velk´yvliv i osvˇetlen´ı(podle toho se barva definovan´auˇzivatelem pˇri v´ypoˇctu uprav´ı) a bump mapping3.

Pro subtextury, kter´ebudou pˇrekr´yvat z´akladn´ıtexturu ter´enu, je nasta- ven´ırozˇs´ıˇreno. Je moˇzno nastavit, v jak´ych podm´ınk´ach se bude subtextura na povrchu ter´enu vyskytovat. Tyto podm´ınky jsou:

• minim´aln´ıa maxim´aln´ıv´yˇska v´yskytu subtextury na povrchu ter´enu

• minim´aln´ıa maxim´aln´ı´uhel subtextury, ve kter´emje v´yskyt povolen

Pˇri vytv´aˇren´ıprocedur´aln´ıtextury ter´enu si Terragen zjiˇst’uje pro kaˇzd´y bod ter´enu, zda jsou tyto podm´ınky splnˇeny a podle toho se rozhodne, zda bude v dan´emm´ıstˇepro obarven´ıtextury pouˇzita tato subtextura ter´enu.

Pro nejednoznaˇcn´eobarven´ı(jako je tomu v pˇr´ırodˇe)jsou zde moˇznosti ovlivnˇen´ıpˇresnosti pokryt´ıpˇri splnˇen´ıtˇechto podm´ınek (tedy, ˇzeTerragen ne- mus´ıpˇresnˇedodrˇzet pˇriumist’ov´an´ıobarven´ıtextury ter´enu dan´epodm´ınky se stoprocentn´ıpˇresnost´ı).

Jak tato nastaven´ı subtextury ter´enu vypadaj´ı, je vidˇetv doln´ı ˇc´asti obr´azku 3.5.

Procedur´aln´ıtextura je vˇsak tvoˇrena z v´ıce neˇzjedn´esubtextury a proto je jeˇstˇedefinov´ana priorita obarven´ıter´en˚u. Tato priorita je udan´apozic´ı ve stromov´estruktuˇre subtextur (viz obr´azek 3.1 - poloˇzka 5). Tato stro- mov´astruktura m´acharakter uspoˇr´adan´eho stromu4. V uspoˇr´adan´emstromu pro n´aˇspopis jsou subtextury vrcholy stromu.

Priorita subtextur je ud´ana takto:

3Bump mapping je technika texturov´an´ı, kter´avytv´aˇr´ıiluzi nerovnosti povrchu bez zmˇeny jeho geometrie. Iluze nerovnosti povrchu se dosahuje ´upravou norm´aly v kaˇzd´em pixelu plochy. Modifikovan´anorm´ala pak ovlivn´ıv´ypoˇcet osvˇetlen´ıplochy. Citace z [5, 13] 4Uspoˇr´adan´ystrom je takov´y, ve kter´em jsou vˇetve kaˇzd´eho vrcholu uspoˇr´adan´e.Vrchol y, kter´yje bezprostˇrednˇepod vrcholem x se naz´yv´a(pˇr´ım´y) n´asledn´ıkvrcholu x. Kdyˇz je vrchol x na i-t´e´urovni, tak vrchol y bude na (i+1) ´urovni. Vrchol x se pak naz´yv´a (pˇr´ım´y) pˇredch˚udce vrcholu y. Koˇren stromu je na prvn´ı´urovni. V´ıce v [8].

24 Realizaˇcn´ıˇc´ast Fotorealistick´eter´enyv Terragenu

Obr´azek 3.5: Okno s nastaven´ım subtextury ter´enu v Terragenu.

Obr´azek 3.6: Uspoˇr´adan´ystrom subtextur pro tvorbu prodedur´aln´ıtextury ter´enu v Terragenu.

25 Realizaˇcn´ıˇc´ast GUI program

Obr´azek 3.7: Uk´azka vytvoˇren´eho interaktivn´ıho GUI programu

• Pokud m´avrchol v´ıce n´asledovn´ık˚u, tak vˇetˇs´ıprioritu m´aten, kter´yje n´ıˇze. Na obr´azku 3.6 m´avˇetˇs´ıprioritu vrchol Subtextura 2 neˇz Subtex- tura 1.

• Pro n´asledn´ıka a pˇredch˚udce plat´ı, ˇzevˇetˇs´ıprioritu pˇrekreslov´an´ım´a n´asledovn´ık.

• Pro n´asledn´ıka plat´ı, ˇzepodm´ınky jeho zobrazen´ıjsou nav´ıc omezeny podm´ınkami jeho pˇredch˚udce.

Podle tˇechto pravidel se pˇri renderov´an´ı(vykreslov´an´ı) obr´azku tvoˇr´ıpro- cedur´aln´ıtextura ter´enu.

3.2 GUI program

Po vzoru Terragenu (viz kapitola 3.1) byl v t´eto pr´aci vytvoˇren GUI program nazvan´y RenderMan Terrain Creator (d´ale uˇzjen RTC ), jehoˇz´ukolem je tvorba RIB souboru pro popis sc´eny s ter´enem a surface shaderu pro obarven´ı ter´enu.

Tento program byl naps´an v programovac´ım jazyce C# (s podporou .NET

26 Realizaˇcn´ıˇc´ast GUI program

Framework 4). Uk´azka grafick´ehu uˇzivatelsk´eho prostˇred´ıtohoto programu je vidˇetna obr´azku 3.7.

Surface shader generovan´yt´ımto programem je vytvoˇren z menˇs´ıch blok˚u (respektive modul˚u).

Program je vytvoˇren tak, aby uˇzivateli d´aval k dispozici co nejvˇetˇs´ıˇsk´alu nastaviteln´ych parametr˚us n´ahledem toho, na jakou ˇc´ast ter´enu ve sc´enˇe budou m´ıt uˇzivatelem nastaven´eparametry vliv. Pro zkuˇsenˇejˇs´ıho uˇzivatele je moˇzn´ai manu´aln´ı´uprava nastaven´ıvygenerovan´ych modul˚u. Tato ´uprava vˇsak jiˇznen´ıtak jednoduch´ajako tvorba modul˚upˇr´ımo v GUI prostˇred´ıa je k n´ıpotˇreba alespoˇnminim´aln´ıznalost toho, co kter´ymodul dˇel´a.

V´ystupn´ımi soubory t´eto aplikace jsou vygenerov´any moduly, kter´ese prostˇrednictv´ım n´astroje AQSIS pˇreloˇz´ıdo v´ysledn´eho surface shaderu.

Dalˇs´ım vygenerovan´ymsouborem je i RIB soubor (pouze v pˇr´ıpadˇe,ˇze byla uˇzivatelem naˇctena v´yˇskov´amapa). V nˇemje definov´ana sc´ena s poˇzado- van´ym nastaven´ım a na plochu reprezentuj´ıc´ıter´enje aplikov´anjiˇzzmiˇnovan´y surface shader.

3.2.1 V´yˇskov´adata

V´yˇskov´adata pro vstup RTC program jsou ve form´atu RAW, ve kter´em nedoch´az´ıke ztr´atˇea zkreslen´ıkvality uchov´avan´ych dat. Jelikoˇzdatov´yfor- m´atRAW v sobˇenenese ˇz´adnou informaci o ˇs´ıˇrce a d´elce obrazu (respektive mapy, kter´am´ab´yt um´ıstˇena do sc´eny), je pˇredpokl´ad´ano, ˇzebudou mapy ˇctvercov´eho charakteru (tedy ˇs´ıˇrka a d´elka obrazu jsou shodn´e). Stejnˇeje tomu tak i v programu Terragen Classic, avˇsak ten dovoluje naˇc´ıtat pouze v´yˇskov´emapy pˇredem dan´ych velikost´ı.

RAW soubor je tvoˇren Byty, kde kaˇzd´yByte ud´av´av´yˇsku v dan´embodˇe ter´enu. Z toho vypl´yv´a,ˇzekaˇzd´ybod ter´enu nab´yv´ahodnot 0 aˇz28 − 1 (neboli 0 aˇz255), kde 0 je jeden v´yˇskov´yextr´ema hodnota 255 je druh´y.

Pˇri naˇc´ıt´an´ınov´ev´yˇskov´emapy RAW se zpˇr´ıstupn´ız´akladn´ınastaven´ı sc´eny. V tomto nastaven´ısi uˇzivatel m˚uˇzedefinovat poˇc´ateˇcn´ıpolohu kamery, v´yˇsku nad ter´enem v m´ıstˇekamery a smˇer, kter´ym bude kamera natoˇcena podobnˇejako tomu je v programu Terragen Classic.

27 Realizaˇcn´ıˇc´ast GUI program

Obr´azek 3.8: V´yˇskov´adata jako ˇsedot´onov´yobraz. Obr´azek pˇrevzat ze str´anek http://www.povray.org/documentation.

Hlavn´ım rozd´ılem Terragenu Classic oproti vytvoˇren´emu RTC programu je zpracov´an´ıv´yˇskov´emapy ve form´atu RAW. RTC program naˇc´ıt´av´yˇskov´a data tak, jak jsou v RAW uloˇzena. Vˇetˇsinou jsou v´yˇskov´adata v RAW for- m´atu uloˇzena tak, ˇzepˇrijejich zobrazen´ıje severn´ıstrana mapy nahoˇre a jiˇzn´ıdole. V programu Terragen jsou vˇsakv´yˇskov´adata naˇcten´az RAW in- terpretov´ana opaˇcnˇe(respektive je zamˇenˇena severn´ıa jizn´ıstrana). Proto je potˇreba pˇred importem v´yˇskov´ych dat (v´yˇskov´emapy) data pozmˇenit. Pokud chceme importovat do Terragenu v´yˇskov´adata a zachovat severn´ıa jiˇzn´ıorientaci v´yˇskov´emapy, tak je nutno RAW data horizont´alnˇepˇreklopit5.

Tato v´yˇskov´adata lze z´ıskat napˇr´ıklad prostˇrednictv´ım programu Quan- tum GIS, kter´yum´ıvizualizovat a exportovat data z topografick´ych mˇeˇren´ı SRTM agentury NASA do r˚uzn´ych form´atu nebo exportem v´yˇskov´ych dat z programu Terragen.

3.2.2 Podm´ınky povrchu

Jedn´ım z d˚uleˇzit´ych nastaven´ıparametr˚uter´enu je urˇcen´ıtoho, kde se bude ˇc´ast aktu´alnˇezpracov´avan´eho ter´enu v objektu (v ploˇsereprezentuj´ıc´ıter´en)

5Co bylo v p˚uvodn´ımsouboru v´yˇskov´ych dat severn´ıstranou povrchu se po naˇcten´ı v Terragenu stane stranou jiˇzn´ıa naopak.

28 Realizaˇcn´ıˇc´ast GUI program

Obr´azek 3.9: Nastaviteln´epodm´ınky zobrazen´ıvybran´eho povrchu. nach´azet. Pro tuto subtexturu jsou d˚uleˇzit´eparametry v´yˇska a sklon. Ty ud´a- vaj´ı, pˇri jak´ych podm´ınk´ach se m˚uˇzeve v´ysledn´emter´enu dan´asubtextura vyskytovat (napˇr´ıklad sn´ıh se nem˚uˇzedrˇzetve velk´ych sklonech atd.).

Pro zjednoduˇsen´ıje moˇzno zad´avat ter´endvˇema zp˚usoby. Prvn´ıje tzv. pomˇerem. Tento zp˚usob ud´av´av´yˇsku v povrchu pomoc´ıpomˇeru v˚uˇcicel´e v´yˇsceobjektu. Tedy hodnota 0 ud´av´anejniˇzˇs´ımoˇznou v´yˇsku ter´enu a ma- xim´aln´ıv´yˇska 1.0 ud´av´anejvyˇsˇs´ıbod. Druh´ym zp˚usobem je zad´av´an´ıpˇres v´yˇsky v metrech.

Sklon ter´enu je ud´av´an ve stupn´ıch. Omezen´ısklonu je h0, 90i stupˇn˚u, kde 0 ud´av´avodorovnou plochu a 90 kolmou plochu.

Panel s tˇemito nastaven´ımi je vidˇetna obr´azku 3.9.

Tyto parametry je v Terragenu tak´emoˇzno nastavit, avˇsak pro nastaven´ı sklonu nen´ımoˇzn´epro dan´yter´en definovat ˇc´ıselnou hodnotou, ale pouze zmˇenou posuvn´ıku (tedy nen´ımoˇzn´epˇresn´eˇc´ıseln´edefinov´an´ıtˇechto hodnot a je nutno hodnoty nastavovat odhadem pˇres n´ahledov´eokno).

V´yˇskov´ehodnoty je v Terragenu moˇzno zad´avat taky v metrech. Druh´a moˇznost je vˇsak odliˇsn´at´ım, ˇzev Terragenu se zad´avaj´ıhodnoty v´yˇsky v jed- notk´ach ter´enu (terrain units) zat´ımco v RTC programu je moˇzno nastavovat tyto hodnoty pˇres jiˇzzm´ınˇen´epomˇerov´ehodnoty, kter´epom´ahaj´ıuˇzivateli v pˇredstavˇe, v jak´ev´yˇscebude dan´ahranice nastavena.

Do podm´ınek, ve kter´ych se m´aaktu´alnˇeupravovan´yter´en um´ıstit je zaˇrazen tak´eˇsum na pˇrechodu. Ten se skl´ad´ajak z aplikace turbulentn´ıho ˇsumu na pˇrechod mezi dvˇema ter´eny (aktu´aln´ıa nadˇrazen´y) tak i z ˇs´ıˇrky

29 Realizaˇcn´ıˇc´ast GUI program

Obr´azek 3.10: Nastaviteln´av´yˇska a sklon pˇrechodu mezi dvˇema ter´eny. pˇrechodu, kter´azabraˇnuje ostr´emu pˇrechodu mezi ter´eny (tento panel je vidˇet na obr´azku 3.10).

Pro co nejlepˇs´ıpˇredstavu o m´ıstˇe,kde bude ve v´ysledku ter´enobarven, je pouˇzito barevn´eho zv´yraznˇen´ıv n´ahledov´emoknˇeihned po zmˇenˇehodnot v´yˇsky a sklonu (viz kapitola 3.2.3).

3.2.3 N´ahled vybran´ehoter´enu

Aby mˇel uˇzivatel moˇznost zjiˇstˇen´ı, zda hodnoty, kter´ezadal budou ve v´ysledku vyobrazeny, je v programu implementov´ano n´ahledov´eokno. V tomto oknˇe se automaticky zobrazuj´ıvˇsechny zmˇeny proveden´euˇzivatelem na naˇcten´em mapov´empodkladu.

Ta ˇc´ast ter´enu, kterou uˇzivatel vybral pro aplikace zmˇenobarven´ı, je v n´ahledov´emoknˇezobrazena ˇcervenou barvou. C´ast,ˇ kter´am´ab´ytnav´ıc zahrnuta do pˇrechodu (tedy m´ıch´an´ıaktu´alnˇeupravovan´eho ter´enu s nadˇra- zen´ym ter´enem), je oznaˇcov´ana oranˇzovou barvou.

Pˇrechodov´aˇc´ast je interaktivnˇemˇenˇena pˇri zad´av´an´ıpodm´ınek do pod- m´ınek ter´enu.

V Terragenu je pˇri ´upravˇeter´enu zobrazov´ann´ahled tak, ˇze je na ˇcern´em pozad´ı vyobrazena b´ıle pouze ˇc´ast, kter´abude v´yslednˇeobarvena. Oproti tomu v RTC programu je vidˇetobarvovan´aˇc´ast s kontextem okoln´ıho ter´enu a nav´ıc je oproti Terragenu moˇznost tento n´ahled zvˇetˇsit.

Rozd´ıl mezi n´ahledov´ymoknem Terragenu a oknem RTC programu je n´azornˇevidˇetna obr´azku 3.11.

30 Realizaˇcn´ıˇc´ast GUI program

Obr´azek 3.11: N´ahledov´aokna Terragenu (vlevo) a RTC programu (vpravo).

3.2.4 Tvorba surface shaderu a texturov´an´ı

V tomto programu je vytv´aˇrena procedur´aln´ıtextura, kter´aje reprezentov´ana jako v´ypoˇcetn´ıstrom. Z´asady, kter´ejsou v Terragenu, jsou i zde podobn´e. Jedn´ase opˇeto uspoˇr´adan´ystrom, kde vrcholy stromu reprezentuj´ıjednotliv´e subtextury. V´ypoˇceta m´ıch´an´ı barev vych´az´ı z pravidel, kter´ymi se ˇr´ıd´ı Terragen (napˇr´ıklad tvorba v´ysledn´etextury, kter´avyh´az´ız uspoˇr´adan´eho stromu, kde subtextury maj´ıprioritu obarvov´an´ıurˇcenou svou pozic´ı).

Surface shader, generovan´yRTC programem, je, jak jiˇzbylo zm´ınˇeno v´yˇse,sloˇzenz nˇekolik modul˚u. Kaˇzd´yz tˇechto modul˚um´ajinou funkci.

Moduly se volaj´ıjako procedury s nˇekolika parametry. Po jejich zavol´an´ı a ´uspˇeˇsn´emv´ypoˇctu vrac´ızpˇetpoˇzadovan´yv´ysledek, kter´yje pouˇzit na dalˇs´ı zpracov´an´ı.

Tyto moduly jsou:

• terrain shader.sl

– jde o surface shader, jehoˇz´ukolem je vypoˇc´ıtat obarven´ıpovrchu v z´avislosti na vstupn´ıch parametrech (viz kapitola 3.4.5) – v popisu sc´eny (RIB souboru) je vol´an pro aplikaci na objekt (ter´en) pˇr´ıkazem Surface ”terrain shader”

31 Realizaˇcn´ıˇc´ast GUI program

– jsou v nˇemvol´any dvˇefunkce: colour() pro m´ıch´an´ıbarev v kaˇzd´e subtextuˇre a funkce resolve function(), kter´arozhoduje, jak´az dvo- jic barev subtextur bude na povrch um´ıstˇena (tˇechto dvojic je to- lik, kolik je v ter´enu subtextur)

• turbulence.h

– tento modul vypoˇc´ıt´av´apodle paramatr˚u(uveden´ych v kapitole 3.4.1) hodnotu turbulentn´ıho ˇsumu (viz kapitola 2.5.3)

• colour.h

– jde o v´ypoˇcetjedn´ebarvy ze ˇctyˇrvstupn´ıch barev (4 barvy jedn´e subtextury) pomoc´ıturbulentn´ıfunkce turbulence() – v tomto modulu je z´aroveˇnpoˇc´ıt´anbump mapping pro zmˇenu obarven´ıdan´eho ter´enu pomoc´ıfunkce bump mapping() – je vol´an jako colour() - podrobn´ypopis parametr˚uv kapitole 3.4.3

• bump mapping.h

– v´ypoˇcet bump mappingu – je vol´anfunkc´ı bump mapping() a jeho v´ystupem je pozmˇenˇen´a norm´ala povrchu ter´enu pomoc´ıturbulentn´ıho ˇsumu – podrobn´ypopis funkce a parametr˚uje v kapitole 3.4.2

• resolve function.h

– funkce, kter´apodle nastaven´ych parametr˚u(dvou barev pro dva ter´eny a podm´ınek jejich pouˇzit´ı) urˇcuje v´ystupn´ıbarvu – v t´eto funkci se tak´epoˇc´ıtaj´ıpˇrechody mezi subtexturami ter´enu – podrobn´ypopis funkce a parametr˚uje v kapitole 3.4.4

• setting.h

– soubor se vˇsemi potˇrebn´ymi parametry, kter´eurˇcuj´ı jednotliv´e subtextury ter´enu, jejich barvy atd.

32 Realizaˇcn´ıˇc´ast RIB soubory

3.3 RIB soubory

Pro definov´an´ısc´eny, tedy objekt˚u, materi´al˚u, svˇetel, kamery atd. jsou podle RenderMan Iterface dvˇemoˇznosti:

• pomoc´ıprocedur´aln´ımetody - tedy programov´eho rozhran´ı

• pˇres RIB (RenderMan Interface Bytestream)

V´ıce o psan´ıRIB soubor˚uv [1, 2, 3].

Pro uk´azku si pop´ıˇseme jednoduchou tvorbu RIB souboru:

Format 1024 768 1

T´ımto pˇr´ıkazem ud´av´ame jako prvn´ı a jde o form´at v´ystupn´ıho obr´azku. Prvn´ıdva parametry ud´avaj´ıˇs´ıˇrku a v´yˇsku tohoto v´ystupn´ıho obr´azku v pi- xelech. Tˇret´ıparametr ud´av´apomˇerˇs´ıˇrky pixelu k jeho v´yˇsce.

PixelSamples 2 2

Nastaven´ız kolika okoln´ıch bod˚use bude poˇc´ıtat barva dan´eho pixelu. Pro ro- zumnˇevypadaj´ıc´ıv´ysledky je doporuˇceno nastavit tento parametr pˇribliˇznˇe na 3 3.

Display "vystupniobrazek.tiff" "file" "rgb"

Nastaven´ıtypu v´ystupu, v tomto pˇr´ıpadˇejde o v´ystup do souboru (v pˇr´ıpadˇe v´ystupu na obrazovku se m´ısto "file" pouˇz´ıv´a "framebuffer").

Projection "perspective" "fov" [60]

Tento pˇr´ıkaz nastavuje kameru. Jak je zˇrejm´ez jm´ena pˇr´ıkazu, jde o nastaven´ı typu projekce (v tomto pˇr´ıpadˇeperspektivn´ı) a pohledov´eho ´uhlu kamery.

WorldBegin

N´avˇeˇst´ı WorldBegin ud´av´a,odkud lze zaˇc´ıt definovat sc´enu jako takovou (ukonˇcen´ım bude n´avˇeˇst´ı WorldEnd).

LightSource "distantlight" 1 "from" [-10 10 10] "intensity" 8.2

33 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

Nastaven´ısvˇeteln´eho zdroje. Parametr "distantlight" ud´av´atyp osvˇetlen´ı, neboli n´azev pouˇzit´eho light shaderu (dalˇs´ıtypy m˚uˇzoub´yt napˇr´ıklad "am- bientlight" a "pointlight"). C´ısloˇ 1 ud´av´ao jak´ejde svˇetlo.

Translate 0 0 50 Rotate -30 1 0 0

Pˇr´ıkazy zad´avaj´ıc´ıtransformaci sc´ena → kamera. Transformace se daj´ızadat bud’ pomoc´ıtransformaˇcn´ımatice a nebo pomoc´ıtˇechto z´akladn´ıch pˇr´ıkaz˚u.

AttributeBegin Color [1 1 0] Surface "matte" "Kd" 0.85 "Ka" 0.35 Translate 0 2 0 Sphere 1 -1 1 360 AttributeEnd

Tyto pˇr´ıkazy slouˇz´ık vytvoˇren´ıˇzlut´ekuliˇcky s matn´ym povrchem. Prvn´ım uveden´ym pˇr´ıkazem, tedy pˇr´ıkazem AttributeBegin, dojde k uloˇzen´ıplatn´ych atribut˚udo z´asobn´ıku (tedy napˇr´ıklad barvy, kter´aje v tomto m´ıstˇenasta- vena). N´aslednˇejsou definov´any objekty. Pˇr´ıkazem Color se definuje barva pro n´asleduj´ıc´ıobjekty (v tomto pˇr´ıpadˇejde o ˇzlutou barvu). Dalˇs´ıpˇr´ıkaz Surface definuje povrch objekt˚u. Za prvn´ıparametr m´an´azev surface shaderu (v tomto pˇr´ıpadˇe matte neboli matn´ypovrch), kter´yse m´ana povrch apli- kovat a parametry Ka a Kd urˇcuj´ı vliv svˇetel. Pˇr´ıkazem Translate dojde k posunu objekt˚u. D´ale je pak uveden pˇr´ıkaz pro zaˇrazen´ıobjektu do sc´eny. V tomto pˇr´ıpadˇejde o kouli (pˇr´ıkaz Sphere).

WorldEnd

Na konci RIB souboru je nutn´euzavˇr´ıt n´avˇeˇst´ım WorldEnd sc´enu. Hloubˇeji o t´eto t´ematice v [1, 2].

3.4 Moduly a jejich pouˇzit´ı

V t´eto kapitole jsou detailnˇepops´any vytvoˇren´emoduly, jak tyto moduly funguj´ıa jak´emaj´ıvstupn´ıparametry.

34 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

3.4.1 Modul v´ypoˇctuTurbulence

Ukolem´ tohoto modulu je v´ypoˇcetturbulence (viz kapitola 2.5.3) pro ´uˇcely dalˇs´ıch modul˚uze vstupn´ıch hodnot amplitudy, frekvence, okt´avy a persis- tence.

Tento modul se pouˇz´ıv´anapˇr´ıklad pro m´ıch´an´ıdvou barev (v´ystupn´ıhod- nota tohoto modulu urˇcuje, kter´ahodnota se v dan´emm´ıstˇepouˇzije).

Hlavn´ıˇc´ast´ıtohoto modulu je v´ypoˇcetturbulence jako takov´e:

for(i = 0; i < octaves; i = i + 1) { perlin = perlin + amplitude * abs(2.0f * (noise((PP_start + perlin_random) * frequency) - 0.5f)); frequency *= 1/persistence; amplitude *= persistence; }

V RenderManu standardnˇevrac´ıfunkce noise() hodnotu v intervalu h0, 1i. Jak jsme si uvedli v teoretick´eˇc´asti, je pro turbulenci nutn´e,aby funkce generuj´ıc´ı n´ahodn´ehodnoty, tyto hodnoty generovala v intervalu h−1, 1i. Proto tedy od vygenerovan´ehodnoty funkce noise() odeˇcteme hodnotu −0.5f (t´ım interval funkˇcn´ıch hodnot posuneme do intervalu h−0.5f, 0.5fi) a n´a- slednˇevyn´asob´ıme dvˇemi (interval se zmˇen´ına h−1, 1i). T´ım jsou splnˇeny poˇzadavky na to, aby n´ahodn´ehodnoty byly v tomto intervalu. Funkce abs() vrac´ıabsolutn´ıhodnotu (je typick´apro turbulenci).

3.4.2 Modul v´ypoˇctuBump mappingu

Tento modul se jmenuje bump_mapping.h. Pomoc´ı parametr˚u amplitudy, frekvence, okt´avy a persistence, kter´ebyly zad´any v RTC programu vy- poˇc´ıt´av´ahodnotu bump mapping pro dan´ybod ter´enu.

float turbulence_bump = turbulence(frequency_bump, amplitude_bump, octave_bump, persistence_bump, set_bump_mapping, PP_start);

Ze vstupn´ıch parametr˚use vygeneruje hodnota pro zmˇenu norm´aly.

35 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

point PP = PP_start + turbulence_bump * normalize(Ng);

V´ypoˇcetnov´ehodnoty bodu z p˚uvodn´ıho bodu a pozmˇenˇen´ehodnoty nor- m´aly.

normal Nf = - calculatenormal(PP);

V´ypoˇcetv´ysledn´enorm´aly Nf pro obarven´ız pozmˇenˇen´eho bodu. Tato nor- m´ala je n´avratovou hodnotou tohoto modulu.

3.4.3 Modul m´ıch´an´ıbarev

V n´asleduj´ıc´ıˇc´asti bude pops´ana struktura modulu colour.h, jehoˇz´ukolem je ze ˇctveˇrice vstupn´ıch barev urˇcit jednu barvu, vypoˇc´ıtat bump mapping v tomto m´ıstˇea podle toho urˇcit v´ystupn´ıbarvu. D˚uvod tohoto m´ıch´an´ıje ten, ˇzekaˇzd´ytyp ter´enu definovan´yuˇzivatelem pro sc´enu je ud´an ˇctyˇrmi z´a- kladn´ımi barvami, mezi kter´ymi se m´ıch´av´ystupn´ıbarva aktu´alnˇepoˇc´ıtan´eho bodu. V´ybˇert´eto barvy se prov´ad´ıpomoc´ıv´ypoˇctu turbulence.

Vstupn´ıparametry jsou (v tomto poˇrad´ı):

• color c1, color c2, color c3, color c4

– ˇctyˇri barvy aktu´aln´ıho povrchu urˇcen´epro m´ıch´an´ı

• float fr, float am, float oc, float pe

– frekvence, amplituda, okt´ava a persistence pro v´ypoˇcetturbulence pˇrim´ıch´an´ıbarev

• float fr_bump, float am_bump, float oc_bump, float pe_bump

– frekvence, amplituda, okt´ava a persistence pro v´ypoˇcetturbu- lence bump mappingu (tedy ´upravy barvy povrchu ter´enu podle pozmˇenˇen´enorm´aly)

• point PP_start

– pozice aktu´alnˇepoˇc´ıtan´eho bodu

• float cond_bump_mapping

36 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

– podm´ınka, zda m´ab´yt aplikov´an bump mapping

• float size_bump_mapping

– hodnota pro pozmˇenˇen´ıbump mappingu

• float bumpiness

– hodnota pro bumppiness - definov´an´ıˇclenitosti a nerovnosti povrchu

• float mimic

– mimika ter´enu umoˇzˇnuje upravit frekvenci pro v´ypoˇcet turbulence bump mappingu

• float Ka, float Kd

– difuzn´ıa ambientn´ısloˇzky osvˇetlen´ı

Prvn´ıˇc´ast´ıtohoto modulu je vypoˇc´ıtat n´ahodnou hodnotu (z turbulence), kter´apro kaˇzdou dvojici barev urˇc´ıjak´abarva se pouˇzije:

float turbulence_float = turbulence(fr, am, oc, pe, 0.0f, PP_start);

Tato funkce se bude volat pro m´ıch´an´ıbarev 1 − 2, 3 − 4 a (12) − (34) (kde hodnoty (12) a (34) jsou dvojice nam´ıchan´ych barev). Dostaneme tˇrihodnoty turbulence_float, turbulence_float2 a turbulence_float3.

inTop = smoothstep(0,1,turbulence_float);

Z vypoˇcten´ehodnoty si pomoc´ıfunkce smoothstep(a, b, x) (kter´aje uk´az´ana na obr´azku 3.12) si zjist´ıme hodnotu inTop.

color Ct1 = mix(c1, c2, inTop);

Funkc´ı mix(color1, color2, inTop) se podle hodnoty inTop nam´ıch´az barev, kter´ejsou uvedeny jako prvn´ıdva parametry, v´ysledn´abarva.

Po zjiˇstˇen´ı, jak´abarva se pro dan´em´ısto pouˇzije, pˇrijde ˇrada na v´ypoˇcet bump mappingu. Tento v´ypoˇcetse vˇsak provede pouze v pˇr´ıpadˇe,ˇzebyl bud’ v RTC programu a nebo v souboru s nastaven´ım setting.h tento v´ypoˇcet povolen. Tato podm´ınka vypad´atakto:

37 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

Obr´azek 3.12: Uk´azka funkce smoothstep(a, b, x).

if (cond_bump_mapping == 1.0f)

Pokud je splnˇena, tak je bump mapping dan´eho ter´enu aktivn´ıa vypoˇcte se.

Nf = bump_mapping( mimic * fr_bump, bumpiness * am_bump, oc_bump, pe_bump, PP_start, size_bump_mapping);

V pˇr´ıpadˇe,ˇzepro dan´yter´ense poˇc´ıtat bump mapping nem´a, pouˇzije se v´ypoˇcet, kde Ng je norm´ala v aktu´aln´ım bodˇea I je vektor od kamery do aktu´alnˇezpracov´avan´eho bodu:

Nf = - faceforward( normalize(Ng) ,I );

Po v´ypoˇctu norm´aly se nastav´ıstandardn´ıopacita (jinak ˇreˇceno pr˚uhlednost) ter´enu.

Oi = Os;

Koneˇcn´ym krokem je v´ypoˇcetv´ysledn´ebarvy, kter´ase pˇred´azp´atky jako v´ystup tohoto modulu.

color Ct_mix = Oi * ( Ct * (Ka*ambient()+ Kd*diffuse(Nf))); return Ct_mix;

Samotn´yprincip m´ıch´an´ıbarev je vidˇet i na obr´azku 3.13.

38 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

Obr´azek 3.13: M´ıch´an´ıjednotliv´ych barev v modulu barva.h.

3.4.4 Modul pro um´ıstˇen´ıter´enu na povrch

Tento modul je vol´an po zpracov´an´ıpˇredchoz´ıho modulu barva.sl. Podle hodnot nastaven´ych v RTC programu nebo setting.h se v tomto modulu urˇcuje, jak´abarva m´ab´yt v dan´em m´ıstˇe(podle podm´ınek v´yˇsky, sklonu a pˇrechodu) pouˇzita.

Vˇsechny potˇrebn´ehodnoty jsou pˇren´aˇseny do tohoto modulu pˇres para- metry:

• color Ct1, color Ct2

– Barva nadˇrazen´eho ter´enu (oznaˇcena jako Ct1 ) a barva aktu´alnˇe zpracov´avan´eho ter´enu (oznaˇcena jako Ct2 )

• point PP

– Pozice aktu´alnˇezpracov´avan´eho bodu

• float min_height_param, float max_height_param

– Minim´aln´ıa maxim´aln´ıv´yˇska, kter´ave kter´eje barva Ct2 povo- lena

• float min_angle_param, float max_angle_param

– Minim´aln´ıa maxim´aln´ı´uhel, ve kter´emje barva Ct2 povolena

• float frequency, float amplitude, float octave, float persistence

39 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

– Frekvence, amplituda, okt´ava a persistence, kter´ese pouˇz´ıvaj´ıpˇri poˇc´ıt´an´ın´ahodn´ehodnoty (pomoc´ıturbulence) pro pˇrechody mezi ter´eny

• float cond_min_height, float cond_max_height

– Podm´ınky zda bude pouˇzit minim´aln´ı nebo maxim´aln´ı v´yˇskov´e hranice pro pˇrechod mezi ter´eny

• float cond_min_angle, float cond_max_angle

– Podm´ınky zda bude pouˇzit minim´aln´ınebo maxim´aln´ı´uhlov´ehra- nice pro pˇrechod mezi ter´eny

• float set_crossover_height, float set_crossover_angle

– Nastaven´ıv´yˇsky a ´uhlu pro pˇrechod mezi ter´eny

• float cond_crossover_noise

– Hodnota podm´ınky, zda se m´apouˇz´ıt pro pˇrechod mezi ter´eny turbulence

• float scaleY

– Sk´alaˇ v´yˇsky ter´enu (hodnota 1.0f odpov´ıd´amaxim´aln´ıv´yˇsceter´enu 255 metr˚u)

• float terrain_min

– Korekˇcn´ı hodnota pro v´yˇsky ter´enu. Jde o rozd´ıl pozice ter´enu ve sc´enˇev˚uˇci poloze kamery.

Struktura modulu samotn´eho je pops´ana v n´asleduj´ıc´ıˇc´asti textu. Nejdˇr´ıve se zjist´ı, zda je aktivov´anv dan´em ter´enu (turbulentn´ı) ˇsum na pˇrechodu.

if (cond_crossover_noise == 1)

Pokud je tato podm´ınka splnˇena (respektive pokud je pˇrechod aktivov´an), tak bude vypoˇctena z turbulentn´ıfunkce hodnota random_number pro zmˇenu nepravidelnou pˇrechodu.

random_number = turbulence(frequency, amplitude, octave, persistence, 0.0f, PP);

40 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

V opaˇcn´empˇr´ıpadˇeje tato hodnota nastavena na 0 a na pˇrechod nebude m´ıt turbulentn´ıfunkce ˇz´adn´yvliv.

float min_height = min_height_param * scaleY * 255.0f; float max_height = max_height_param * scaleY * 255.0f; float crossover_height = set_crossover_height * scaleY * 255.0f;

Pˇrepoˇcethodnot minim´aln´ı v´yˇsky, maxim´aln´ı v´yˇsky a velikosti pˇrechodu pˇredan´ych parametry (kter´ese pohybuj´ıod 0.0f do 1.0f ) na v´yˇskov´ehodnoty ve sc´enˇe.

float crossover_angle = cos(radians(set_crossover_angle));

Pˇrepoˇcet´uhlu pro pˇrechod mezi ter´eny (pro ´uhel 0◦ bude tato hodnota 1.0f a pro ´uhel 90◦ bude 0.0f ).

if (cond_min_height == 1) min_height_var = smoothstep(min_height + terrain_min + random_number , min_height + terrain_min + crossover_height + random_number, ycomp(PP));

Pokud bude hranice minim´aln´ıv´yˇsky aktivn´ı, tak bude poˇc´ıt´ana promˇenn´a min_height_var. Tato promˇenn´anab´yv´ahodnot (0.0f, 1.1f) a urˇcuje, zda je v dan´emm´ıstˇepodm´ınka splnˇena. Splnˇen´ıpodm´ınky jako takov´ese zjiˇst’uje pomoc´ıfunkce smoothstep(), kter´aje zobrazena na obr´azku 3.12.

if (cond_max_height == 1) max_height_var = 1 - smoothstep(max_height + terrain_min - crossover_height + random_number, max_height + terrain_min + random_number, ycomp(PP));

Stejn´ym zp˚usobem akor´at s otoˇcenou funkc´ı smoothstep() se vypoˇc´ıt´apro- mˇenn´ahorn´ıhranice min_height_var.

Po v´ypoˇctu v´yˇskov´ych hranic ter´enu je potˇreba zjistit, zda v dan´emm´ıstˇe odpov´ıd´ai minim´aln´ı a maxim´aln´ı podm´ınka sklonu. Pro tento ´uˇcel jsou pouˇzity n´asleduj´ıc´ıv´ypoˇcty, kter´ejsou podobn´ev´ypoˇct˚um minim´aln´ıa ma- xim´aln´ıv´yˇsky.

float min_angle = cos(radians(min_angle_param)); float max_angle = cos(radians(max_angle_param));

41 Realizaˇcn´ıˇc´ast Moduly a jejich pouˇzit´ı

Obr´azek 3.14: Princip poˇc´ıt´an´ısklonu v bodˇez vektoru norm´aly.

Nejdˇr´ıve je nutno pˇrepoˇc´ıst hodnoty ze vstupn´ıch hodnot minim´aln´ıho a ma- xim´aln´ıho ´uhlu (ve stupn´ıch) na hodnoty cosinu (tedy ˇze´uhel 0◦ odpov´ıd´a hodnotˇe 1.0f a 90◦ odpov´ıd´a 0.0f ).

if (cond_min_angle == 1) min_angle_var = 1 - smoothstep(min_angle, min_angle + crossover_angle, abs(ycomp(Ny)+ random_number));

if (cond_max_angle == 1) max_angle_var = smoothstep(max_angle - crossover_angle, max_angle, abs(ycomp(Ny)+ random_number));

V´ypoˇcetje obdobn´ys t´ım, ˇzesklon v dan´embodˇese urˇcuje pomoc´ıfunkce ycomp(Ny), kter´aje vidˇetna obr´azku 3.14, kde Ny je normalizovan´anor- m´ala v tomto bodˇe. V pˇr´ıpadˇe,ˇze je v tomto bodˇepovrchu ter´enu sklon bl´ıˇz´ıc´ı se k 90◦ (tedy povrch je v tomto m´ıstˇes velk´ym sklonem), tak je hodnota t´eto funkce nulov´aa pro 0◦ (pro vodorovn´ypovrch) nab´yv´ajed- notkov´ehodnoty. Coˇzjsou pˇresnˇehodnoty potˇrebn´epro porovn´an´ıve funkci smoothstep() s krajn´ımi hodnotami sklonu.

Ct_mix = mix(Ct1, Ct2, max_height_var * min_height_var * max_angle_var * min_angle_var);

Pokud tedy budou splnˇeny vˇsechny podm´ınky (respektive max height var, min height var, max angle var a min angle var budou rovny hodnotˇe 1.0f ),

42 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky tak to znamen´a, ˇzev dan´emm´ıstˇem´ab´yt ter´enum´ıstˇen. V tom pˇr´ıpadˇe se jako v´ysledn´abarva ter´enu v poˇc´ıtan´embodˇezvol´ı Ct2 - barva aktu´al- n´ıho ter´enu. Pokud jedna z podm´ınek splnˇena nebude, v´ysledek bude 0.0f a v´ysledek funkce smoothstep() bude barva nadˇrazen´eho ter´enu.

3.4.5 Modul hlavn´ıho surface shaderu

Tento modul je hlavn´ıa jde o surface shader, kter´yje vol´anz RIB souboru a aplikov´an na povrch objektu (v tomto pˇr´ıpadˇena povrch plochy pˇredstavuj´ıc´ı ter´en). Podle parametr˚unastaven´ych pˇr´ımo v tomto surface shaderu a podle parametr˚uv souboru setting.h se urˇcuje obarven´ı kaˇzd´eho bodu tohoto povrchu.

Kaˇzd´yparametr, kter´yje vstupem tohoto surface shaderu, je pˇreddefi- nov´an jiˇzz programu (jehoˇzpopis je v kapitole 3.2).

Uvnitˇr jsou vol´any dva druhy funkc´ı (modul˚u). Jako prvn´ı je vol´ana funkce colour() tolikr´at, kolik bylo uˇzivatelem v programu nastaveno ter´en˚u urˇcen´ych pro generov´an´ı. Tato funkce zpˇetvrac´ı obarven´ı bodu v dan´em m´ıstˇe.Avˇsak pro zjiˇstˇen´ı, kde m´ab´yt ve v´ysledku toto obarven´ıpouˇzito, je potˇreba pouˇz´ıt tyto barvy pro dalˇs´ızpracov´an´ı.

Po tom, co se vypoˇctou barvy jednotliv´ych povrch˚u, dojde k zpracov´an´ı tˇechto barev funkc´ı resolve function(), jej´ıˇzparametry i princip jsou pops´any v kapitole 3.4.4.

V´ystupem tohoto shaderu je barva pro kaˇzd´ybod povrchu.

3.5 Dosaˇzen´ev´ysledky

3.5.1 Napodoben´ıre´aln´ehory Mount Ruapehu

K vytvoˇren´ısubtextury ter´enu tohoto obr´azku (jehoˇz´ukolem je napodobit re´alnou fotku hory Mount Ruapehu) byly pouˇzity n´asleduj´ıc´ıparametry.

43 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

Obr´azek 3.15: Porovn´an´ıvytvoˇren´eho v´ysledku (nahoˇre) s re´alnou fotografi´ı hory Mount Ruapehu (dole) - autor fotografie: M. Spadari - Panoramio.

• Podkladov´ypovrch

– Parametry m´ıch´an´ıbarev bump mapping frekvence 0.09f 0.4f amplituda 0.7f 0.7f okt´ava 5 7 persistence 0.5f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 65 49 41 2. 39 53 36 3. 72 66 30 4. 38 29 26

44 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

• Kamenit´ypovrch

– Podm´ınky v´yskytu subtextury min. v´yˇska 13.38 metru v´yˇska pˇrechodu 25.78 metru min. sklon 1◦ max. sklon 5◦ sklon pˇrechodu 3◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.15f 0.8f 0.8f amplituda 0.7f 0.7f 0.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 128 128 128 2. 192 192 192 3. 64 0 0 4. 128 128 64

• Sn´ıh

– Podm´ınky v´yskytu subtextury min. v´yˇska 17.85 metru v´yˇska pˇrechodu 35.7 metru max. sklon 50◦ sklon pˇrechodu 10◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.2f 0.2f 0.8f amplituda 0.7f 0.7f 0.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

45 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 255 255 255 2. 252 252 252 3. 252 252 252 4. 248 248 248

3.5.2 Napodoben´ıpouˇstn´ıscen´erie

Obr´azek 3.16: Pouˇstn´ıscen´erie vygenerovan´apomoc´ıRTC.

• P´ıseˇcn´eduny

– Parametry m´ıch´an´ıbarev bump mapping frekvence 0.1f 0.1f amplituda 0.5f 0.4f okt´ava 5 9 persistence 0.5f 0.5f

46 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 197 141 37 2. 186 152 50 3. 215 185 64 4. 174 106 66

3.5.3 Napodoben´ıhorsk´escen´erie

Obr´azek 3.17: Horsk´ascen´erie vytvoˇren´apomoc´ıprogramu RTC.

• Podkladov´ypovrch

– Parametry m´ıch´an´ıbarev bump mapping frekvence 0.2f 0.3f amplituda 1.0f 0.4f okt´ava 4 7 persistence 0.5f 0.5f

47 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 78 79 49 2. 84 58 55 3. 55 57 51 4. 155 165 90 • Kamenit´ypovrch – Podm´ınky v´yskytu subtextury min. v´yˇska 5.1 metru v´yˇska pˇrechodu 7.65 metru min. sklon 50◦ max. sklon 70◦ sklon pˇrechodu 15◦ – Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.2f 0.7f 0.8f amplituda 0.7f 0.7f 1.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f – Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 184 180 133 2. 128 128 128 3. 192 192 192 4. 83 84 56 • Travnat´ypovrch – Podm´ınky v´yskytu subtextury min. sklon 2◦ max. sklon 15◦ sklon pˇrechodu 7◦ – Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.2f 0.8f 0.8f amplituda 0.3 f 0.7f 0.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

48 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 122 123 83 2. 60 60 43 3. 122 141 90 4. 154 170 136 • Sn´ıh

– Podm´ınky v´yskytu subtextury min. v´yˇska 15.3 metru v´yˇska pˇrechodu 5.1 metru max. sklon 60◦ sklon pˇrechodu 10◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.8f 0.1f 0.8f amplituda 0.7f 0.7f 0.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 255 255 255 2. 247 247 247 3. 255 255 255 4. 248 248 248

3.5.4 Napodoben´ıantarktick´escen´erie

• Podkladov´ypovrch - zledovatˇel´ysn´ıh

– Parametry m´ıch´an´ıbarev bump mapping frekvence 0.3f 0.1f amplituda 0.9f 0.7f okt´ava 4 8 persistence 0.5f 0.5f

49 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

Obr´azek 3.18: Antarktick´ascen´erie vytvoˇren´apomoc´ıprogramu RTC.

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 235 235 235 2. 208 214 221 3. 164 196 200 4. 232 238 238

• Kamenit´ypovrch

– Podm´ınky v´yskytu subtextury min. v´yˇska 1.785 metru max. v´yˇska 14.28 metru min. sklon 45◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.2f 0.7f 0.8f amplituda 1.0f 0.7f 1.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

50 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 184 180 133 2. 128 128 128 3. 192 192 192 4. 83 84 56

3.5.5 Napodoben´ıhorsk´escen´erie

Obr´azek 3.19: Horsk´ascen´erie vytvoˇren´apomoc´ıprogramu RTC.

• Podkladov´ypovrch

– Parametry m´ıch´an´ıbarev bump mapping frekvence 0.1f 0.1f amplituda 0.9f 0.7f okt´ava 6 8 persistence 0.5f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 66 50 34 2. 50 48 35 3. 60 55 47 4. 69 77 64

51 Realizaˇcn´ıˇc´ast Dosaˇzen´ev´ysledky

• Kamenit´ypovrch

– Podm´ınky v´yskytu subtextury min. sklon 20◦ max. sklon 90◦ sklon pˇrechodu 7◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.75f 0.8f 0.8f amplituda 1.0f 0.7f 1.7f okt´ava 4 4 4 persistence 0.5f 0.5f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 159 165 156 2. 80 69 48 3. 87 95 84 4. 73 78 67 • Mech a bl´ato

– Podm´ınky v´yskytu subtextury min. sklon 20◦ sklon pˇrechodu 7◦

– Parametry m´ıch´an´ıbarev bump mapping pˇrechod frekvence 0.2f 0.3f 0.8f amplituda 1.0f 0.4f 1.7f okt´ava 4 4 4 persistence 0.5f 0.45f 0.5f

– Barvy subtextury Cerven´aˇ Zelen´a Modr´a 1. 78 79 49 2. 84 58 44 3. 55 57 51 4. 155 165 90

52 4 Z´avˇer

Ukolem´ t´eto bakal´aˇrsk´epr´ace bylo pˇribl´ıˇzen´ı se realistick´emu vyobrazen´ı ter´enu pomoc´ıaplikace procedur´aln´ıch textur na objekt reprezentuj´ıc´ıter´en. K tomuto ´ukolu jsem vyuˇzil znalosti specifikace RenderMan a programovac´ıho jazyku RenderMan Shading Language.

Pˇri pr´aci jsem se nauˇcil hloubˇejipouˇz´ıvat jazyku RenderMan Shading Language pro tvorbu netrivi´aln´ıch procedur´aln´ıch textur, kter´ejsem aplikoval na objekty reprezentuj´ıc´ıgeometrii povrchu ter´enu. K tvorbˇeprocedur´aln´ıch textur ter´enu jsem si vytvoˇril surface shader, kter´yje sloˇzen z nˇekolika blok˚u (modul˚u). Kaˇzd´yz tˇechto modul˚um´aza ´ukol jin´yv´ypoˇcetn´ı´ukon a pro vy- tvoˇren´ı obarvovac´ıho (surface) shaderu ter´enu jsou tyto bloky mezi sebou kombinovateln´e.

Pro zpˇrehlednˇen´ıtvorby a skl´ad´an´ıtˇechto modul˚ujsem napsal interak- tivn´ıGUI program, pomoc´ınˇehoˇzlze velmi jednoduˇsevygenerovat shader a RIB soubor s definic´ıv´ysledn´esc´eny. Tento program nab´ız´ıvelkou ˇsk´alu nastaviteln´ych parametr˚upro ovlivnˇen´ıprocedur´aln´ıtextury ter´enu. V pro- gramu je k dispozici i n´ahled toho, kde se v ter´enu zmˇeny projev´ı. Pro vytvoˇre- n´ıprogramu jsem prostudoval r˚uzn´eprogramy zab´yvaj´ıc´ıse fotorealistick´ym renderingem ter´enu (viz pˇr´ıloha A) a vybral si program Terragen Classic jako inspiraci pro tvorbu m´eho programu RTC. Oproti programu RTC program Terragen Classic generuje trochu realistiˇctˇejˇs´ıv´ysledky, avˇsak i pomoc´ıpro- gramu RTC se pˇri spr´avn´em nastaven´ıdaj´ıvytvoˇrit velmi realistick´eobr´azky.

Vytvoˇril jsem nˇekolik netrivi´aln´ıch realistick´ych obr´azk˚us ter´eny a tak´e porovnal v´ysledek RTC programu i s v´ysledky ostatn´ıch prozkouman´ych pro- gram˚u(viz pˇr´ıloha B).

53 Literatura

[1] STEPHENSON, Ian. Essential RenderMan. 2nd ed. London : Springer, 2007. ISBN 978-1-84628-344-4.

[2] STEPHENSON, Ian. Essential RenderMan fast. London : Springer, 2003. ISBN 1-85233-608-0.

[3] APODACA, Anthony A. a GRITZ, Larry. Advanced RenderMan : cre- ating CGI for motion pictures. San Francisco : Kaufmann, 2000. ISBN 1-55860-618-1.

[4] ZˇARA,´ Jiˇr´ıet al. Modern´ıpoˇc´ıtaˇcov´agrafika. 2., pˇreprac. a rozˇs.vyd. Brno : Computer Press, 2004. ISBN 80-251-0454-0.

[5] EBERT, David S. et al. Texturing & modeling : a procedural approach. 3rd ed. Amsterdam : Morgan Kaufmann Publishers, 2003. ISBN 1-55860- 848-6.

[6] SHIRLEY, Peter. Realistic ray tracing. Natick : A K Peters, 2000. ISBN 1-56881-110-1.

[7] JEZEK,ˇ Frantiˇsek. Geometrick´e a poˇc´ıtaˇcov´e modelov´an´ı : pomocn´y uˇcebn´ıtext. 8. vyd´an´ı. Plzeˇn: KMA ZCU,ˇ 2006.

[8] WIRTH, Niklaus. Algoritmy a ˇstrukt´ury´udajov [z angl.orig. pˇrel. Pavol Fischer]. 1. vyd. Bratislava : Alfa, 1988.

[9] RAGHAVACHARY, Saty. Rendering for beginners : image synthesis us- ing RenderMan. Oxford : Focal Press, 2005. ISBN 0-240-51935-3.

[10] TUREK, Milan. Farao - perlin noise [online]. 2002, posledn´ı revize 14.8.2004 [citov´ano 13.3.2011]. Dostupn´ez .

54 LITERATURA LITERATURA

[11] RenderMan - struˇcn´ypopis [online]. 1998, posledn´ı revize 20.4.1998 [citov´ano 13.3.2011]. Dostupn´ez .

[12] SINDELˇ A´R,ˇ Vladislav. GRAFIKA - Digit´aln´ı model ter´enu [online]. 1999, posledn´ırevize 10.8.1999 [citov´ano 13.3.2011]. Dostupn´ez .

[13] Bump mapping - Wikipedia [online]. 2006, posledn´ı revize 10.2.2010 [citov´ano 13.3.2011]. Dostupn´ez .

[14] RenderMan Interface V3.1 Section 5 [online]. 1997, posledn´ı revize 24.3.1997 [citov´ano 3.4.2011]. Dostupn´ez .

55 Seznam zkratek

DMT Digit´aln´ımodel ter´enu GUI Graphical user interface NASA National Aeronautics and Space Administration RIB RenderMan interface bytestream RSL RenderMan shading language RTC RenderMan Terrain Creator SL Shading language SRTM Shuttle Radar Topography Mission

56 Pˇr´ıloha A

57 Obr´azek 1: Uk´azka prostˇred´ıprogramu Bryce 7.

Obr´azek 2: Uk´azka renderingu v programu Bryce 7.

58 Obr´azek 3: Uk´azka prostˇred´ıprogramu Bryce 7 - nastaven´ımateri´alu povrchu ter´enu.

Obr´azek 4: Uk´azka v´ysledku generovan´eho programem Bryce 7 (autor: David Brinnen).

59 Obr´azek 5: Uk´azka prostˇred´ıprogramu E-ON Vue 9.

Obr´azek 6: Nastaven´ımateri´alu ter´enu v programu E-ON Vue 9.

60 Obr´azek 7: Uk´azka v´ysledku generovan´eho programem E-ON Vue 9.

Obr´azek 8: Uk´azka v´ysledku generovan´eho programem E-ON Vue 9 (au- tor: Oliver Regueiro).

61 Obr´azek 9: Uk´azka v´ystupu programu E-ON Vue 9.

Obr´azek 10: Uk´azka prostˇred´ıprogramu World Machine.

62 Obr´azek 11: Uk´azka prostˇred´ıposledn´ıverze programu VistaPro 4.2.

Obr´azek 12: Uk´azka v´ysledku v programu VistaPro 4.2.

63 Obr´azek 13: Uk´azka programu Terragen 2.

Obr´azek 14: Uk´azka Node Network“ programu Terragen 2. ”

64 Obr´azek 15: Uk´azka v´ysledku z programu Terragen 2.

Obr´azek 16: Uk´azka v´ysledku v programu World Builder.

65 Pˇr´ıloha B

66 Obr´azek 17: Uk´azka v´ysledku programu RTC.

Obr´azek 18: Uk´azka v´ysledku programu Terragen Classic.

67 Obr´azek 19: Uk´azka v´ysledku programu Terragen 2.

Obr´azek 20: Uk´azka v´ysledku programu Bryce.

68 Obr´azek 21: Uk´azka v´ysledku programu Vue.

Obr´azek 22: Uk´azka v´ysledku programu WorldBuilder.

69