Mendelova univerzita v Brně Provozně ekonomická fakulta
Automatické generování animací růstu rostlin pro výuku Bakalářská práce
Vedoucí práce: Ing. Jaromír Landa
Lenka Ježková
Brno 2013
zde vložit kopii zadání BP
Ráda bych poděkovala Ing. Jaromíru Landovi za jeho připomínky a vedení práce. Doc. Ing. Radimu Cerkalovi, Ph.D. za spolupráci a Janu Sedlačíkovi za cenné rady.
Prohlašuji, že jsem tuto práci s názvem Automatické generování animací růstu ” rostlin pro výuku“ vypracovala samostatně a všechny použité zdroje jsou uvedeny na konci práce.
V Brně dne 22. května 2013
................................................................
Abstract Ježková, L. The automatic generation of plant growth animation aimed at education . Bachelor thesis. Brno 2013 This bachelor thesis deals with the automatic generation of three-dimensional plant animation in program 3Ds Max using the scripting method by means of MaxScript. It describes the methodology of script creation generating the plant animation mentioned above. Key words 3Ds Max, MaxScript, animation, plants.
Abstrakt Ježková, L. Automatické generování animací růstu rostlin pro výuku. Bakalářská práce. Brno 2013 Tato bakalářská práce se zabývá automatickým generováním trojrozměrných animací rostliny v proramu 3Ds Max s využitím metody skriptování pomocí MaxScriptu. Popisuje metodiku vytváření skriptů generujících zmíněné animace rostlin. Klíčová slova 3Ds Max, MaxScript, animace, rostliny.
6
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Metodika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Přehled literatury a pramenů 2.1 Vymezení základních pojmů . . 2.1.1. 3D grafika . . . . . . . . 2.1.2. 3D modelování . . . . . . 2.1.3. Render . . . . . . . . . . 2.1.4. Stínování . . . . . . . . . 2.1.5. Textury . . . . . . . . . . 2.1.6. Kamera, pohledový objem 2.1.7. Animace . . . . . . . . . 2.2 Použité prostředky . . . . . . . 2.2.1. AutoDesk 3Ds Max . . . 2.2.2. MaxScript . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
8 8 8 9 10 10 10 10 11 14 16 17 19 21 21 21
3 Výsledky 24 3.1 Výběr rostlin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 Implementace skriptů . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1 Část skriptu modelující uživatelské rozhraní . . . . . . . . . . . 28 4 Diskuze 36 4.1 Přínos práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5 Závěr
38
6 Literatura
39
7 Přílohy
41
SEZNAM OBRÁZKŮ
7
Seznam obrázků Obrázek 1: Stínování (FIT VUT, 2010)
15
Obrázek 2: Interpolace křivek (KOLDA, 2007)
16
Obrázek 3: Zorná pyramida (Kerlow, 2011)
18
Obrázek 4: Rozhraní programu AutoDesk 3Ds Max (vlastní tvorba
22
Obrázek 5: Samčí květenství - lata (Richter, 2005)
25
Obrázek 6: Samičí květenství - palice, klasy (Richter, 2005)
25
Obrázek 7: Deficience dusíku (Richter, 2005)
26
Obrázek 8: Deficience fosforu (Richter, 2005)
26
Obrázek 9: Deficience draslíku (Richter, 2005)
27
Obrázek 10: Textové rozhraní Informace
28
Obrázek 11: Rozhraní pro nastavení kukuřice
31
1
ÚVOD A CÍL PRÁCE
1 1.1
8
Úvod a cíl práce Úvod
Počítačová grafika je jeden z nejpopulárnějších a nejpoužívanějších oborů práce na počítači. V 60. letech vznik počítačové grafiky byl spojen se zavedením číslicově řízených NC strojů. Nicméně postupně se využití počítačové grafiky rozšířilo do spousty průmyslových odvětích, hlavně řízení výrobních procesů, a také výtvarné umění a film (titulky, animace). Dále se využívá pro řízení letecké dopravy, lékařství, družicové snímky, kriminalistiku atd (Koutná, 2006). Téměř každý nyní využívá počítačovou grafiku, a to jak dvojrozměrnou, tak i trojrozměrnou. Dvojrozměrná grafika se používá k vytváření letáků, značek, plakátů, technických výkresů, úpravy fotek, katalogů apod. 3D grafiku lze využít díky její vlastnosti, která pomocí modelace umožňuje téměř realisticky ztvárnit různé objekty pro ztvárnění reklam, animovaných filmů, her, kde se navíc využívá pohyblivá grafika pro rozhýbání objektů a díky tomu se stává čím dál více žádoucí a vyhledávaná. Trojrozměrnou grafiku pro „vdechnutí života“ rostlině využiji i já ve své práci pro vymodelování určené rostliny. U této rostliny je za úkol vytvořit skript pomocí skriptovacího jazyka, který zautomatizuje generování různých animací rostliny při různých odchylkách od zdravého růstu.
1.2
Cíl práce
Cílem práce je automatické generování animací růstu rostlin, resp. kukuřice na základě různých deficitech živin. Tahle aplikace bude sloužit pro výuku předmětu Tvorba výnosu polních plodin na Agronomické fakultě Mendelovy univerzity. Jako základní nástroj pro animaci vývoje obiloviny bude použit program pro modelování a animace 3Ds Max 2012. Výsledkem práce je skript, kterým se spustí rozhraní, kde si uživatel nastaví požadované podmínky a na jejich základě se spustí animace růstu a vývoje 3D modelu kukuřice. Praktickou část této práce lze zahrnout mezi výukové materiály pro předmět Tvorba výnosu polních plodin a teoretickou část lze využít jako návod pro další práci se skriptováním v 3Ds Maxu.
1.3
1.3
Metodika
9
Metodika
V téhle práci bude potřeba znát několik základních pojmů z oblasti grafiky pro lepší orientaci při vytváření modelu animace rostliny. Poté je nutno získat licenci programu 3Ds Max a nainstalovat jej. Důležité pro bezproblémový chod tohoto softwaru je počítač odpovídající požadavkům tohoto programu. Následně bude vytvořen základní model rostliny po vzájemné domluvě s Ústavem pěstování, šlechtění rostlin a rostlinolékařství. Po vytvoření modelu je nutno se zaměřit na osvojení skriptovacího jazyka, se kterým budeme pracovat. Program 3Ds Max má svůj vlastní skriptovací jazyk a to MaxScript. Pomocí tohoto jazyka implementujeme skript, kterým bude vytvořena aplikace pro zautomatizování animací růstu při různých deficitech živin. �
2
PŘEHLED LITERATURY A PRAMENŮ
2 2.1
10
Přehled literatury a pramenů Vymezení základních pojmů
2.1.1. 3D grafika Počítačová 3D (trojrozměrná) grafika je název pro sektor počítačové grafiky, a tato 3D grafika pracuje s trojrozměrnými objekty. Je příbuzná s vektorovou grafikou, poněvadž též pracuje se souřadnicemi bodů úseček, křivek a ploch, ale data jsou uložena v souřadnicovém trojrozměrném systému. A právě z těchto dat reprezentujících trojrozměrná tělesa je následně vyrenderován dvojrozměrný obrázek. 3D grafika je hojně využívána při vytváření animací (např. pro tvorbu PC her, filmů) a zároveň je uplatňována i ve vědě a průmyslu (např. simulace). Mezi základní pojmy pro vytváření 3D grafiky patří modelování, texturování, animace a renderování. Modelování je proces, ve kterém je vytvořen a vytvarován 3D model, který může být reprezentován různými způsoby. Modely lze vytvořit na počítači prostřednictvím modelovacího nástroje, na základě počítačové simulace nebo dokonce i dle dat získaných měřícím přístrojem. Pod pojmem texturování se skrývá vytvoření a mapování textur. Textura je takový obrázek, kterým je těleso potaženo. Animace je posloupnost 2D obrázků, která tvoří dojem pohyblivých předmětů. Keyframing je nejjednodušší metoda animace, principem připomínající klasickou 2D počítačovou animaci. Některé programy dokonce i umožňují vytvořit animaci na základě simulace fyzikálních jevů (např. pohyb vodní hladiny, gravitace). Rendering znamená vykreslování dvojrozměrného obrazu podle modelu scény a dalších informací jako jsou například textury, stínování, osvětlení nebo dokonce poloha pozorovatele (Bízková, 1012). Na trhu najdeme velké množství verzí nejrůznějších programů umožňujících modelování 3D objektů. Pro profesionální uživatele cena těchto nástrojů šplhá někdy i do astronomických výšin. Mezi ty nejznámější placené programy patří například známá Cinema 4D, 3Ds Max, Maya, Rhinoceros nebo Softimage XSI. Jsou k nalezení ale také programy, které jsou bezplatné a umožní kvalitní výsledky. Do této kategorie můžeme zařadit programy jako jsou Blender, GoogleSketchUp, Wings 3D, Daz studio, Bryce nebo Sculptris. 2.1.2. 3D modelování Modelování je jedna z technologií pro zhotovení animace. Jde o vytvoření modelů, prostřednictvím speciálního softwaru, různých objektů v podobě trojrozměrného drátového modelu před kamerou. Tento drátový model lze vytvořit jak spojením
2.1
Vymezení základních pojmů
11
tvořících křivek a jejich úpravou, tak i pomocí objemových křivek, jako jsou kvádr, koule, kužel, atd. Následně lze tento model upravit pomocí sady bodů, které jsou spojeny zakřivenými plochami nebo čarami (Stargen group s.r.o., 2010-2011). Trojrozměrné modely jsou vytvořeny pomocí čtyř metod: Polygonální modelování. Toto modelování je možno také nazvat „mřížkami“ a je nejčastější formou 3D modelů pro použití v animacích ve filmu a v herním průmyslu. Polygonální modely jsou, stejně jako základní geometrická krychle, složené z ploch, hran a vrcholů(Slick, 2013). Primitivní modelování. Nejjednodušší způsob modelování 3D objektů. Jde o použití geometrických primitiv, jako jsou válce, kužely, kvádry a koule, díky nimž jsou vytvořeny komplexní modely. Primitivní modelování se používá hlavně v rozvojových technických aplikacích 3D modelů. NURBS modelování. (Non-uniform racionální B-spline - metoda geometrického popisu volných ploch pro modelování složitých tvarů pomocí spline křivek) Hladký povrch modelu je vytvořen pomocí Bézierových křivek. Tato softwarová aplikace interpoluje prostor mezi křivkami a vytváří hladkou síť mezi nimi. Díky nejvyšší úrovni matematické přesnosti je tato metoda využívána nejčastěji pro strojírenství a automobilový design (Slick, 2013). 2.1.3. Render Rendering je proces, ve kterém jsou převedena data 3D do obrázků 2D. V průběhu tohoto procesu počítač stanoví barvu všech pixelů uplatněných při výpočtu vytvořených modelů, textur, materiálů, osvětlení a animací. Tím se rozumí to, že se ze stávajícího stavu scény vytvoří obrázek (Babb, 2004). Velikost obrázku Při renderingu se vytváří soubor s 2D obrázkem. Velikost tohoto vytvořeného souboru je popsána vztahem šířky a výšky, počtem pixelů a bodů v ose X a ose Y. Čím větší je formát tohoto souboru, tím delší bude doba renderování (Babb, 2004). Režimy renderingu Některé 3D programy poskytují tyto režimy renderingu: • Náhledový režim - zobrazuje model pouze v podobě drátěné sítě.
2.1
Vymezení základních pojmů
12
• Rendering kresby - vytváří spíše 3D obrázky v kreslené podobě. Tvary objektů na těchto obrázcích jsou plošně zabarvené a z hran objektů jsou vytvořené obrysy. • Raytracing – Pracuje na takovém principu, že utvoří pro každý pixel ve scéně paprsek a sleduje jeho cestu celou cestu až ke zdroji světla. Tento paprsek je pomyslná přímka, která prochází trojrozměrným prostorem, jež seskupuje renderovací údaje. Tyto hodnoty světelného paprsku se propočítávají při odrazech daného paprsku od všech možných povrchů ve scéně s různými charakteristikami. Techniky renderování raytracingem vycházejí z toho, jak světelné paprsky putují od zdrojů světla k našim očím a kdy se po cestě odrážejí od povrchů, které ovlivňují charakteristiky těchto paprsků. Raytracingové programy trasují paprsky směrem od kamery ke zdroji světla, kvůli tomu, že některé světelné paprsky vyzařované zdrojem světla ve scéně nikdy nedosáhnou kamery. Tím pádem se také minimalizuje počet přebytečných výpočtů. Počet takto trasovaných paprsků ve scéně také souvisí s prostorovým rozlišením scény, které je udáno počtem pixelů v obrázku. Každý paprsek se trasuje přes všechny pixely v obrázku od dopadu až ke zdroji světla. Proto když naroste počet trasovaných paprsků, poroste také počet pixelů obrázku a doba potřebná k dokončení renderu. Zároveň na počet paprsků trasovaných scénou s délkou výpočtu raytracingového renderování má vliv počet zdrojů světla ve scéně (Kerlow, 2011). Metoda renderingu pomocí Z-bufferu Čas kdy ve scéně dochází k řazení všech objektů dle jejich hloubky, neboli Z-pozice, se nazývá renderování technikou Z-buffer. Ve vyrovnávací paměti (bufferu) se ukládají právě tyto údaje a může je tak použít proces renderování pro výpočet k odstranění skrytých povrchů. Likvidaci skrytých povrchů po jednotlivých objektech a pixelech provádí metoda renderování pomocí z-bufferu. Tímto je stanoveno, zda jsou objekty viditelné postupně v jednotlivých pixelech z pohledu kamery a jestli ano, prověří jeho údaj o hloubce. V případě že je tento objekt v aktuální fázi procesu řazení nejblíže ke kameře, vystínují se jednotlivé pixely daného objektu a celý test viditelnosti se opakuje pro všechny pixely objektu na obrazovce. Takhle se test viditelnosti provede pro všechny objekty. Rendering technikou z-bufferu skončí v momentě, kdy je ve všech pixelech prověřena viditelnost veškerých objektů na scéně. Údaje o hloubce scény používají různé stínovací výpočty, které však nemusí být závislé na úplné technice renderování. Tyto údaje lze například uchovávat v oddělené renderovací
2.1
Vymezení základních pojmů
13
vrstvě označené jako mapa hloubky Z (Z-depth map) a je možno je využít k vytváření efektů detailů mizejících v dálce (Kerlow, 2011). Hardwarové renderování V minulosti a většinou ještě i v současnosti se složité renderovací operace počítají softwarem v dávkovém režimu. První grafické karty byly zpočátku schopné omezeného avšak okamžitého hardwarového náhledu. Nicméně, dnešní hardwarové renderování již není omezené na jednoduché stínovací techniky. Současné vyspělé grafické karty dokážou vytvářet čím dál více komplikovanější obrazy v reálném čase a navíc v takové míře, že někteří výrobci nabízejí hardwarové finální vykreslovače (Kerlow, 2011). Soubory formátů pro renderování „Všechny renderovací programy mohou ukládat a načítat renderované obrázky ve svém nativním formátu souborů (Kerlow, 2011).“ Navíc některé tyto programy také nabízejí možnost ukládat vykreslené obrázky ve vybraných standardních souborových formátech. Z trojrozměrného prostoru souboru modelů se vyrenderuje obrázkový soubor obsahující pouze dvojrozměrné údaje. Většina renderovacích programů nabízí jak implicitní formát souborů, tak řadu oblíbených formátů včetně JPEG, TIFF, TGA, EPS, HDR, OpenEXR a Cineon. Každý z uvedených formát je vhodný k něčemu jinému z toho důvodu, že byly vytvořeny za odlišným konkrétním účelem. Navíc je možno převádět tyto soubory z jednoho formátu na jiný. Nyní si je popíšeme. • Souborový formát JPEG - využívá velmi účinnou techniku komprese obrázků, která ovlivňuje kvalitu a rozlišení snímku. Tyto soubory se používají pro přenos obrázků s nízkým rozlišením přes internet díky jejich menším velikostem. • Souborový formát TIFF (Tagged Image File Format) – častý v softwaru určeném pro tisk a publikování a také pro reprodukci renderovaného obrázku do nějaké publikace. Pro publikace je často žádoucí generování vysoce kvalitních středních tónů, jež tento formát splňuje zachováním detailních informací o šedé. Tyto soubory mají větší velikost, tudíž mnoho aplikací poskytuje možnost pro jejich kompresi a dekompresi. • Souborový formát TGA – oblíbený u softwaru orientovaného na video. Je vhodný pro přenos souborů do prostředí videa.
2.1
Vymezení základních pojmů
14
• Souborový formát HDR - je to 32bitov formát, který se používá k ukládání obrazů s vysokým dynamickým rozsahem, který je potřebný pro rendering založený na obrázcích (Kerlow, 2011). 2.1.4. Stínování Vyhodnocování osvětlení modelu v každém na obrazovce vykresleném bodě je zdlouhavé. Díky tomu bylo vyvinuto pár metod umožňujících provedení podrobného výpočtu osvětlovacího modelu, a to jen pro několik bodů na povrchu tělesa. Následně se z těchto bodů odvodí barevné odstíny ostatních zobrazovacích bodů. Těmto metodám můžeme přiřadit společný název stínování (fading). Díky této technice můžeme odlišit zaoblení ploch a případné křivosti. A tím pádem tak dosáhnout přirozeného vzhledu prostorových objektů i přesto, že některé výpočty týkající se zpracování světla byly zjednodušeny, či dokonce vynechány. Nějaké druhy stínování navíc pomáhají opticky vyhladit povrchy modelované sítí rovinných plošek tak, že nebudou zřetelné drobné hraniční zlomy (Žára, 2004). Metody stínování Vzhled objektů a jejich prostředí, ve kterém se vyskytují, je určen procesem stínování. „Tento proces vytváří povrch na soustavě polygonů (mnohoúhelníků). Tato sestava polygonů se vytváří procesem modelování a odesílá do procesu renderování. Stínování povrchu se počítá v závislosti na poloze objektů a jejich relativní vzdálenosti od zdroje světla, přičemž samozřejmě bere do úvahy i charakteristiku povrchu objektů.“ Stínování začíná v průběhu renderování v momentě, kdy se přiřadí hodnota stínování určitému povrchu viditelnému na scéně. Jde o číslo, které se vypočítá ze vztahu mezi zdroji světla, jež dopadají na povrch, a normálami povrchu. Tyto normály jsou buď přímky mající určitý směr, které jsou kolmé k povrchu z polygonů, nebo vektory. Také jsou pro výpočet stínování klíčové a používají se pro stanovení orientace povrchu. Vrcholové normály jsou k nalezení na rozích polygonů nebo na vrcholech a jsou velmi důležité (Kerlow, 2011). Konstantní (difuzní) stínování: Rychlá a jednoduchá metoda používaná pro zobrazování rovinných ploch, kde lze předpokládat, že každá plocha obsahuje jen jedinou normálu. Jestliže není normála implicitně zahrnuta do dat prostorového modelu, je možno ji u konvexních rovinných plošek stanovit jako výsledek, který ukazuje do vnějšího poloprostoru. Dle této normály je vypočítána jediná barva, jež
2.1
Vymezení základních pojmů
15
je přiřazena všem pixelům plochy při její pasterizaci. Toto stínování se používá tam, kde je potřebné docílit vysoké rychlosti kresby (Žára, 2004).
Obrázek 1: Stínování (FIT VUT, 2010)
Gouraudovo (vyhlazené) stínování: „Základní myšlenka této techniky vychází ze zprůměrování normál povrchů sousedních polygonů a vytvoření dojmu hladkého přechodu stínování mezi polygony, a to i těmi, které mají nepatrné množství detailů pro modelování.“ Stínování hladkých povrchů jako první odhalí množství světla, které dopadá ve středu polygonů na normálu povrchů. Následně výpočtem průměru povrchových normál dvou sousedních polygonů vytvoří normálu vrcholu a na závěr v polygonu sjednotí intenzity normál vrcholů (Kerlow, 2011). Vyhlazené stínování se též nazývá Gouraudův model stínování nebo stínování interpolací intenzity. „Gouraudova metoda zajišťuje plynulé stínování křivých povrchů tak, že aproximace povrchů ploškami není zřetelná.“ Ani díky tomu tyhle obrázky nepřináší absolutně přesný obraz reálných objektů – interpolaci samého odstínu barvy totiž nelze zapříčinit místní zvýšení jasu na rovinné plošce nahrazující zakřivenou plochu, která je nasměrovaná kolmo na dopadající světelný paprsek. Metoda zahlazuje u lokálních nerovností povrchu barevné rozdíly (Žára, 2004).
2.1
Vymezení základních pojmů
16
Obrázek 2: Interpolace křivek (KOLDA, 2007)
Zrcadlové stínování: Technikou tohohle stínování povrchu vznikají povrchy s důležitou vlastností příznačnou pro odrazivé plochy a vyrábí navíc plynulý přechod stínu mezi polygony. Prvotní verze zrcadlového stínování je Phongův model stínování (Kerlow, 2011). „Metoda vychází ze znalosti normálových vektorů ve vrcholech stínované plochy, z nichž jsou vypočítány barevné odstíny ve vrcholech a jsou použity k určení normálových vektorů ve vnitřních bodech plochy bilineární interpolací.“ Phongovo stínování se tudíž opírá o interpolaci normálových vektorů (Žára, 2004). Tahle metoda poskytuje přesnější výsledky renderingu oproti technice vyhlazovací nebo difuzní. Rendering opačným směrem je ale z výpočetního hlediska mnohem obtížnější (Kerlow, 2011). 2.1.5. Textury „Textura je popisem vlastností povrchu a je důležitá pro vnímání struktury, barvy a kvality objektu. Textura je vzorek, který může být buď pravidelný, či nepravidelný.“ Element textury se nazývá texel. Textura je těsně spjata s materiálem, jednoznačně popisujícím povch. Použití textury vede k důležitému zintenzivnění vizuální kvality objektu za cenu poměrně nízkých nákladů, a z tohoto důvodu je textura intenzivně používaná zejména v časově kritických aplikacích. Třídění textur může být dle jejich rozměru. Můžeme je rozlišit na jedno, dvou, troj a čtyřrozměrné textury. Jednorozměrné textury můžeme použít pro vymezení opakujících se podélných vzorků (například pruhů), ale rovněž se mohou aplikovat na generování izokřivek na mapách a površích. Dále je možno použít vzorek pro generování přerušovaných křivek a čar. Dvourozměrné textury lze mapovat na povrch tělesa.
2.1
Vymezení základních pojmů
17
Trojrozměrným texturám se též říká objemové textury z důvodu popisu hodnoty textury v prostoru. Jsou používány pro simulaci objektů vypadajících jako výřez z jediného bloku materiálu. Čtyřrozměrné textury lze užít pro animaci trojrozměrných textur. Aplikace textury sestává ze dvou jdoucích kroků jdoucích po sobě. V prvním kroku se textura definuje. Ve druhém kroku, tedy mapování, se určí, na který objekt a kam přesně se položí (Žára, 2004). 2.1.6. Kamera, pohledový objem „Pro účely vizualizací a animovaných filmů je potřeba do pracovního postupu začlenit kameru, protože s ní lze vytvářet mnoho zajímavých efektů, které jdou se standardním perspektivním pohledem jen stěží zvládnout.“ Stačí si na hlavních pozicích aplikovat kamery a následně se mezi nimi přepínat a je možné je taktéž animovat. Korektní pohyb a načasování kamery v dané animaci je velmi důležité, protože díky ní je možno provést diváka scénou. „Kamery mají základní prostředky pro nastavení čoček, ohniskové vzdálenosti a tím i zorného úhlu (Kříž, 2010).“ Kamera je také velmi důležitá pro tuto práci, Protože renderování pomocí skriptu je umožněno přes pohled kamery. Zorná pyramida Zorná pyramida, nazývána taky jako zorný kužel, je popisována jako část trojrozměrného prostředí a lze ji vidět skrz kameru. Tato zorná pyramida je dána výčtem několika parametrů, které jsou zásadní pro řízení pozice a charakteristik kamery. „Tyto číselné údaje zahrnují umístění a bod zájmu, směr pohledu, blízkou a vzdálenou ořezovou rovinu, šířku pohledu, úhel pohledu, ohniskovou vzdálenost a hloubku.“ Tuto je možno představovat jako čtyřstěnnou pyramidu rostoucí od kamery po směru směřování kamery. Objekty, které se nacházejí v této pyramidě, kamera uvidí a ty objekty nebo jejich části nacházející se mimo zornou pyramidu kamera nezpozoruje (Kerlow, 2011).
2.1
Vymezení základních pojmů
18
Obrázek 3: Zorná pyramida (Kerlow, 2011)
Obrázek 3: Zorná pyramida kazuje viditelný prostor definovaný blízkou a vzdálenu rovinou ořezu a zornou hloubkou mezi nimi. Nachází se zde také obrazová a ohnisková rovina, umístění oka představující umístění kamery a její nasměřování. Bod zájmu představuje cíl na břiše postavy (Kerlow, 2011). Zorné pole „Ořezové roviny ořezávají zornou pyramidu a definují zorné pole i obrazovou rovinu. Objekty uvnitř zorného pole se promítají na obrazovou rovinu a vytvářejí dvojrozměrný obraz trojrozměrného prostředí. Tento proces projekce se hodně podobá způsobu, jakým se reálná scéna promítá přes optické čočky kamery na film zavedený do kamery. Vztah mezi šířkou a výškou obrazové roviny definuje poměr stran čili proporce obrázku. S výjimkou několika čtvercových formátů používaných ve fotografii mají počítačově simulované kamery obdélníkový poměr stran, většinou orientovaný na šířku a označovaný také za formát landscape. V animační produkci lze používat pomocná pole k zadání přiblížení (zoomu) kamery a k „zablokování“ oblastí záběru, jež mohou bezpečně obsahovat důležitou akci, popisky nebo závěrečné titulky (Kerlow, 2011).“
2.1
Vymezení základních pojmů
19
Ohnisková vzdálenost Ohnisková vzdálenost kamery řídí pozorování kamerou trojrozměrných objektů. Tato vzdálenost virtuální kamery se popisuje spojitostí blízké a vzdálené ořezové roviny. „Tento vztah definuje způsob, jakým se objekty v trojrozměrném světě promítají na projekční rovinu virtuální kamery. Čočky virtuální kamery dokážou simulovat prakticky jakoukoli ohniskovou vzdálenost (Kerlow, 2011).“ Hloubka ostrosti a ohnisko Ohnisková rovina čoček je kolmá na kameru, jenž se ukáže jako ostrý obraz. Pouze jedna rovina v 3D prostoru může být perfektně zaostřená. Ohnisko a hloubku ostrosti můžeme použít tomu, aby divák upřel pozornost na odpovídající oblasti obrázku (Kerlow, 2011). 2.1.7. Animace Animace je napodobování pohybu objektů, která je vytvořena prostřednictvím zobrazování jednotlivých po sobě jdoucích snímků. Tímto způsobem jsou vytvořeny například animované filmy. Animace je náročná zejména z časového hlediska. Prvním krokem pro animaci je modelace objektů, popř. prostředí na základě požadavků. Pro věrohodnější dojem trojrozměrného prostoru se přidává osvětlení. Načež následuje animace, kde se místům na časové ose přiřadí polohy objektů. Potom se provede render a pomocí softwaru se individuální snímky poskládají v iluzi pohybu. „3D animace je v současnosti velmi populární. Animaci můžeme charakterizovat jako „vdechnutí života“ statickým 3D modelům. Technicky vzato jde o pohyb objektu nebo změny jeho tvaru v čase. Může jít ale také o animaci materiálů. V tomto případě jde o změnu vlastnosti materiálu (např. barva nebo průhlednost) v čase (Kříž, 2010).“ Součásti animace – práce ve 3D má 5 základních technologií, resp. oblastí: • Modelování – tvorba objektů, které budou ve scéně, • Texturovnání - definování vlastností povrchů objektů, • Osvětlení - osvětlení scény, • Animace - vytváření animace pomocí klíčových snímků, • Rendering - tvorba finálních obrázků či snímkovaných klipů. (Babb, 2004)
2.1
Vymezení základních pojmů
20
Druhy animace • Ručně kreslené animace – tato technika začíná sekvencí jednotlivých kreseb nakreslených na papíře. Kresby jsou pak postupně natáčeny na animačním stole, díky čemuž dojde k vytvoření náhledu pohybu = tužková zkouška. • Fázová animace – spočívá v animaci modelu s ohebnými klouby a nahrávání různých pozic na samostatné snímky. • Animatronické postavy – počítačem řízené modely, které mohou být animovány v reálném čase. Tyto systémy pro řízení pohybu obsahují mechanické i elektronické komponenty a jsou obvykle propojeny s kovovou kostrou s pohyblivými klouby, která je potažena umělou kůží a pohybuje se pomocí servomotorů. • Animace výkonu – můžeme se pravděpodobně setkat v loutkařském umění. • Animace postav – obvykle vytvářena s použitím kombinace technik inverzní a kinematiky v před a snímání pohybu. • Animace efektů – patří sem přírodní jevy, např. oheň, kouř, vítr, prach a voda ve všech podobách (Kerlow, 2011). Principy animačních technik Cílem je vylíčit pohyb počítačových postav a dalších předmětů maximálně realisticky a přesvědčivě. K tomu lze využít 12 základních principů a rozšířit je o své vlastní specifické přístupy. Principy zahrnují následující pohybové prvky (Kříž, 2010): • Zmáčknutí a natažení (Squash and Stretch), • Očekávání (Anticipation), • Nastavení scény (stagging), • „Pose-to-pose“ (od pózy k póze) a „Straight-ahead“ (přímo v před), • Dokončení akce (follow-through) a překrývaný se děj (Overlapping action), • Pomalý náběh (slow-in) a pomalý doběh (slow-out), • Pohyb do oblouku, • Sekundární akce (Secondary Motions), • Časování (Timing),
2.2
Použité prostředky
21
• Zveličení (Exaggeration), • Trojrozměrnost postav, • Přitažlivost postavy (Character Personality). Snímky „Počet snímků za sekundu je počet obrázků, které problesknou za jednu vteřinu. Ve filmu se obvykle používá 24 snímků za sekundu. To znamená, že každý nový obrázek probleskne na obrazovce každou 1/24 sekundy. U videa v Americe se obvykle používá 30 snímků za sekundu. To je také televizní standard NTSC. V Evropě má video obvykle 25 snímků/s standardu PAL (Babb, 2004).“
2.2
Použité prostředky
2.2.1. AutoDesk 3Ds Max „Program Autodesk 3ds Max (dříve ”3D Studio MAX” a ”3D Studio”) je světově nejrozšířenějším animačním a vizualizačním programem. Je určen pro tvorbu vizuálních efektů, animaci postav a tvorbu počítačových her, jeho verze 3ds Max Design pak pro architektonické a designerské vizualizace a animace. Nabízí interaktivní prostředí, rychlý rendering. Plně přizpůsobitelná a otevřená architektura poskytuje absolutní tvůrčí svobodu. Pro 3ds Max je k dispozici rozsáhlá knihovna doplňkových plug-in aplikací dalších vývojářů (Cad Studio a.s., 2012).“ 2.2.2. MaxScript „Skript představuje posloupnost kódu (v příkazovém režimu), který chceme, aby program vykonal. Jde o programovou rutinu, kterou překládá výkonný nativní skriptovací jazyk 3ds max - MAXScript. Existuje spousta skriptů od generování stromů (viz návody), materiálů, objektů a podobně (Ronald, 2008).“ Skriptovací jazyk se od klasického programovacího jazyka liší především tím, že téměř nikdy nepoužívá nástroje, které používá programovací jazyk jemu podobný, jako je např. kompilátor, a namísto toho je vykonáván přímo aplikací (MayaMax3D.net, 2011). „MAXScript je vestavěný a objektově orientovaný jazyk nástroje 3ds Max, umožňující rozšířit pomocí přídavných skriptů či pluginů jeho základní funkcionalitu v oblastech modelování, renderingu, materiálu, animace apod., a mimo jiné i usnadnit leckdy namáhavou a zdlouhavou práci s tímto nástrojem.
2.2
Použité prostředky
22
Obrázek 4: Rozhraní programu AutoDesk 3Ds Max (vlastní tvorba
Silnými stránkami jazyka je především interaktivní zpětná kontrola pomocí vestavěného příkazového řádku Listener window, a dále nástroj Macro Recorder, který slouží pro zaznamenávání uživatelem prováděných operací, které jsou v podobě příkazů jazyka zobrazovány zpětně v příkazovém řádku Listener window. Tímto způsobem se uživatel dozvídá, jaký příkaz byl vyvolán, když například v editoru materiálu smazal materiálový slot, posunul objekt ve scéně, přiřadil mu zvolený modifikátor a poté jej zanimoval (Melichar, 2006).“ MaxScript je tak obsáhlý, že nám umožňuje složité programové úlohy. Zahrnuje všechny důležité kontrolní struktury a datové typy jako např. 3D vektory, prvky vyššího jazyka, rekurzivní funkce. MaxScript podporuje vstupy a výstupy formátovaného textu, obsahující např. názvy, detaily textur, nastavení výstupu aj. exportovaných z jiného softwaru, tudíž je možno jak v souborech číst, tak vytvořit soubor s nastavením přímo ze souborů scén 3Ds Max. Jazyk obsahuje minimální množství pravidel pro formátování, je ihned spustitelný s volnými proměnnými a automatickou správou paměti pro jednodušší programování. Důležitou součástí je také nápověda, která je zdarma dostupná na internetu a lze se k ní dostat pomocí nabídky klávesy F1.
2.2
Použité prostředky
23
MaxScript nabízí nespočet funkcí stanovených pro manipulaci s objekty a mnoho dalších (Kříž, 2010).� ����
3
VÝSLEDKY
3
24
Výsledky
V této kapitole bude rozebrán postup práce formou ukázky implementace jednotlivých částí skriptů a návodu, jak skripty vytvořit v 3D modelovacím nástroji 3Ds Max.
3.1
Výběr rostlin
Praktický výstup této práce je určen jako výukový materiál pro předmět Tvorba výnosu polních plodin na Agronomické fakultě Mendelovy univerzity v Brně. Na základě konzultace s garantem tohoto předmětu z Ústavu pěstování, šlechtění rostlin a rostlinolékařství byla vybrána jako stěžejní rostlina pro tuto práci kukuřice setá. Morfologie „Kukuřice setá patří do čeledi lipnicovitých. Rostliny mohou svou výškou přesahovat 2,5m a kořeny mohou pronikat až do hloubky 3m. Stébla mají většinou 8-10 článků. Počet nadzemních článků i listů je dán hybridem. Listová čepel je tenká, mělce zvlněná a má vystouplou hlavní žilku. Tato rostlina má květy jednopohlavné. Samčím květenstvím je lata, která vyrůstá z posledního článku stébla. Samičím květenstvím je palice (klas), která vyrůstá ve střední části rostliny (Skládanka, 2006).“ Ekologické požadavky „Nároky na půdu jsou závislé na oblasti pěstování. Nejvhodnější je jižní expozice. Snáší i půdy slabě kyselé nebo slabě zásadité. Nevyhovují jí půdy kamenité, zamokřené a mrazové kotliny nebo pozemky erozně ohrožené. Důležitá pro kukuřici je teplota a vláha. Průměrná teplota by se měla pohybovat kolem 13°C a je citlivá na kolísání teplot v průběhu vegetačního období. Nadbytek vláhy a nedostatek vzduchu v půdě se projeví na barvě listů (světlá barva) a na tvorbě zakrnělých palic (Richter, 2005).“
3.1
Výběr rostlin
Obrázek 5: Samčí květenství - lata (Richter, 2005)
Obrázek 6: Samičí květenství - palice, klasy (Richter, 2005)
25
3.1
Výběr rostlin
26
Stejně jako je pro vývoj kukuřice důležitá teplota a vláha, je podstatnou složkou i množství živin, které rostlina přijímá. Za základní živiny, které jsou stěžejní pro zpracování praktického výstupu, jsou u nás považovány: Dusík – napomáhá růstu rostliny a vývoji listů. Jeho nedostatek ovlivňuje zejména délku palic a počet zrn v palici. Při nadbytku dusíku se mění rostliny na temně zelené a do generativní fáze přechází později.
Obrázek 7: Deficience dusíku (Richter, 2005)
Fosfor – má podstatný vliv v metabolických procesech v rostlině. Projevy nedostatku fosforu jsou častější za chladného a suchého počasí. Na počátku vegetační doby je jeho dobrý příjem nejdůležitější pro růst kořenů. Při deficitu fosforu jsou listy vzpřímené, tmavozelené a přechází do červeného až purpurového tónu.
Obrázek 8: Deficience fosforu (Richter, 2005)
3.2
Implementace skriptů
27
Draslík – má vliv na pevnost buněčných stěn. Snižuje výdej vody rostlinou a zvyšuje odolnost proti nízkým teplotám. Deficit se projevuje okrajovou nekrózou listů od spodních částí rostlin doprovázenou při vyšších teplotách vadnutím porostu.
Obrázek 9: Deficience draslíku (Richter, 2005)
Kukuřice je ale také náročná na hořčík a síru (Richter, 2005).
3.2
Implementace skriptů
Pro vyhotovení této práce bylo nejdůležitější nejprve vymodelovat 3D model rostliny v základním běžném tvaru. Listy musely být vytvořeny z elipsy a posléze z jednoho pohledu ztenčit na tvar co nejvíce podobný plátu. A to z toho důvodu, že plát by nebyl ze všech pohledů plně viditelný. Nejnáročnější z celého modelu byl ovšem samčí květ (lata), který byl vytvořen z velkého množství poupat květů, díky němuž je celý model náročnější na hardware. Po vytvoření modelu rostliny se lze přesunout na tvorbu skriptu. Jako první je třeba si uvědomit a důkladně promyslet, co skript má provádět. V případě téhle práce chceme navrhnout rozhraní, které nám udá základní informace a následně dá možnost vybrat jednotlivý deficit, který chceme zobrazit a nakonec vyrenderovat do animace. Při vývoji jednotlivých částí skriptu jsem využívala MaxScript Editor, který je součástí programu 3Ds Max. Takto vytvořený skript je nutno uložit jako samostatný soubor. Za účelem ulehčení vývoje jsem vytvořila vlastní panel s tlačítky v prostředí tohoto modelového rozhraní, které umožňuje volání a spouštění uvedeného souboru se skriptem.
3.2
Implementace skriptů
28
Při vytváření jsem využívala nápovědu jazyka MaxScript, která obsahuje kvantum funkcí, které je možno v tomto jazyce užít. 3.2.1 Část skriptu modelující uživatelské rozhraní Na počátku jsem si stanovila, že se mi zobrazí nejprve výchozí informace o rostlině, aby uživatel teoreticky věděl, jaké důležité živiny rostlinu mění, jakým způsobem, a také jak panel funguje a jak ho použít. Na to jsem si vytvořila zvlášť rozhraní, které tyto informace zobrazí, viz obr. 10.
Obrázek 10: Textové rozhraní Informace
Jako základní prvek musíme vytvořit okno pro rozhraní. To se definuje v příkazu Rollout. V jednom rozhraní můžeme použít i více rolloutů, nicméně chceme-li použít prvky, které mají spolupracovat, musí být v jednom rolloutu. Za příkaz rollout se píše název proměnné, do uvozovek popisek, který se zobrazí na titulní liště, a do závorek za příkaz se vepíše to, co chceme, aby rozhraní zobrazovalo. Šířku a výšku není povinné udávat, nicméně automatický rozměr nám nemusí vyhovovat, tak si stanovíme rozměry své. A také nesmíme zapomenout dialogové okno spustit přes příkaz createDialog. rollout test " Info o kukurici" width:250 height:300 ( ) createDialog test
3.2
Implementace skriptů
29
Jak můžete vidět již v uvedeném útržku skriptu, editor pro MaxScript barevně zvýrazňuje syntaxi, a tím je více přehledný. V tomhle jazyce se nemusí tvůrce kontrolovat, kde všude musí psát středníky, jako je v jiných programovacích jazycích, jelikož MaxScript to nevyžaduje. Pro vytvoření čistě textového okna použijeme příkaz dotNetControl. dotNetControl informace "Textbox" Aby se nám vůbec okno spustilo, je třeba ho otevřít a nadefinovat důležité parametry, bez kterých by se nám text nezobrazil, jak bychom si ho žádali. K parametrům se v MaxScriptu přistupuje přes tečku. Parametry pro text: • *.Font – parametr pro vybraný font, jestliže se nám nelíbí výchozí nastavení textu. • *.BackColor – implicitní nastavení pozadí je bílé. Pokud se nám nelíbí, můžeme ho tímto parametrem změnit. • *.ForeColor – parametr pro barvu textu. Výchozí je černý text. • *.MultiLine – parametr pro víceřádkový text. Aby se zobrazil na více řádcích, musíme přiřadit hodnotu true. • *.ScrollBars – nastavíme si existenci horizontálního nebo vertikálního posuvníku. • *.Text – přes parametr text napíšeme libovolně dlouhý text, který chceme uvést. Následující část skriptu uvádí přesné použití pro výstup této práce. rollout test " Info o kukurici" width:250 height:300 ( dotNetControl informace " Textbox" width:240 height:285 align:center on test open do ( informace.Font = dotNetObject "Font.textu" "MS Sans Serif" 8 ((dotNetClass"FontStyle").Regular) informace.BackColor = (dotNetClass "Pozadi").fromARGB
3.2
Implementace skriptů
30
(((colorMan.getColorbackground) * 255)[1] as integer) (((colorMan.getColor background)* 255)[2] as integer) (((colorMan.getColor background) * 255)[3] as integer) informace.ForeColor = (dotNetClass "Barva.textu").fromARGB (((colorMan.getColortext) * 255)[1] as integer) colorMan.getColor text)* 255)[2] as integer) (((colorMan.getColor text) * 255)[3] as integer) informace.MultiLine = true informace.ScrollBars = (dotNetClass "System.Windows.Forms. ScrollBars").Vertical informace.Text = "Zde bude libovolný text pro zobrazení" ) ) (Swordslayer, 2011) Další krok vede k vytvoření druhé části uživatelského rozhraní. Nyní si musíme promyslet a vybrat z množství formulářových prvků, které budeme potřebovat. Máme na výběr z několika prvků. Mezi nejzákladnější patří: • Slider
“popisek” – klasický posuvník jdoucí od minima po své maximum a lze si zvolit, zda bude orientovaný horizontálně nebo vertikálně. • Checkbutton “popisek”. • Checkbox “popisek” checked: true/false – zatržítko, dle potřeby si lze nastavit, zda bude tlačítko zaškrtlé nebo ne. • Button “popisek” – tlačítko. • Label “popisek” – label je krátký štítek s popiskem. • radiButton “popisek” - přepínač. K vytvoření tohoto rozhraní jsme si zvolili pouze malé množství prvků. A to přepínače, několik tlačítek a browsery, viz obr. 11.
3.2
Implementace skriptů
31
Obrázek 11: Rozhraní pro nastavení kukuřice
Pro začátek aplikujeme tři přepínače reprezentující výběr tří možností. Přepínačům lze přidat vlastnosti jako pozice a defaultní nastavení. radioButtons def1 " " labels:("Deficit dusíku") pos:[100,15] default:1 Dále u přepínače je nutno nastavit, aby nám fungovalo přepínání. on def1 changed state do (radState = 1; def2.state = def3.state = 0) Následujícím krokem zvolíme tlačítko, které po spuštění vygeneruje růst rostliny s vybraným deficitem pomocí přepínačů.
3.2
Implementace skriptů
32
Nejprve je důležité vytvořit si samotné tlačítko. button Generovat "Vygenerovat" Poté musíme napsat funkci, která po zmáčknutí tohoto tlačítka provede generování. Jelikož máme tři deficity, provádíme podmínku příkazem case .. of. button Generovat "Vygenerovat" on Generovat pressed do ( case radState of ( 1: () 2: () 3: () ) Při změně rostliny nejprve přiřadíme jednotlivým objektům textury. Pro znázornění osychání rostliny je nutno použít tzv. multi-materials, aby různé části objektu měly svoji vlastní texturu[1]. K objektu přistupujeme pomocí $ spojeného s názvem objektu a k jeho vlastnostem pomocí tečkové notace, např. $list.material. Textury mají ovšem jednu velkou nevýhodu a to, že nejdou měnit v průběhu animace. Tudíž pro změnu materiálu listů je nutné si vytvořit duplikáty, na kterých bude daná textura aplikována, a při animaci originál a duplikát vyměnit tak, aby to nebylo na první dojem patrné. Výměnu objektů je třeba dělat v animačním režimu (skriptovacím jazykem příkaz set animate on/off), zapsat výměnu pozice a utvrdit klíčem, jako tomu je v následující části skriptu. $list1a.material = meditMaterials[8] set animate on --PRVNI PROHOZENI sliderTime = 150f $list1a.pos.y = -200 $list1.pos.y = 1 $list1.EditablePoly.buttonOp #bevel $list1a.EditablePoly.buttonOp #bevel
3.2
Implementace skriptů
33
sliderTime = 151f $list1a.pos.y = 1 $list1.pos.y = -200 $list1.EditablePoly.buttonOp #bevel $list1a.EditablePoly.buttonOp #bevel set animate off Krom toho je také nutnost dohlédnout na pozice objektů při pokračování animace. Po vygenerování požadovaného deficitu je nutné tento soubor uložit. Pro vlastní volbu adresy umístění si musíme vytvořit vstupní pole pro zadání cesty k souboru s tlačítkem procházet, díky němuž si vybereme umístění pro uložení souboru. K vytvoření pole je vhodné použít příkaz edittext “popisek”. Dále zhotovíme tlačítko a po jeho stisknutí se otevře okno a výběrem se přiřadí zvolená adresa. To vše následující části skriptu. edittext browse_ adresa "složka pro uložení: " button projdi "Procházet" on projdi pressed do ( output_ dir = getSavePath() adresa.text = (output_ dir as string) ) A nyní je třeba vytvořit tlačítko, kterým daný soubor uložíme na již vybranou adresu. Každý soubor ponese pevný název dle vybraného vygenerovaného deficitu a docílíme toho opět pomocí příkazu case .. of. Button Uloz "Uložit" on Uloz pressed do ( case radState of ( 1: ( outputpath =(browse_ output1.text + "\defDusiku.max") saveMaxFile outputpath ) 2: (outputpath =(browse_ output1.text + "\defFosforu.max") saveMaxFile outputpath )
3.2
34
Implementace skriptů
3: (outputpath =(browse_ output1.text + "\defDrasliku.max") saveMaxFile outputpath ) ) ) Druhá polovina popisovaného uživatelského rozhraní by měla obsahovat vyrenderování a zhotovení videa animace s možností výběru období, který vytvoříme pomocí posuvníků. Je nutno uvést, zda chceme posuvník horizontálně nebo vertikálně orientovaný a také tři hodnoty. Tyto hodnoty popisují první a poslední hodnotu a hodnotu, na které bude ukazatel defaultně nastaven. slider minimum "Zobrazit od orient:horizontal type:#integer range:[0,10,0]
minimalního
stari
(v
tydnech)"
Nejdůležitější z celého rozhraní je ovšem funkce, která vyrenderuje jednotlivé snímky animace a převede je do formátu videa. Nejprve vytvoříme dva browsery. První broker slouží ke zvolení výchozí složky, ve které máme uložen již vygenerovaný soubor, a druhým si uživatel vybere místo, kam vyhotovenou animaci uloží. Jako poslední je nutno zhotovit tlačítko, kterým se celá akce provede. Po zmáčknutí tohoto tlačítka se vyberou všechny soubory s příponou max ve složce vybrané prvním browserem, které projdou procesem renderování. Tento proces je nutno provést přes vytvořenou snímací kameru a následně určit rozmezí snímků pro renderování. Příkaz animation.range.end vrací počet snímků animace. Nicméně v téhle práci se vyrenderují takové snímky, které jsme si díky posuvníku zvolili. Renderovací funkci napíšeme tímto způsobem: on spust pressed do ( maxfiles = getFiles (browse_ max_label.text + "\\*.max") outputpath = (browse_output_label.text + "\\") for i in 1 to maxfiles.count do ( loadMaxFile maxfiles[i] filename = (getFileNameFile maxfiles[i] +".avi") myoutput = (outputpath + filename) myanim = render camera:$Camera001 fromframe:(minimum.value*30) toframe:(maximum.value*30) outputfile:myoutput
3.2
Implementace skriptů
35
undisplay myanim saveMaxFile maxfiles[i] ) messagebox "Render Completed!" ) ) (Steev, 2003) Aby se nám všechny části uvedené v jediném rolloutu pěkně zobrazili, určíme si šířku a výšku rozhraní. Provedeme to přes následující příkazy. theNewFloater = newRolloutFloater "Kukurice" 300 510 addRollout Nastav theNewFloater Tímto způsobem lze naprogramovat všechno, co bude potřeba. Hotový skript lze v programu 3Ds Max spustit přes hlavní panel tlačítkem MaxScript -> Run Script. Případné chyby v kódu lze zkontrolovat v okně MaxScript Listener, který spustíme tlačítkem F11 nebo opět tlačítkem MaxScript v hlavním panelu.
4
DISKUZE
4
36
Diskuze
Tato práce se zabývá možností automatizace procesu vytváření animace v závislosti na různých deficiencích rostliny pomocí skriptování. Jejím cílem bylo tedy využít metody skriptování za účelem vizualizace a jasných představ o tom, jak vypadá vybraná rostlina (v našem případě zvolená kukuřice) v období růstu při různých deficitech živin. Je nutno si uvědomit i některá úskalí pro použití této aplikace pro veřejnost. Program 3Ds Max patří mezi programy, za které si uživatel musí zaplatit, proto tahle aplikace bude dostupná pouze Mendelově univerzitě v Brně, která má pro tenhle program licenci a ostatní uživatelé, kteří licenci získali. Avšak pro širokou veřejnost a možnost výuky studentů by byla možnost tuhle aplikaci zhotovit trochu jinak. A to, že by programátor vyhotovil spustitelné rozhraní mimo program 3Ds Max, kde si uživatel (nebo student) zadá potřebnou informaci a poté se mu spustí již předem zhotovená animace. Pro autora této práce by sice bylo složitější a hodně zdlouhavé tuto verzi připravit, avšak pro studenty a uživatele by to bylo výhodnější v přístupu. Tahle aplikace by pak mohla být volně stažitelná ze studijního protálu Mendelovy univerzity, a tím by si studenti mohli názorně pouštět videa a dle této aplikace se učit. Postupem, uvedeným v téhle práci, lze vytvořit i detailní zobrazení klasu a jeho rozevírání při určitých fázích deficitů. Jako další možnost rozšíření by bylo možné zhotovit jiné plodiny pro výuku předmětu Tvorba výnosu polních plodin. Pro ty by se pak určily další podmínky pro změnu struktury a růstu dané rostliny. Problémů se v téhle práci vyskytlo několik. Ten hlavní znamenal dlouhé zdržení od výsledku. Spočíval v tom, že během animace na jakémkoliv objektu nelze měnit textury. Další problém se vyskytl při psaní skriptu pro rendering. Následně bylo zjištěno, že posuvníky pro výběr časového úseku pro zobrazení musí být ve stejném rolloutu jako funkce pro renderování z důvodu převzetí proměnné do této funkce. Navíc ve funkci pro renderování musel být použit pohled z kamery. A poslední z těch důležitých problémů byl v zasazení osvětlení a stínování. Toto potřebuje kvalitnější grafickou kartu a procesor, aby program nepadal. A tenhle problém by byl jistě zátěží pro následné rozšíření animace při zobrazení deficitů na klasu a jeho zrn.
4.1
Přínos práce
Tahle práce má pro mě velký přínos a to hlavně z hlediska praxe. Dala mi větší přehled o grafických nástrojích pro modelování 3D modelů a posunula mé možnosti skriptování na vyšší úroveň.
4.1
Přínos práce
37
Má práce má přínos také pro Ústav pěstování, šlechtění rostlin a rostlinolékařství Agronomické fakulty Mendelovy univerzity v Brně, pro který zmíněná aplikace znamená pomoc a usnadnění práce při výuce předmětu Tvorba výnosu polních plodin. Tutoriálů je na internetu mnoho, ovšem všechny jsou pouze v anglickém jazyce. Tuto práci lze využít jako tutoriál pro psaní podobných skriptů a k tomu ještě v českém jazyce.
5
5
ZÁVĚR
38
Závěr
Cílem bakalářské práce bylo vytvořit 3D model kukuřice a zautomatizování aninací vývoje této rostliny při různých deficitech živin. V kapitole Přehled literatury a pramenů jsou shrnuty teoretické základy potřebné pro zorientování v oblasti grafiky. Závěrečná část teoretického oddílu obsahuje potřebné informace o skriptování ve vybraném 3D modelovém programu. Kapitola Vlastní práce se zabývá popisem samotného vývoje skriptů v konkrétním skriptovacím jazyce což je podrobně popsáno na vývoji kukuřice. Je zde tedy ukázáno, jakým způsobem je možné využít metody skriptování ke generování 3D animace v konkrétním 3D programu. V průběhu této kapitoly je dopodrobna popsán postup vedoucí k dokončení animací kukuřice, kde výsledkem je soubor formátu avi zobrazující růst rostliny s vybraným deficitem. Výstupem práce je skript, který lze spustit pouze v prostředí programu 3Ds Max. Objeví se dvě uživatelská rozhraní. První rozhraní obsahuje základní informace o tom, jak použité deficity na rostlinu působí a také návod, který uživatele informuje, jak s celou aplikací zacházet. Druhá část obsahuje dvě důležité poloviny. V první půli nalezneme několik ovládacích tlačítek pro výběr požadovaného deficitu, následné vygenerování potřebných klíčů v časové ose souboru modelu a poté textové pole pro adresu s tlačítkem pro uložení. Druhá půle tohoto rozhraní obsahuje posuvníky, ze kterých si uživatel zvolí délku růstu rostliny v čase a poté vybere složku, kde se vygenerovaný modelový soubor nachází a složku, kam výslednou animaci uložit. Na závěr lze uvést, že cíl práce, který byl stanovený v úvodu, byl splněn. Navrhované řešení by mělo vyhovět základním požadavkům předmětu Tvorba výnosu polních plodin na Agronomické fakultě Mendelovy univerzity. Taky by mělo zvýšit efektivitu práce budoucích grafiků, kteří budou chtít podobný skript vytvořit. �
6
6
LITERATURA
39
Literatura
BABB, Paul. Cinema 4D Release 6. Vyd. 1. Brno: Computer Press, c2004, 268 s. ISBN 8025100014. BÍZKOVÁ, Milada. Počítačová grafika: Domovská stránka uživatele systému Orion Západočeské univerzity v Plzni. [online]. [cit. 22. 11. 2012]. Dostupné z WWW: . Cad Studio a.s. Autodesk 3Ds Max. [online]. 2012 [cit. 2012-11-22]. Dostupné z: . FIT, VUT v Brně. Základy počítačové grafiky: Osvětlení a stínování 3D objektů.[online]. Dostupné z: . KERLOW, Isaac Victor a Michal JANKO. Mistrovství 3D animace: [ovládněte techniky profesionálních filmových tvůrců]. Vyd. 1. Brno: Computer Press, 2011, 496 s. ISBN 9788025127179. KOLDA, Jiří. 3D grafika, rendering. [online]. 2007 Dostupné z: . KOUTNÁ, Mgr. Marcela. Vektorová a rastrová grafika na PC: Učební text pro distanční formu vzdělávání [online]. 2006 [cit. 2012-11-22]. Dostupné z: . Obchodní akademie Orlová. Vedoucí práce doc. RNDr. Jana Kapounová, CSc. KŘÍŽ, Jan. Mistrovství v 3ds Max: [kompletní průvodce profesionálního grafika]. Vyd. 1. Brno: Computer Press, 2010, 1151 s. ISBN 978-80-251-2464-2. MAYAMAX3D.NET. Slovník. [online]. 2011 [cit. 2012-11-22]. Dostupné z: . MELICHAR, Jan. MaxScript - výukový kurz: Díl první – úvod do jazyka MAXScript [online]. 2006 [cit. 2012-11-22]. Dostupné z: . RONALD P. Loui. In Praise of Scripting: Real Programming Pragmatism. Computer. Vol. 41, č. 7, s. 22-26, July 2008.
6
LITERATURA
40
RICHTER, DrSc., Prof. Ing. Rostislav. ÚSTAV AGROCHEMIE A VÝŽIVY ROSTLIN, MZLU v Brně. Multimediální učební texty z výživy a hnojení polních plodin: Kukuřice [online]. 2006 [cit. 2012-11-22]. Dostupné z: . SKLÁDANKA, Jiří. MZLU V BRNĚ. Multimediální učební texty pícninářství: Kukuřice setá [online]. 2006 [cit. 2013-0203]. Dostupné z: . SLICK, Justin. Anatomy of a 3D Model. ABOUT.COM. [online]. [cit. 201302-03]. Dostupné z: . STARGEN GROUP S.R.O. Pojem 2D grafika. [online]. 2010-2011 [cit. 2012-1122]. Dostupné z: . STEEV, Kelly. BatchRenderAvibatchRenderAvi. [online]. 2003 [cit. 2013-02-11]. Dostupné z: http://www.scriptspot.com/3ds-max/scripts/batchrenderavi . Swordslayer. Textfield Multiline Scrollbar. In: Polycount: rum. [online]. 2010-2011 [cit. 2013-04-21]. Dostupné http://www.polycount.com/forum/showthread.php?t=81952.
Foz:
ŽÁRA, Jiří, Bedřich BENEŠ, Jiří SOCHOR a Petr FELKEL. Moderní počítačová grafika. Vyd 1. Brno: Computer Press, 2004, 609 s. ISBN 80-2510454-0. �
7
7
PŘÍLOHY
41
Přílohy
Na přiloženém CD lze nalézt modelový soubor a potřebný soubor se skriptem. Dále se na CD nacházejí důležité textury pro model rostliny a její prostředí. �