• No results found

4.4 Implementace mechanism˚ u simulace

5.1.1 Poˇcet objekt˚ u ve sc´enˇe

Pˇri kaˇzd´em kroku simulace doch´az´ı ke vzniku nov´ych segment˚u vˇetv´ı a pˇr´ıpadnˇe i z´aniku nˇekter´ych star´ych segment˚u. Pˇresto je logick´e a z bˇehu programu jasnˇe patrn´e, ˇze poˇcet segment˚u ve sc´enˇe roste.

Poˇcet vˇsech objekt˚u ve sc´enˇe je moˇzn´e zjistit pˇr´ımo v oknˇe Blenderu. Tato hodnota se ale v pr˚ubˇehu vykreslov´an´ı velmi rychle mˇen´ı tak, jak jejich poˇcet pˇrib´yv´a pˇri vykreslov´an´ı a n´aslednˇe se rychle nuluje pˇri vymaz´an´ı sc´eny.

Snazˇs´ı pˇr´ıstup k poˇctu objekt˚u ve sc´enˇe je prostˇrednictv´ım promˇenn´e, do kter´e se uloˇz´ı pole vˇsech objekt˚u ve sc´enˇe. Na konci kaˇzd´eho vykreslov´an´ı je moˇzn´e vypsat do konzole velikost tohoto pole, ˇc´ımˇz je moˇzn´e snadno sledovat poˇcet objekt˚u ve sc´enˇe.

Zde je ale d˚uleˇzit´e nejen odeˇc´ıst vˇzdy objekty nesouvisej´ıc´ı se stromem (svˇetla, kamera), ale m´ıt na pamˇeti i skuteˇcnost, ˇze skript segmenty nemaˇze, ale pouze je vyˇrazuje ze sc´eny.

Proto je potˇreba od takto z´ıskan´e hodnoty odeˇc´ıst pˇredchoz´ı hodnotu.

Pro prov´adˇen´ı tˇechto v´ypoˇct˚u jsem deaktivoval funkci pro olistˇen´ı stromu, protoˇze jejich poˇcet je mnohem variabilnˇejˇs´ı s ohledem na rozmˇery segment˚u.

Na obr´azku 22 je zn´azornˇen v´yvoj poˇctu segment˚u, tvoˇr´ıc´ıch model stromu. Spodn´ı ˇc´ara urˇcuje nejmenˇs´ı namˇeˇren´y poˇcet objekt˚u, horn´ı pak nejvyˇsˇs´ı poˇcet objekt˚u ve sc´enˇe.

Prostˇredn´ı ˇc´ara reprezentuje pr˚umˇernou hodnotu z deseti test˚u.

Protoˇze kaˇzd´y segment se vykresluje jako velk´e mnoˇzstv´ı bod˚u a ploch, klade rostouc´ı poˇcet segment˚u zv´yˇsen´e ˇcasov´e n´aroky na f´azi modelov´an´ı a vizualizace.

Napˇr´ıklad pˇri pouˇzit´ı relativnˇe ´usporn´ych ˇsestibok´ych jehlan˚u je pˇri dosaˇzen´ı 12 000 segment˚u (coˇz je pr˚umˇer pro 20 krok˚u simulace) potˇreba vykreslit 144 tis´ıc vertex˚u a 72 tis´ıc ploˇsek jen pro kmen bez list´ı.

5.1.2 Casov´ˇ a n´aroˇcnost simulace

Zˇrejmˇe nejd˚uleˇzitˇejˇs´ı charakteristikou skriptu je jeho ˇcasov´a n´aroˇcnost.

Protoˇze je cel´y bˇeh programu rozdˇelen do tˇr´ı z´akladn´ıch etap, sleduje graf ˇcasov´e n´aroˇcnosti (obr. 23) dobu prov´adˇen´ı jednotliv´ych etap: v´ypoˇcet r˚ustu stromu, modelov´an´ı cel´e rostliny vˇcetnˇe list´ı a n´aslednou vizualizaci.

Vzhledem k tomu, ˇze strom m˚uˇze v r˚uzn´ych simulac´ıch r˚ust r˚uzn´ym zp˚usobem, opˇet jsem provedl nˇekolik opakov´an´ı test˚u a do grafu jsem zn´azornil pr˚umˇern´e hodnoty ˇcas˚u jednotliv´ych etap.

Test byl prov´adˇen na poˇc´ıtaˇci Dell Inspiron 1720 s dvouj´adrov´ym procesorem 2,1 GHz, 2 GB RAM a 256 MB nesd´ılen´e pamˇeti grafick´e karty. Operaˇcn´ı syst´em Ubuntu 10.04, Blender ve verzi 2.49b.

Obr´azek 22: Graf v´yvoje poˇctu segment˚u v z´avislosti na poˇctu krok˚u

Obr´azek 23: Graf ˇcasov´e n´aroˇcnosti v z´avislosti na poˇctu krok˚u simulace

6 Z´ avˇ er

C´ılem t´eto diplomov´e pr´ace bylo vytvoˇren´ı skriptu v jazyce Python simuluj´ıc´ı r˚ust stromu v grafick´em prostˇred´ı programu pro poˇc´ıtaˇcovou 3D grafiku Blender.

Po prostudov´an´ı problematiky fungov´an´ı simulac´ı r˚ustu rostlin byla vytvoˇrena z´akladn´ı pˇredstava o fungov´an´ı mechanismu vlastn´ı simulace.

Vzhledem k omezen´ym moˇznostem tvorby animac´ı v prostˇred´ı Blender byla pozmˇenˇena vize tvorby animace r˚ustu rostliny, jej´ıˇz p˚uvodn´ı pˇredstava se uk´azala b´yt pro naˇse potˇreby nerealizovateln´a.

N´aslednˇe jsem vytvoˇril jednoduch´y skript, obsluhuj´ıc´ı rostouc´ı stromovou strukturu pomoc´ı n´astroj˚u objektovˇe orientovan´eho programov´an´ı.

Takov´yto jednoduch´y skript byl n´aslednˇe rozˇs´ıˇren o schopnost modelov´an´ı pˇripraven´e stromov´e struktury do trojrozmˇern´eho modelu v oknˇe Blenderu.

Funkˇcn´ı gener´ator rostliny, pracuj´ıc´ı v t´eto chv´ıli ˇcistˇe s n´ahodn´ymi hodnotami, se po konzultac´ıch s vedouc´ım diplomov´e pr´ace rozˇsiˇroval o d˚uleˇzit´e funkce, realizuj´ıc´ı simulaci prostˇrednictv´ım reakc´ı na vnˇejˇs´ı i vnitˇrn´ı aspekty.

Skript je schopen reagovat na nedostatek prostoru pˇri koncentraci vˇetˇs´ıho mnoˇzstv´ı vˇetv´ı na omezen´em prostoru a omezit r˚ust takov´ychto vˇetv´ı. Stejnˇe tak poˇc´ıt´a pˇr´ısun svˇetla a dok´aˇze utlumit ˇci ´uplnˇe zastavit r˚ust tˇech vˇetv´ı, kter´e maj´ı mal´y pˇr´ıstup ke svˇetlu.

Na tvar koruny m´a velk´y vliv jak nastaven´ı poˇzadovan´eho tvaru (zda m´a b´yt koruna vysok´a nebo sp´ıˇse ˇsirok´a), tak i jeho reakce na svˇetlo, kter´e ve voliteln´e m´ıˇre ovlivˇnuje zp˚usob vˇetven´ı a smˇer r˚ustu vˇetv´ı.

Takto pˇripraven´y simul´ator byl kv˚uli lepˇs´ımu vzhledu hotov´e rostliny rozˇs´ıˇren o listy na vˇetv´ıch a doplnˇen materi´alem, kter´y d´av´a jednotliv´ym ˇc´astem modelu realistiˇctˇejˇs´ı vzhled.

D´ale bylo provedeno nˇekolik drobn´ych zlepˇsen´ı s c´ılem dos´ahnout realistiˇctˇejˇs´ıch proporc´ı mezi vˇetvemi.

Nakonec byl cel´y skript opatˇren funkcemi pro vizualizaci hotov´eho modelu v poˇzadovan´ych kroc´ıch. To umoˇzˇnuje vytvoˇren´ı fotorealistick´eho obr´azku a jeho uloˇzen´ı do uˇzivatelsk´eho adres´aˇre, odkud mohou b´yt jednotliv´e sn´ımky d´ale zpracov´av´any, vˇcetnˇe tvorby videa.

Takt´eˇz je moˇzn´e hotov´y model v r´amci moˇznost´ı Blenderu exportovat do soubor˚u jin´ych 3D grafick´ych program˚u a n´aslednˇe je vyuˇz´ıt pro obohacen´ı sc´eny.

Literatura

[1] ˇZ ´ARA, Jiˇr´ı - BENEˇS, Bedˇrich - SOCHOR, Jiˇr´ı - FEKEL, Petr: Modern´ı poˇc´ıtaˇcov´a grafika

ISBN 80-251-0454-0, Vydavatelstv´ı Computer Press, Brno 2004.

[2] POKORN ´Y, Pavel: Nauˇcte se 3D grafiku

ISBN 80-7300-244-2, Vydavatelstv´ı BEN - technick´a literatura

[3] HARMS, Daryl - MCDONALD, Kenneth: Zaˇc´ın´ame programovat v jazyce Python ISBN 978-80-251-2161-0, Vydavatelstv´ı Computer Press, Brno 2003

[4] Python Programming Language - Official Website [online]. Dostupn´e z:

http://www.pythong.org

[5] blender.org - Home [online]. Dostupn´e z:

httl://www.blender.org

[6] Blender API Documentation. Dostupn´e z:

http://www.blender.org/documentation/249PythonDoc/

[7] L-System [online]. Publikov´ano 17. 5. 2011. Dostupn´e z:

http://www.lsystem.liquidweb.co.nz/

[8] LUFT, Thomas. An Ivy Generator [online]. Publikov´ano 6. 10. 2008. Dostupn´e z:

http://www.graphics.uni-konstanz.de/~luft/ivy generator/

[9] FABI ´AN, Petr: Gener´atory vegetace Liberec 2009

7 Pˇ r´ılohy

Pˇ r´ıloha A: Sch´ ema bˇ ehu programu

Pˇ r´ıloha B: Sch´ ema ˇ reˇ sen´ı koliz´ı mezi dvojicemi segment˚ u

Pˇ r´ıloha C: Poˇ cet segment˚ u kmenu ve sc´ enˇ e

krok poˇcet objekt˚u

minim´aln´ı pr˚umˇern´y maxim´aln´ı

1 1 1,0 1

Related documents