Mendelova univerzita v Brně Provozně ekonomická fakulta
Interaktivní průchod scénou s využitím nástrojů Blender a Python Bakalářská práce
Vedoucí práce: Ing. Mgr. Jana Dannhoferová, Ph.D.
Brno 2012
Iveta Šlesová
Děkuji vedoucí mé práce Ing. Mgr. Janě Dannhoferové, Ph.D. za cenné rady při psaní této práce. Dále bych ráda poděkovala panu doc. Ing. Dr. Jiřímu Rybičkovi za vytvoření a poskytnutí sazebního stylu pro diplomové a bakalářské práce.
Prohlašuji, že jsem tuto bakalářskou práci vypracovala samostatně s pomocí informačních zdrojů, které jsem uvedla v seznamu literatury. V Brně dne 2. ledna 2012
_______________________
Abstract Šlesová, I. Interactive passage scene using Blender and Python tools. Bachelor thesis. Brno, 2011. The bachelor thesis deals with interactive passage of the building of the Faculty of Business and Economics Mendel University modelled using Blender program using Python scripting language. It describes the process of modelling and development of scripts. Keywords Blender, 3D model, script, interactive passage, building PEF.
Abstrakt Šlesová, I. Interaktivní průchod scénou s využitím nástrojů Blender a Python. Bakalářská práce. Brno 2011. Práce se zabývá interaktivním průchodem budovy Provozně ekonomické fakulty Mendelovy univerzity, vymodelované pomocí programu Blender s využitím skriptovacího jazyka Python. Popisuje postup modelování a tvorbu skriptů. Klíčová slova Blender, 3D model, skript, interaktivní průchod, budova PEF.
5
Obsah
Obsah 1
2
Úvod a cíl práce
9
1.1
Úvod ......................................................................................... 9
1.2
Cíl práce ................................................................................... 9
1.3
Metodika................................................................................. 10
1.4
Proč Blender? ......................................................................... 10
Teoretická část 2.1
11
Blender a jeho vývoj ................................................................ 11
2.1.1
Verze 2.2x – 2.3x .............................................................. 11
2.1.2
Verze 2.4x ........................................................................ 11
2.1.3
Verze 2.5x ........................................................................ 12
2.1.4
Verze 2.6 .......................................................................... 12
2.2
Prostředí Blenderu, Editory ..................................................... 12
2.2.1
Info Editor ........................................................................ 13
2.2.2
3D View ........................................................................... 14
2.2.3
File Browser ..................................................................... 14
2.2.4
User preferences .............................................................. 15
2.2.5
Logic Editor ...................................................................... 16
2.2.6
Node Editor ...................................................................... 17
2.2.7
Text Editor ....................................................................... 17
2.2.8
Video Sequence Editor...................................................... 17
2.2.9
UV/Image Editor .............................................................. 17
2.2.10 NLA Editor ....................................................................... 18 2.2.11 DopeSheet Editor ............................................................. 18 2.2.12 Graph Editor .................................................................... 18 2.2.13 Timeline ........................................................................... 19 2.2.14 Outliner ........................................................................... 19 2.2.15 Properties Editor .............................................................. 19
6
Obsah
2.2.16 Python Console................................................................. 20 3
Vlastní práce
21
3.1 Základní nástroje Blenderu pro tuto práci ............................... 21 3.2 Modelování .............................................................................. 24 3.2.1
Scéna s názvem „prizemi“ ................................................. 24
3.2.2
Scéna s názvem „schodiste“ .............................................. 27
3.2.3
Scéna s názvem „Q02“ ...................................................... 28
3.2.4
Scény s toaletami ............................................................. 28
3.2.5
Scény s fotografiemi .......................................................... 28
3.2.6
Problémy při modelování................................................... 29
3.3 Navigace a průchod scénou ..................................................... 29 3.3.1
Animace kamery po křivce ................................................ 29
3.3.2
Klíčování snímků .............................................................. 30
3.4 Analýza interaktivního průchodu............................................. 30 3.4.1
Python .............................................................................. 30
3.4.2
Implementace průchodu ................................................... 31
3.4.3
Animace dveří ................................................................... 33
3.4.4
Zobrazení scén „Nápis_Vejit“ a „Informace“ ....................... 34
3.4.5
Načítaní scén .................................................................... 35
3.5 Export ..................................................................................... 37 4
Závěr
38
4.1 Praktický přínos ...................................................................... 38 4.2 Problémy při řešení ................................................................. 39 4.3 Budoucí rozšíření .................................................................... 39 5
Literatura
41
A
Náhled na model budovy PEF
43
7
Seznam obrázků
Seznam obrázků Obr. 1
Úvodní obrazovka
13
Obr. 2
Krok před přemostěním
21
Obr. 3
Výsledný rám okna
22
Obr. 4
Znázornění švu
23
Obr. 5
Možnost Unwrap
23
Obr. 6
Typy dveří
25
Obr. 7
Vertexy sedátek
26
Obr. 8
Modifikátor Subsurf
28
Obr. 9
Aktivování a deaktivování scény
34
Obr. 10
Kamera v logickém editoru
35
Obr. 11
Budova PEF
43
Obr. 12
Dvůr
43
Obr. 13
Chodba
44
Obr. 14
Třída
44
Obr. 15
Schodiště
45
Obr. 16
Toalety
45
Úvod a cíl práce
9
1 Úvod a cíl práce 1.1
Úvod
Grafika jako taková nás obklopuje spousty let, aniž bychom si to sami uvědomovali, je nám neustále na blízku. Ať už se jedná o hieroglyfy na stěnách jeskyní, stavby barokních kostelů či prostředí textového editoru, ve kterém pracujeme. Je tu s námi a s námi se i vyvíjí. Prostřednictvím grafického návrhu, který se týká především klienta a designéra, sdělujeme určitou zprávu. 2D grafické návrhy jako jsou identity (značka, logotyp), webové stránky, publikace (časopisy, noviny a knihy), reklamy na obalu výrobků obsahují nejrůznější designové prvky (tvary, barvy, materiály, tex aj.) Tyto prvky, a velká řada dalších, se vyskytují také ve 3D grafice. Ta byla v minulosti k dispozici pouze na výkonných pracovních stanicích. Nyní se s rozvojem grafického akcelerátoru1 běžně vyskytuje i na osobních počítačích. Stejně tak, jako se zdokonalují osobní počítače, ruku v ruce s nimi se rozvíjí i 3D programy na zpracování modelů. Některé z nich jsou komerční a jiné volně přístupné. Mezi nejznámější komerční programy patří Rhinoceros 3D – modelovací nástroje pro projektanty (Mcneel, 2010), Cinema 4D, BodyPaint 3D – multiplatformní programy pro tvorbu 3D grafiky (Digital Media, 2011), Maya – profesionální program pro 3D grafiku (Autodesk Inc., 2011) a 3D Studio MAX – profesionální program pro 3D grafiku, vizualizace a animace (Autodesk Inc., 2011). Jednou z nejznámějších Open-source2 aplikací je Blender, používaný pro vytváření animovaných filmů, vizuálních efektů, her a interaktivních 3D aplikací. Především poslední zmíněná schopnost je důležitá pro vytváření průchodů scénami. Představme si, že sedíme v teple svého domova a procházíme prostřednictvím svého počítače prostory nákupních středisek, veřejných budov či fakultami různých univerzit. V dnešní době se tyto představy mění ve skutečnost.
1.2 Cíl práce Cílem práce je vytvoření modelu fakulty PEF Mendelovy univerzity v Brně za pomoci programu Blender. Dále tento model obohatit o vhodnou navigaci a navrhnout vhodný způsob interakce s uživatelem.
Grafický akcelerátor – součást některých grafických karet, slouží pro zlepšení výkonu. Jeho úkolem je zpracování grafických výpočtů. 2 Open-source – jedná se o software s otevřeným zdrojovým kódem 1
10
Úvod a cíl práce
1.3 Metodika Model celé fakulty bude vytvářen prostřednictvím Blenderu 2.5, je tedy nutností se seznámit s prostředím tohoto programu a získat plány půdorysu fakulty, které by sloužily jako předloha. Textury, které obohatí objekty modelu, budou fotografovány fotoaparátem CASIO model EX-H15 přímo ve fakultní budově, nebo budou staženy z volně přístupných zdrojů. Photoshop X4 napomůže k úpravě těchto textur do podoby, která by odpovídala našim potřebám. Skripty pro pohyb kamer ve scéně a načítání jiných scén budou psány programovacím jazykem Pythonem 3.2 v rozhraní programu Blender 2.5, který je s touto verzí kompatibilní. Výsledná aplikace, která bude vyexportována po dokončení scény a následném připojení skriptů, bude spustitelná na operačních systémech Windows a volně přístupná ke stažení pro libovolné uživatele.
1.4 Proč Blender? Jak již bylo řečeno, jedná se o profesionální nástroj pro zpracování 3D grafiky a především jeden z nejznámějších volně dostupných, které se na trhu vyskytují. Je také známý pro schopnost interakcí. Zvolená verze 2.59 byla nejnovější verzí, vypuštěnou na trh v době tvorby práce. Model mohl být vytvářen i ve starších verzích, ale teprve ve verzi 2.5x se vyskytuje nové uživatelsky přívětivější prostředí, ve kterém jsou všechny možnosti uspořádány mnohem přehledněji a logičtěji.
Teoretická část
11
2 Teoretická část 2.1 Blender a jeho vývoj Jak již bylo zmíněno, Blender je Open-source, softwarový produkt pro zpracování 3D počítačové grafiky, ne vždy tomu tak ale bylo. Celá historie Blenderu je spojena se jménem Tona Roosendaala, který se roku 1988 stal spoluzakladatelem holandského animačního studia NeoGeo. Zde byl také pověřen vývojem softwaru. Nástroje pro 3D tvorbu se mu v NeoGeo však zdály poněkud zastaralé, a tak roku 1995 započaly práce na jejich přestavbě. To dalo vzniknout Blenderu takovému, jaký ho známe dnes. Roku 1998 se však Ton rozhodl založit další společnost s názvem Not a Number (NaN), která by na trhu nabízela komerční produkty a služby úzce související s Blenderem, a která by Blender dále rozvíjela. Velký rozmach společnost zachytila v roce 2000, kdy disponovala částkou 4,5 milionů eur, získanou od investorů. Je smutné, že kvůli tehdejší hospodářské situaci a souvisejícímu neúspěšnému prodeji firma v březnu 2002 zastavila svoji činnost. Ton Roosendaal se však nevzdal a v červenci téhož roku byl Blender uvolněn jako Open-source ze společnosti NaN. Od té doby vývoj Blenderu řídí tým dobrovolníků a původní tvůrce, již zmiňovaný Ton Roosendaal. Po prvních 2,5 letech vývoje aplikace se nadace pro Blender rozhodla zahájit projekt, jehož cílem je rozvoj krátkometrážních animovaných filmů. V dubnu 2008 vychází první krátký film Big Buck Bunny, jenž byl realizován ústavem Blenderu, a jehož animace dala vzniknout hře YoFrankie, která vyšla již v září téhož roku. Další úspěšný film s názvem Sintel vyšel o dva roky později. (Blender Foundation, 2011) 2.1.1
Verze 2.2x – 2.3x
Verze 2.2x se stává přelomovou. Roku 2002 Blender 2.25 přechází na trh jako Open-source aplikace. Je přidáno mnoho nových prvků jako nové ovládání transformačních nástrojů, Softbodies, transparentní stíny a Knife tool. Nejvýraznější změnou je Outliner. Jedná se o diagram, zobrazující objekty s informací o scéně, ve které se vyskytují. 2.1.2
Verze 2.4x
S touto verzí přichází lepší animační nástroje postav. Mezi vylepšení patří především rychlá a snadná manipulace s kostí, nové zobrazovací metody, snazší použití metod deformace a největším přínosem je herní engine, který přináší spoustu nových funkcí (GLSL shadery, možnost užití více materiálů, UV mapování). Vydání "Big Buck Bunny" má za ná-
12
Teoretická část
sledek výrazné zlepšení a přináší sadu funkcí, především pro tvorbu vlasů a chlupů, látkové simulace a mapování UV textury. 2.1.3
Verze 2.5x
Již na první pohled Blender přináší nové grafické uživatelské prostředí (GUI) se sadou ikon, které je pro uživatele přívětivější. S touto verzí ovšem přichází i nové chyby. Důkazem toho může být nalezení 440 chyb ve verzi 2.55 beta. Oproti tomu verze 2.57 beta je nazývána stabilní verzí, a to nejen díky tomu, že většina funkcí je již kompletní, ale bylo zveřejněno 1000 oprav a různé aktualizace funkcí. 2.1.4
Verze 2.6
Jedná se o počátek série Blender 2.6x. Nejpozoruhodnější v této verzi je 3D audio, zlepšení animačního systému a rozhraní ve více jazycích. Do budoucna tato série slibuje mnohé zlepšení v editaci pletiva, barvách, výřezech, ve fyzice tělesa a mnohé jiné. (Blender Foundation, 2011
2.2 Prostředí Blenderu, Editory Při nainstalování a spuštění Blenderu můžeme vidět úvodní obrazovku, kde v pravém horním rohu je vyobrazena verze, ve které se chystáme pracovat. Levá strana zobrazuje užitečné odkazy. Mezi ně patří odkazy na manuál, uživatelské skupiny, oficiální stránky Blenderu a například odkaz na místo, kde se nachází informace o verzi Blenderu, kterou užíváme. Na pravé straně jsou zobrazeny soubory typu Blender, které jsme během své práce ukládali. Při prvním spuštění bude tato část prázdná. Uživatelské prostředí Blenderu je vypracováno v OpenGL, který nám umožní si rozhraní přizpůsobit podle svých potřeb. Skládá se z editorů, záhlaví, kontextových tlačítek, panelů a ovládacích prvků. Editor – jedná se o část softwaru, který má speciální funkci. Každý editor má vlastní záhlaví a tlačítko Windows Type, díky kterému se můžeme mezi těmito editory přepínat. Kontextová tlačítka – jsou velice často umístěná v hlavičkách editorů. Umožňují přístup k možnostem. Panely – možnosti jsou rozděleny do panelů. Postranní lišty – jsou obsaženy v některých editorech. V případě, že editor obsahuje postranní lišty, jsou jeho panely a ovládací prvky seskupené zde.
Teoretická část
Obr. 1
Úvodní obrazovka
2.2.1
Info Editor
13
Nachází se v horní části rozhraní a vyobrazuje pouze jeho záhlaví, ve kterém můžeme najít několik výběrových tlačítek, díky kterým si nastavíme pracovní prostředí tak, jak budeme potřebovat. Current Screen (akruální obrazovka) – Výchozí nastavení je Default. Můžeme si však vybrat z několika přednastavených možností, které mají vhodně vybrané a rozmístěné editory v rozhraní nebo vytvořit a pojmenovat vlastní vzhled obrazovky. Pro vytváření UV textur je například vhodné zvolit UV Editing, který UV/Image Editor umístí na levou stranu a 3D View na stranu pravou. Current Scene (aktuální scéna) – Umožňuje přepínání mezi scénami, které máme vytvořené v jednom souboru. Může pracovat jak s oddělenými údaji, tak i s údaji, které propojují více objektů. Current Rendering Engine (aktuální renderovací engine) – umožní přepínat mezi dostupnými renderovacími enginy. 3D Window View (přepínač obrazovky) – přepíná do celoobrazovkového režimu.
14
2.2.2
Teoretická část
3D View
Jedná se o velmi důležitý editor, bez kterého by se naše tvorba neobešla. Vyobrazuje všechny změny, které na model ve scéně aplikujeme. Jak již bylo zmíněno, některé editory mají ovládací prvky a panely umístěné v postranních lištách. 3D View je jedním z těchto editorů. Jednou z možností jak tyto lišty zobrazit, je jejich rozkliknutím po stranách. Pro tuto možnost jsou zde ikony plusek. Další možností je stisknutí kláves N a T. 3D pohled nám nabízí hned několik módů pro práci s objekty. Se změnou módu se nám mění i panely možností umístěné v postranních lištách. Dva nejdůležitější módy pro práci jsou Object Mode (objektový mód) a Edit Mode (editační mód), které můžeme přepnout klávesou Tab, stejně jako i ostatní módy v nabídce Mode. Objektový mód je používán pro manipulaci s individuálními objekty jako například změna jejich velikosti, posunu či rotace. Editační mód nám zatím nabízí práci s jednotlivými vrcholy, hranami či plochami. Tyto transformace jsou dostupné prostřednictvím nabídky Transform Manipulator či přes klávesy S, G, R. Dalšími módy, které Blender 2.5 nabízí, jsou Vertex Paint, Weight Paint, Sculpt Mode a Teture Paint. Pro přehlednější práci s objekty tu najdeme nabídku Viewport Shading. Umožňuje vykreslování Textured (texturové), Solid (solidní), Wireframe (drátové) a Bounding box (ohraničující). Velmi důležitou součástí tohoto 3D View je přepínání mezi jednotlivými vrstvami, které nám nabízí přehlednější práci. Přepínat vrstvy můžeme na klávesách 0–9 či kliknutím do nabídky vrstev. Pro přesouvání objektů z vrstvy do vrstvy můžeme využít Object → Move to Layer nebo pro usnadnění použít klávesu M. Stačí pouze označit objekt levým tlačítkem myši, stisknout klávesu M a vybrat vrstvu, do jaké objekt přesunem. Musíme však být v objektovém modu. Další, co v záhlaví 3D okna najdeme, jsou tlačítka pro uchycení objektů na mřížku (ikona podkovy), renderování podle aktivního bodu (ikona fotoaparátu). Po přepnutí do editačního módu se objeví další možnost zneviditelnění vrcholů, která usnadní vývěr. Vrcholy překryté jinou plochou (sítí vrcholů) nemohou být označeny. 2.2.3
File Browser
Jedná se o obecně nazývaný souborový prohlížeč, určený pro otevírání a ukládání souborů. Bohužel, v této verzi se nevyskytuje tlačítko Action type, pro určení, zda chceme soubor načítat, ukládat či přidat knihovnu. Můžeme ho však použít pro správu celého souborového systému. Podává užitečný přehled o vnitřní struktuře souborů typu Blender.
Teoretická část
15
V případě, že budeme chtít soubor otevřít, stiskneme klávesu F1 či klávesovou zkratku Ctrl + O a File Browser se nám otevře s možností Open. Další alternativou je přístup přes editor Info (File → Open). Pro ukládání souboru nám poslouží klávesnice F2, zkratka Ctrl + S (uložit) a Shift + Ctrl + S (uložit jako). Stejně jako u otevírání souborů, můžeme k ukládání přistoupit prostřednictvím Info editoru (File → Save As). Velmi užitečné je i přidávání knihoven. Umožní nám do našeho souboru přidat objekty, světla, materiály či dokonce i celé scény z jiných souborů typu Blender. K tomu účelu nám poslouží klávesová zkratky zkratkami Shift + F1, Ctrl + Alt + O. Záhlaví, které se zde nachází, nám nabízí několik užitečných voleb, nápomocných při prohlížení souborů. Jedná se o řadící funkce, kdy máme možnost seřadit soubory abecedně, podle času uložení nebo i podle velikosti. Zobrazení souborů (seznam, podrobnosti, vedle sebe) funguje klasicky, jak jsme zvyklí i z Windowsů. Při vyhledávání souborů mohou být užitečná tlačítka na vytřízení souborů. Můžeme si nechat zobrazit pouze soubory typu Blender, videa, obrázky, složky, skriptovací soubory nebo jejich kombinace. 2.2.4
User preferences
V Blenderu můžeme přizpůsobit výchozí nastavení a v případě, že budeme spokojeni, uložit jej pomocí Info editoru (File → Save User Settings). Pokud však neodpovídá našim potřebám, můžeme je snadno vrátit na původní (File → Load Factory Settings). Blender nabízí opravdu širokou škálu různých uživatelských voleb. Pro přehlednost je tvůrci rozdělili do 7 oblastí, z nichž každá nabízí velké množství nastavení, zmíníme jen ty nejdůležitější. 1.
Interface (Rozhraní) Konfigurace rozhraní umožňuje změnit způsob zobrazení prvků uživatelského rozhraní a jejich reakcí. V nabídce Display se objevuje několik zaklikávacích nabídek, pro zobrazení konkrétních věcí ve 3D pohledu, z nichž některé jsou Object Info (název aktivního objektu), View Name (název pohledu), Display Mini Axis (osy). Manipulator – umožňuje zobrazení manipulátoru a nastavení jeho velikosti a velikosti šipek.
2.
Editing (Úprava) Zde lze zadat údaje, které ovlivňují fungování některých příkazů. Například v nabídce Undo můžeme zadat počet kroků, které si Blender má pamatovat, a které jsou využívané při volbě Zpět. Na-
16
Teoretická část
jdeme zde i několik voleb ke klíčování, které je užívané v animacích. Tato problematika bude popsána v editoru DopeSheet. Pod položkou Dulicate Data, která je zde také uvedena, můžeme najít data, která jsou při kopírování objektu přenášena na objekt nový, aniž bychom se o to museli starat. 3.
Input (Vstup) Umožňuje vám nastavit, jakým způsobem bude Blender reagovat na klávesnici či myš, a to pomocí správy předvoleb, kde si nastavíte vlastní klávesové zkratky, se kterými budete pracovat. Pouhým kliknutím na plusko můžete přidat předvolbu, která vám v nastavení chybí a naopak mínuskem ji odstranit.
4.
Addons (Doplňky) Karta doplňků umožňuje spravovat sekundární možnosti, které nejsou v Blenderu povoleny ve výchozím nastavení. Výsledkem tvorby vývojového týmu společnosti Blender je dnes i možnost instalace nových doplňků, kterých se poslední dobou objevuje více. Pro tuto práci je důležitým doplňkem Game Engine: Save As Game Engine Runtime, která se nachází v kategorii Game Engine. Umožňuje vyexportovat naši práci ve formátu exe.
5.
Themes (Témata) Jak již bylo několikrát zmíněno, Blender 2.5x je velmi přizpůsobivý uživatelským potřebám. Na záložce Themes lze nastavit jakýkoli editor, který si zvolíte. Stačí si vybrat a pak už jen nastavovat barvy. Tyto změny se okamžitě promítají v 3D okně.
6.
File (Soubor) Při práci na důležitém projektu je důležitá jeho konfigurace. Musíme nastavit cesty k různým typům souborů, které budeme používat (fonty, textury, skripty, zvuky…).
7.
Systém (Systém) Lze zde nastavit možnosti pro zvuk (vstupní zařízení, počet zvukových kanálů, frekvence, formát), videoukázky (FPS), osvětlení, sekvence aj.
2.2.5
Logic Editor
Grafický editor určený pro vymezení logického interaktivního chování bez programování. Kombinacemi senzorů, regulátorů a pohonů můžeme rozpohybovat různé objekty, zviditelnit je za různých okolností, načítat nové scény i animace.
Teoretická část
17
Senzors (Senzory) – joystick, klávesnice, myš, blízkost, vlastnosti, náhoda, kolize, vždy, pohon, zpráva, paprsek, radar, zpoždění, dotek. Controllers (Regulátory) – and, or, nand, nor, xor, xnor, expression, python. Actuators (Pohony) – akce, kamera, omezení, úprava objektu, filtr 2D, hra, zpráva, pohyb, rodiče, vlastnosti, náhoda, scéna, viditelnost, stav, řízení, zvuk. 2.2.6
Node Editor
Jak již název napovídá, tento editor je složen z kartiček. Každá disponuje určitými vlastnostmi a několika vstupními a výstupními sokety. Různé kombinace propojení, které tento editor poskytuje, nám může přinést požadovaný výsledek materiálu. Nejdůležitějšími nabídkami je Add a Node nabídka. Přičemž Add nám umožňuje přidávat jednotlivé nody (vstupy, výstupy, filtry, skupiny, vektory, barvy) a Node umožňuje práci s těmito nody. 2.2.7
Text Editor
Může posloužit pro psaní skriptů potřebných v naší práci. V záhlaví se vyskytuje několik nabídek jako zobrazení čísla řádků, zalomení řádků a zvýraznění syntaxe. Po kliknutí na tlačítko New se nám zobrazí prostředí textového editoru, do kterého je možné zapisovat. Verze 2,5x již obsahuje také Templates. Zvolme si, jaký typ budeme potřebovat a poté se zobrazí kostra skriptu. Jedinou chybou těchto příkladů je však to, že jsou z části napsané pro starší verze a na 2.5x nefungují správně. Nabídka Text nám umožňuje vytvářet nové textové soubory či je pouze otevírat. 2.2.8
Video Sequence Editor
Ne až tak známá je v Blenderu schopnost editace videa a zvuku. Ve skutečnosti se jedná o plnohodnotný nelineární editační modul, který umožňuje aplikovat řadu efektů, stejně jako dělat jednoduché úkoly, jako míchání klipů, doplňování přechodů, střih… 2.2.9
UV/Image Editor
Jedná se o velmi užitečný nástroj, díky kterému můžeme texturovat i složitější objekty, jako je obličej. V záhlaví tohoto editoru se nachází 3 jednoduché volby. Nabídka View umožňující přepínat pohled, tentokrát však ne tak, jak jsme zvyklí z 3D View. Jedná se o 2D pohled, a proto tato volba umožňuje pouze pohled přibližovat či oddalovat. V nabídce Image můžeme vytvořit novou
18
Teoretická část
jednoduchou texturu, které nastavíme barvu a velikost a následně ji aplikovat na objekt. Další možností je otevřít obrázek a díky File Browseru ho vyhledat. Po těchto krocích většinou následuje proces nazývaný UV mapování. Tento proces bude popsán níže. 2.2.10 NLA Editor Umožní nám provádět nelineární animace, které jsou vytvořeny z malých kousků (kroků). Ty lze aplikovat na různé objekty a vytvářet tak složitější animace. NLA tvoří systém vrstev obsahující jednotlivé skladby. Na spodní vrstvě se vyskytuje první skladba a na vrchní vrstvě skladba poslední. 2.2.11
DopeSheet Editor
Zatímco klasičtí, ručně kreslící animátoři (často grafy) ukazují, kdy přesně nastal nějaký pohyb na každém výkrese, zvuku či kameře a také na jak dlouho, DopeSheet v Blenderu vyobrazuje pouze náhled na všechny objekty ve scéně. Existují čtyři základní pohledy na Dopesheet. Action Editor, Dopesheet, Shape Key a Grease Pencil. To všechny zobrazují různé kontexty animace. 2.2.12 Graph Editor Dříve známý jako IPO Editor určuje, jak jsou klíčové snímky interpolovány pomocí F-Curve. Ty se již v Blenderu 2.6 nevyskytují pod tímto názvem, ale jsou zahrnuté v Action, což je jeden z pohonů v Logic Editoru. Na levé straně editoru se vyskytuje seznam kanálů nebo atributy, které obsahují animační data vztahující se k nim. Můžeme filtrovat vše, co se zde objeví. Chceme-li přepnout zobrazení plochy v grafu, pouze zaškrtneme nebo zrušíme zaškrtnutí políčka vedle kanálu. Záhlaví obsahuje několik voleb: View – možnosti nastavení zobrazení, Select – možnosti pro výběr klíčových snímků, Marker – pro práci se značkami, Channel – pro spolupráci s F-křivkami a animačními kanály, Key – pro úpravu klíčových snímků. Přepínat se můžeme mezi dvěma režimy. F-Curve Editor je defaultní režim, který umožňuje práci s F-Curves, upravit body F-Curves, aplikovat modifikátory na F-Curves. Oproti tomu režim Driver umožňuje upravovat ovladače tak, že při změně jednoho atributu (objektu) se změní atribut jiný.
Teoretická část
19
Dalších několik tlačítek, které se v záhlaví vyskytují, jsou určeny pro redukování toho, co se má v grafu zobrazovat. 2.2.13 Timeline Časová osa, označená ikonou hodin, ve skutečnosti není editor, ale spíše informační okno, ve kterém můžeme provádět drobné úpravy. Udává nám přehled o části animace ve scéně, a to buď v rámech, nebo sekundách. Jedná se o jednorozměrné okno, v jehož záhlaví najdeme tři nabídky a VTR tlačítka (Video Topice Recorder). View – řídí vše, co vidíme. Umožňuje nám maximalizovat okno, zobrazit celý animační rozsah čili od prvního do posledního snímku, přechod na předchozí klíč či marker. Frame – zahrnuje 2 funkce – nastavit jako začátek, nastavit jako konec. Tyto dva příkazy nastavují aktuální snímek na vybranou pozici. Playback – nastaví, jak a kde se animace přehraje. Obsahuje několik zaškrtávacích možností, podle kterých se určuje, co vše bude zahrnuto do režimu přehrávání. VTR tlačítka nám umožňují navigaci v animaci. Play spustí přehrávání. Po spuštění se toto tlačítko změní na Pause. První a poslední tlačítko nás přepne na začátek nebo konec rámu. Poslední dvě nás posouvají o klíčový snímek vpřed či vzad. 2.2.14 Outliner Stejně jako Timeline, jedná se spíše o informativní okno, které nám podává informace o všech našich scénách a objektech, které se v nich vyskytují. Můžeme si nechat zobrazit všechny data ve scéně, vybrat/zrušit výběr objektů ve scéně, skrýt/zobrazit objekty ve scéně, povolit/zakázat výběr, odstranit objekty, zrušit propojení mezi objekty, … Může nám být nápomocný například při změně materiálu na jednom objektu. Outliner nám umožní sledovat, na jaké další objekty se ještě změna promítne. 2.2.15
Properties Editor
Záložky pro tento editor nalezneme v horní části okna. Jsou seřazené od základních až po ty více specifické (Render, Scene, World, Object, Object constraints, Object Modifiers, Object Data, Material, Textures, Particles, Physic). Každá z těchto záložek obsahuje mnoho panelů, ve kterých se ukrývají nejrůznější možnosti. Zmíníme pouze ty nejdůležitější. V záložce Render se nachází možnosti pro práci s vrstvami. Můžeme zde pozorovat, v jaké vrstvě se vybraný objekt nachází. Jak již název napovídá, vyskytuje se tu možnost renderování, a to jak obrázku, tak i animace. S tím je spojena i možnost výstupu, ve které můžeme nasta-
20
Teoretická část
vit do jaké složky se rendery ukládají, v jakém formátu a při jaké kompresi. V záložce Scene je velmi důležitým nastavením nastavení gravitace, která je defaultně nastavená jako gravitace země, a která ovlivňuje veškeré objekty ve scéně. World, nám umožní nastavit barvu prostředí, ve kterém se po exportu budou objekty (scéna) nacházet. Je možné této barvě nastavit i přechody. Pokud bychom chtěli přejmenovat název objektu, který vymodelujeme, můžeme tak učinit v záložce Object, kde můžeme i změnit polohu objektu, jeho rotaci a velikost. Pro zobrazení os objektů, názvu, mřížky a hranic slouží zaklikávací možnosti. Velmi důležitá volba je i Object Modifiers, kde si můžeme zvolit změnu, kterou s objektem chceme provést. Známé jsou Boolean, kde objekty můžeme odečítat či sčítat, vyhlazování objektů, simulace vody či kouře a spousta jiných možností. Material nám umožňuje natavit barvu objektu, intenzitu barvy, průhlednost, intenzitu odrazu okolí (zrcadlo) a stíny. Spolu s materiálem souvisí existence textury, kterou může být obrázek, video či nějaký vzor (proužky, tečkování, čmouhy…). Nastavení mapování textury se vyskytuje v panelu Mapping. 2.2.16 Python Console Jedná se o interaktivní konzoli, jejímž prostřednictvím můžeme vykonávat všechny funkce, které se v možnostech Blenderu vyskytují. Při jejím spuštění můžeme získat informace o verzi Pythonu, kterou naše verze Blenderu využívá a o modulech, které obsahuje a které nemusíme později importovat.
Vlastní práce
21
3 Vlastní práce Po tom, co jsme se teoreticky seznámili s prostředím Blenderu, je načase přejít k vypracování vlastní práce čili vytvořit 3D model budovy Provozně ekonomické fakulty. Dále si na dvou případech řešení ukážeme, jak by kamera mohla projít scénou bez jakéhokoli zásahu zvenčí a provedeme analýzu interaktivního průchodu scénou realizovanou skriptem vytvořeným v programovacím jazyce Python.
3.1 Základní nástroje Blenderu pro tuto práci Asi nejdůležitějšími technikami modelování a také nejčastěji používanými jsou Extrude Region, extrudování (vytažení), a Make Edge/Face, přemostění. Ukážeme si jednoduchý příklad pro pochopení. Vložíme si do scény plochu (Add → Mesh → Plane) Přepneme se do editačního módu (Tab) V záhlaví 3D okna zvolíme mód pro výběr hrany, jednu z hran označíme Vymažeme ji (x → Edges). Tím jsme se zbavili plochy V záhlaví se přepneme do módu pro výběr vertexů a onačíme dva protilehlé, mezi kterými se utvořila mezera
Obr. 2
Krok před přemostěním
Přemostíme (F)
22
Vlastní práce
Extrudujeme podle osy Z o 0,05 (E → Z → 0,05) V záhlaví zvolíme mód pro výběr bodů a označíme všechny body (A) Stiskneme E pro extrudování a okamžitě potvrdíme Enterem Vybereme kurzor Individual Origins Zmenšíme (S) o 0,9 Přepneme se zpět do objektového módu (Tab) Tím jsme vytvořili jednoduchý rám okna.
Obr. 3
Výsledný rám okna
Při extrudování je ovšem nutné si dávat pozor. Mohou vznikat nežádoucí plochy navíc. Pro jejich odstranění v postranním panelu 3D okna existuje volba Remove Doubles. Pokud je využita funkce přemostění, vytváří se hrany, pokud jsou označeny dva vertexy jak znázorňuje Obr.3. Při označení 3–4 vrcholů vzniká plocha. Tuto funkci se nám nepodaří použít, pokud by byly označeny více než 4 vrcholy. Dalšími používanými technikami jsou – Knife (K) a Subdivide. Nůž umožňuje přeříznutí plochy či hrany. Při stisknutí kombinace kláves Shift + K a následném provedeném řezu se plocha/hrana přepůlí. Oproti verzi Blenderu 2.4x zde chybí možnost Multi Knife, jejímž parametrem byl počet řezů, kterými Blender sám rozdělil plochu/hranu na rovnoměrné kusy. Subdivide, jak již název naznačuje, tuto možnost částečně nahrazuje. Problémem však je, že počet částí, na které dělí je vždy sudý.
Vlastní práce
23
UV mapování – je jedním z nejlepších způsobů, jak v Blenderu nanést texturu. Označíme objekt, který bude mapován, přepneme se do editačního módu a vybereme hrany, které budou tvořit šev.
Obr. 4
Znázornění švu
V místě tohoto švu se objekt v 2D pohledu (UV/Image Editor) roztrhá a my snadno nastavíme texturu.
Obr. 5
Možnost Unwrap
Po tom, co jsme označili místa pro švy, stiskneme zkratku Ctrl +E a vybereme možnost Mark Seam. Označená místa zčervenají, což znamená, že švy byly aktivovány. Jak vidíme na Obr. 4.
24
Vlastní práce
Nyní označíme celý objekt a stiskneme U pro zobrazení možností UV mapování. Vybereme možnost Unwrap. V UV/Image editoru se zobrazí roztrhaná síť podle švů, které jsme označili. Vložíme obrázek, který chceme nanést na objekt a síť nastavíme tak, jak bude potřebné. Tím je textura nastavena a my se můžeme přepnout zpět do objektového módu.
3.2 Modelování Před začátkem modelování, pokud je v plánu rozsáhlejší projekt, je ideální si rozvrhnout obsahy jednotlivých scén. Důvodem tvorby scén je právě složitost modelu. Pokud bychom po exportu načítali celou budovu, značně by to ovlivnilo funkčnost. Ve scéně by se vyskytovalo příliš mnoho objektů a model by nemusel být spustitelný. V našem případě se první modelovaná scéna bude skládat z chodby v přízemí, studovny a prvního až čtvrtého poschodí. Další důležitou scénu bude tvořit schodiště vymodelované od sklepa po páté patro a zbylými scénami budou jednotlivé místnosti, jako jsou toalety nebo posluchárny. 3.2.1 1.
Scéna s názvem „prizemi“
Tvorba zdí Pro lepší výsledek naší práce je možno si do Blenderu vložit obrázek půdorysu přízemí univerzitní budovy, a to pomocí panelu ve 3D okně (Backgroun Images). Také je možno si nastavit, v jakém z pohledů bude obrázek viditelný. Tento postup nám značně usnadní práci. Poměry stran modelu budovy zůstanou zachovány podle reality. Přepnutí se do drátového zobrazení nám umožní lépe umístit hrany či vertexy, vložené plochy, podle obrázku na pozadí. K tomu je také potřebné mít aktivovaný editační mód. Následně extrudujeme hrany představující zdi do požadované výšky podle osy Z. Tím jsme dali vzniknout základům zdí. Aby to však nebyly pouhé plochy, především v místech, kde budou dveře zasunuté do zdí, musí být plochy extrudovány i do šířky. Za pomoci již zmiňovaného nástroje Knife, utvoříme ve zdech výřezy, které budou po vymodelování dveří zaplněny. Nyní už jen zbývá vytvořit pro veškeré zdi v budově požadovaný materiál s názvem „Stena“. Nastavením lesku na hodnotu 0 a bílé barvy, jejíž intenzita je snížena, dosáhneme požadovaného výsledku. Stejným způsobem vytvoříme i zdi v poschodích.
Vlastní práce
2.
25
Modelování dveří Dalším krokem modelu bude vytvoření dveří a následné zasazení do vyříznutých děr ve zdech. Ve scéně, stejně jako v realitě, se vyskytují 4 druhy dveří. Jak můžeme vidět níže na obrázku níže.
Obr. 6
Typy dveří
Při modelu dveří budeme postupovat obdobným způsobem, jako bylo popsáno pro modelování rámů oken. Výplně dveří tvoří vložená krychle, která je zpracovaná do tvaru podle předloženého obrázku. Pokud budeme vytvářet dvojité sklo, nevkládáme krychli, ale pouze 2 plochy, tím ušetříme 4 plochy, které zbytečně, obzvlášť při rozkopírování objektu scénu zatěžují. Materiál s názvem „sklo“ pro první 3 typy dveří je totožný. Jeho barva je světle šedá, odlesk i průhlednost jsou staženy na polovinu. Z důvodu, že je obrázek pořízen při zobrazení Solid, průhlednost není viditelná. Poslední vyobrazené dveře jsou vymodelovány pro třídy v poschodích. Jejich sklo s názvem „sklo_matne“ je nastaveno dosti podobným způsobem, viditelný rozdíl je pouze v barvě, která je nastavená na zelenomodrou. Kliky jsou vložené 2 válce, jejich materiál „kov“, má nastavenou hodnotu odlesku i zrcadlení, bohužel zrcadlení není volbou Blender Game, ale pouze Blender Render. Při průchodu scénou tedy žádné zrcadlení vidět nelze. Pro snazší manipulaci s již hotovými dveřmi, můžeme objekty, které dveře tvoří spojit do jednoho objektu Ctrl + J (Join). 3.
Okna Po vytvoření oken, jejichž vzhled se lišil pouze ve tvaru rámů, bylo nutné nastavit neprůhlednost skla právě na těch oknech, které jsou nasměrovány ven ze scény. Například dveře na schodiště. Za těmito dveřmi je prázdno, i když bychom očekávali průhledná skla
26
Vlastní práce
a za nimi model schodiště. To je ovšem součástí jiné scény, konkrétně scény „schodiste“. Abychom tedy nehleděli do prázdna, musí být skla nastavena jako neprůhledná. Ostatní skla jsou nastavená stejně jako skla u prvních třech typů dveří. 4.
Zem Zem v přízemí je vložená a zvětšená plocha, do které bylo nutné vyříznout díru pro vstup do sklepní části. Na tuto plochu naneseme texturu s názvem „kachle.jpg“ a tuto texturu namapujeme. Plochu extrudujeme a na spodní stranu naneseme materiál „Stena“. Tím vznikl i strop. Stejným způsobem byla vytvořena i podlaha v poschodích, pouze s rozdílnou texturou.
5.
Dvorek Uprostřed budovy se nachází dvorek, na němž je vydlážděné místo pro posezení a okna do podzemních laboratoří, kolem nichž jsou nasypané kameny. Místo toho, abychom modelovali kamínek po kamínku, což by značně zatížilo scénu, na plochu naneseme texturu kamení. Několikrát aplikujeme nástroj Subdivide pro vytvoření sítě. Přepnutí se do módu Sculp ve 3D okně nám umožní zdeformovat síť, abychom vytvořili nerovný terén.
Obr. 7
6.
Vertexy sedátek
Třídy Scéna „prizemi“ obsahuje i modely dvou tříd, konkrétně Q21 a Q28. Pro vytvoření byl použit tvar kvádr a plocha, které byly následně upravovány do požadovaného tvaru úpravou vertexů. Třídy obsahují
Vlastní práce
27
židle, stolky, katedru, tabuli a sloupy se zábranami kolem oken. Kupříkladu sedátko židle je vytvořeno z plochy, kterou je třeba upravit do podoby obdélníku, použít nástroje Subdivid a Extrude a vertexy rozmístit podle Obr. 7. 7.
Indikátor možnosti prohlédnutí místnosti Po celé scéně (i v ostatních scénách) jsou rozmístěny šipky dvou barev, zelená a oranžová. Ty jsou pouze doplněním modelu. Slouží pro lepší orientaci ve scéně. Při budoucím interaktivním průchodu budou naznačovat, která místa budou k prohlédnutí. Zelená šipka nám bude napovídat o vymodelované scéně a oranžová o náhledu na fotografii třídy.
8.
Epmty objekty Tyto objekty se vyskytují ve všech scénách, které jsou vymodelované pro interaktivní průchod. Představují pozice, na které bude kamera při příchodu z jiné scény nastavována. Kamera přebírá orientaci a lokaci Empty objektů, jejichž název je Cam_poz. Je proto nutné, aby tyto objekty byly přesně umístěny ve scéně na příslušné pozice (Před/za dveře). Proměnnou Empty, je hodnota datového typu string, obsahující název dveří. Veškeré dveře, které budou propojené s jinou scénou, obsahují také proměnnou tohoto typu. Název dveří a Empty objektu, musí být totožný, právě pro spojení scén. Toto propojení bude popsáno v podkapitole Načítání scén.
3.2.2
Scéna s názvem „schodiste“
Tato scéna je vymodelovaná obdobným způsobem jako předchozí. Na pozadí byl vložen obrázek půdorysu, aby poměr stran dveří, zdí a oken zůstal zachován se scénou předcházející. Je použito především přidávání a zpracování kvádrů a ploch. Novým prvkem, který se zde vyskytuje oproti předešlé scéně, je přidání Textu. Mezi výtahy je vymodelovaná informační cedule, na které bude vyobrazeno číslo podlaží. Přidáme do scény Text. Díky editačnímu módu jej přepíšeme na příslušné číslo. V editoru Properties se objeví nová záložka Object Data, kde můžeme nastavit různé vlastnosti tohoto textu, jako je barva, velikost, rotace a například font, který si můžeme sami přidat do Blenderu. Následně Text přiložíme do blízkosti cedule. Stejným způsobem můžeme vytvořit i cedule s názvy ústavů, které se vyskytují na jednotlivých patrech. Scéna obsahuje objekty, které již byly vymodelovány ve scéně předchozí. Abychom je nemuseli opět vytvářet, využijeme možnosti kopírování mezi scénami. Po označení objektu, který bude součástí i jiné scény zvolíme možnost Object → Make Links → Objects to Scene a vybere-
28
Vlastní práce
me výslednou scénu, ve které se objekt objeví. Tento objekt je však součástí obou scén a při jeho manipulaci (přesouvání, otáčení…) bude změna viditelná v obou scénách. Pro to je vždy lepším řešením objekt, na který jsme vytvořili odkaz v nové scéně zkopírovat a znovu jej do scény vložit. Tím nám vznikne objekt nový. 3.2.3
Scéna s názvem „Q02“
Nejdůležitějším prvkem, který zde byl aplikován, je modifikátor Subsurf, který zakulacuje hrany. Jak je vidět na obrázku, stále se objekt skládá ze stejného počtu vrcholů. Z krychle tak dokáže udělat i kouli, která bude obsahovat pouze 8 vrcholů.
Obr. 8
Modifikátor Subsurf
3.2.4
Scény s toaletami
Modifikátor Boolean umožňuje dva objekty sjednotit, vytvořit jejich průnik či jeden od druhého od sebe odečíst. Pro vytvoření umyvadla je zapotřebí od připraveného kvádru odečíst do něj ponořenou kouli, tím se do kvádru vytvoří otvor, který představuje umyvadlo. Koule je však složená z několika ploch, a tak její povrch není hladký. Proto může být použit nástroj Smoot který se nachází v panelu 3 D okna. Pisoáry mohou být vytvořeny kupříkladu vložením dvou kvádrů, které se přes sebe překryjí špičkami, aplikuje se modifikátor Boolean a od spodního kvádru se odečte vrchní. Tím nám vznikne děravý kvádr, jehož stěny jsou pouhé plochy. Extrudováním necháme vzniknout širší stěny kvádru a na pisoár aplikujeme modifikátor Subsurf. Na vnitřní plochy pisoáru může být použit materiál tmavší barvy pro vytvoření dojmu stínu. 3.2.5
Scény s fotografiemi
Práce obsahuje několik scén, jejichž účelem není interaktivní průchod, ale pouze náhled fotografií. Jednou z nich je scéna „UVOD“. Na pozadí této scény je fotografie budovy Q MENDELU (Gruber, Mádle, 2011). Dalšími takovými scénami jsou třídy„Q38“, „Q04“ a posluchárna „Q01“.
Vlastní práce
29
Každá z těchto scén obsahuje 2 plochy, jednu s nanesenou texturou fotografie a další, která tu představuje přepínací tlačítko. Kamera v takto tvořené scéně je nasměrovaná na plochu s fotografií. 3.2.6
Problémy při modelování
Blender nám nabízí možnosti stínování a odlesků. Ne všechny druhy grafických karet jsou schopny tyto možnosti zobrazit. Některé je pouze nepodporují (grafické karty Intel), tak scénu vyobrazí bez nich. Některé další ale mají s tímto druhem stínování problém a po vyexportování nezobrazí nic (některé z řad grafických karet NVIDIA). Z toho důvodu raději stínování vypneme. Scéna se tím značně ochudí. Proto si můžeme poradit jinak. Strop a některá zákoutí scény nastavíme o stupeň tmavším odstínem barvy. Tím nám vzniknou přechody a obraz nebude slitý to jednoho celku. Při zobrazení Textured, ve kterém budeme i na konci soubor exportovat, se některé plochy vykreslují černě a některé jsou neviditelné. Důvodem černého zobrazení může být, že povrch nemá přiřazený žádný materiál. Oproti tomu neviditelná plocha může být chybou exportu, která může být odstraněna novým exportováním, popřípadě exportováním v jiné verzi Blenderu. Dalším častým problémem při zneviditelnění ploch je, že povrch má špatně otočené normály. To opravíme tak, že v editačním módu stiskneme W a vybereme Flip Normals. Označíme plochu, která je špatně zobrazená a stiskneme Ctrl + N. Tím se nám normála otočí a my můžeme soubor exportovat bez chyb.
3.3 Navigace a průchod scénou Pro pohyb kamery ve scéně, kterou by žádným způsobem neovlivnil zásah uživatele, bychom mohli využít dvou možností. 3.3.1
Animace kamery po křivce
Do scény je vložena Bezierovu křivka, která je podle naší scény v editačním módu vymodelována způsobem, aby po ní kamera mohla projít všemi zákoutími budovy. Je nutností zapnout v Properties v záložce Object Data tlačítko 3D. Kdybychom neměli podlažní budovu a pohybovali bychom se pouze v přízemí, 2D by postačilo. Křivka v této práci však musí být nasměrovaná i do schodů, pro tento účel poslouží třetí rozměr. Po tom, co je křivka vymodelovaná, přidáme do scény kameru na začátek cesty (křivky). K vybrané kameře označíme i křivku a přiřadíme Fllow Path vyvoláním nabídky Set Parent To (Ctrl + P). Tímto způsobem je nastavená animace kamery, jejíž pohyb bude kopírovat tvar křivky. Důležitým a také posledním krokem je nastavení snímků animace. Stále
30
Vlastní práce
v Object Data v panelu Patch Animation nastavíme Frames tak, aby nám vyhovovala rychlost kamery. 3.3.2
Klíčování snímků
Jak již bylo v předchozím textu zmíněno, k animaci jakéhokoli objektu ve scéně slouží DopeSheet Editor. Po vložení kamery do scény a jejím nastavením na pozici, ze které bude vycházet, můžeme začít s nastavením animace. Ve 3D pohledu stiskneme I, což nám vyvolá nabídku pro vkládání klíčů. Z důvodu, že naše kamera bude měnit pozici i orientaci, zvolíme klíč LocRot. V animačním okně je počet snímků nastaven na 0, což značí počáteční pozici. Ukazatel posuneme o určitý počet snímků, následně posuneme i kameru a opět vložíme klíč. Tímto způsobem budeme postupovat a rotovat kameru, dokud neprojdeme celou scénu. Natavení je v obou případech, co se týče náročnosti, dost podobné. Je už jen na nás, jestli raději budeme pracovat s křivkou a pro případné změny ji upravovat v editačním módu, nebo budeme pracovat s DopeSheet editorem a změny provádět pouhým posouváním ukazatele a vkládáním klíčů.
3.4 Analýza interaktivního průchodu Blender nám nabízí dvě možnosti, jak přistoupit k pohybu kamery. Jednou z nich je nastavení pohybu kamery v Logic Editoru, dalším je skript v programovacím jazyce Python. Před tím než přistoupíme k popisu dané problematiky, řekneme si něco o samotném Pythonu. 3.4.1
Python
Jazyk Python začal vznikat v roce 1989 ve výzkumném ústavu v Amsterodamu, kde vznikl promyšlený jazyk, který je stále ve vývoji. V současné době běží na mnoha platformách. Jedná se o čistý objektový jazyk se správou výjimek, mnoha vysokoúrovňovými typy (řetězce, seznam, asociativní pole), plně podporující Unicode3, lze jej doplnit o vlastní vestavěné typy a funkce pomocí C/C++, nebo naopak lze interpret začlenit do programu v jiném jazyce. Základní balík obsahuje velké množství modulů. (Švec, 2003) Jedná se tedy o čistě textové soubory, jejichž programový kód musí splňovat pravidla, který tento programovací jazyk vyžaduje. V samotném Blenderu pouze zadáte příkaz pro spuštění tohoto programového kódu a zadané příkazy se provedou.
3
Unicode – sada univerzálních kódovacích znaků (standard kódování)
Vlastní práce
31
V případě potřeby nějaké jiné funkce či objektu, které nejsou v modulu Blenderu k dispozici, je třeba mít v počítači nainstalovaný jazyk Python. Ten nabízí standardní moduly (např. pro typické matematické operace), případně i některé další rozšiřující moduly, například pro práci s bitmapovými obrázky. (Atlantida Publishing, 2009) 3.4.2
Implementace průchodu
Jak již bylo řečeno, existují 2 možnosti jak k pohybu kamery přistupovat. Nejdříve je však nutností kameru do scény vložit a nastavit ji tak, aby odpovídala našim potřebám, tj. kamera by neměla procházet zdmi, měla by nám umožnit chůzi do schodů a měla by být v dostatečné výšce. Kameře je přiřazen rodič, Empty object (Ctrl + P), jehož fyzika je zvolena na hodnotu Dynamic, což zabrání průchodu zdí. Pokud budeme chtít, můžeme použít i volbu velikost rádia k tomu, aby se nám kolem kamery utvořil štít. Na vzdálenost, která je nastavená, se pak kamera nepřiblíží k jiným objektům. Kamera, která je potomkem Empty objektu, nemá zvolenou fyziku na Dynamic nýbrž Static. Tím zabráníme tomu, aby kamera po spuštění aplikace spadla na zem. Pro kameru neplatí globální souřadnicový systém, přebírá lokální souřadnice podle rodiče. Což znamená, že při pohybu vpřed, se kamera posune přesně o tu samou vzdálenost jako Empty. Ve všech ostatních scénách, které vyžadují interaktivní pohyb, je kamera implementovaná tímto způsobem. 1.
Konfigurace v Logic Editoru Existencí 4 senzorů typu Keyboard pro pohyb všemi směry, 4 regulátorů typu And a 4 pohonů typu Motion, které jsou propojeny, zajistíme, aby příslušná kamera byla schopna se pohybovat po scéně. Pro každý senzor je nutností nastavit tlačítko, pod kterým bude reagovat (př. Pohybu vpřed přísluší šipka dopředu). V Pohonu pod políčko Loc udáme vzdálenost, o jakou se při stisku bude Empty objekt a s ním i kamera posouvat.
2.
Tvorba skriptu „move“ Druhý způsob jak přistupovat k pohybu kamery je prostřednictvím skriptu. Kamera i s jejím rodičem zůstávají nastaveny stejně jako u prvního případu. Změnila by se pouze situace v Logic Editoru pro Empty objekt. Namísto 4 pohonů a 4 regulátorů zůstává od každého typu pouze jeden. Stejně jako v předchozí situaci jsou vytvořeny 4 senzory typu Keyboard. Ty jsou propojené s jedním regulátorem typu Python, který napojíme na pohon typu Motion. Nastaven
32
Vlastní práce
je pouze regulátor, a to na název skriptu, se kterým ho chceme propojit. V našem případě se jedná o skript „move“. import bge def main(): cont = bge.logic.getCurrentController() own = cont.owner První řádky se budou opakovat v každém skriptu, který se v této práci vyskytuje. Na prvním řádku je importován bge modul, který nám propojuje skript s Logic Editorem. Druhý řádek je ovšem novinkou. Ve starších verzích Blenderu se nevyskytoval. Jedná se o definování hlavní části programu. Začíná na tomto řádku a končí u main(). Proměnná cont v sobě zachovává všechny řadící prvky objektu, ze kterého je skript spuštěný. Own zastupuje objekt samotný. V našem případě Empty objekt. up = cont.sensors["up"] down = cont.sensors["down"] left = cont.sensors["left"] right = cont.sensors["right"] move = cont.actuators["move"] Na těchto řádcích propojujeme skript s existujícími prvky Logic Editoru. Proměnným up, down, left a right přiřazujeme jejich senzory s názvy uvedenými v hranatých závorkách. Move je propojen s pohonem s názvem move. Python je inteligentní a není tedy nutností nastavovat, jakého typu proměnná je. Podle toho, co mu přiřadíme, si to sám určí. loc = [0,0,0] rot = [0,0,0] value = 0.05 value2 = 0.025 if(up.positive): loc[2] = -value if(down.positive): loc[2] = value if(left.positive): rot[2] = value2 if(right.positive): rot[2] = -value2
Vlastní práce
33
Za předpokladu, že podmínky příkazů if jsou splněny (některá z kláves je stisknutá), lokace/rotace se nastaví na ose Y/Z podle přiřazené hodnoty. move.useLocalDLoc = True move.useLocalDRot = False move.dLoc = loc move.dRot = rot Pohon move obsahuje proměnné useLocalDloc a useLocalDRot. Nastavením na True nebo False aktivujeme/deaktivujeme, jestli se proměnná stává lokální. Do proměnných dLoc a dRot přiřazujeme jejich hodnoty. Předposlední řádek skriptu nám spouští pohon s názvem move. cont.activate(move) main() Při používání více scén a více kamer, které scénami budou proházet, bude snazší používat při nastavování pro pohyb kamery skript, než všechny volby v Logic Editoru neustále přenastavovat. Navíc pro případné jiné práce, ve kterých bude nutná interaktivní kamera, může být tento skript jednoduše importován i do ní. Tímto jsme zajistili pohyb kamery po scéně. Kameru umístíme mezi prosklené dveře hlavního vchodu, abychom při průchodu scénou měli pocit, že jsme do budovy opravdu vstoupili. 3.4.3
Animace dveří
Nyní musíme tyto dveře otevřít. V editačním módu, po označení celých dveří, ohnisko objektu přesuneme na jeho kraj (bude vynahrazovat panty dveří). Ted již opět v objektovém módu bude vytvářená animace samotná. Otevřeme si editor DopeSheet a přesuneme kurzor na 0 snímků. V 3D pohledu vyvoláme nabídku Insert Keyframe Menu (I) a vybereme pouze Rotaci. Ukazatel posuneme o 40 snímků a dveře necháme rotovat okolo osy Z o 90°. Opět tento krok naklíčujeme a tím se nám promítne v Dopsheet Editoru. Mezi snímkem 0–40 probíhá animace otevírání dveří. Ukazatel posuneme o 60 snímků dále a vložíme klíč. Po tuto dobu zůstávají dveře otevřené. Následovat bude animace zavření dveří, která je utvořena naprosto stejným způsobem jako otevírání, jen s opačným směrem pohybu dveří. Abychom byli schopni dveře otevřít, vytvoříme pro ně v Logic Editoru 2 senzory (Keyboard, Near), které propojíme s regulátorem And a pohonem F-Curve. Pod tímto pohonem je právě skrytá animace, kterou jsme právě vytvořili. Výběrem možnosti End Loop zajistíme, aby nám po spuštění animace neprobíhala v nekonečné smyčce. End nastavíme na
34
Vlastní práce
200 snímků, což odpovídá délce animace. Near senzor přenastavíme na vzdálenost, která nám bude vyhovovat a Keyboard na klávesu Enter. Když nyní budeme v dostatečné vzdálenosti od dveří a stiskneme Enter, spustí se nám animace. 3.4.4
Zobrazení scén „Nápis_Vejit“ a „Informace“
Při průchodu by však bylo nepříjemné, kdybychom na náhodu zkoušeli, zda jsme už v blízkosti senzoru Near. Proto tento účel nám poslouží scéna s nápisem – Prohlédnout (Enter), která se nám v této vzdálenosti bude zobrazovat na popředí aktuální scény. Pro její vyobrazení můžeme využít také dvou možností. Nastavíme Logic Editor tak, jak je uvedeno na obrázku.
Obr. 9
Aktivování a deaktivování scény
Propojení Near sensoru, regulátoru And a pohonu Scene, který je nastaven na přidání scény do popředí zajistíme, že se nám text (scéna s textem) bude zobrazovat ve vzdálenosti Near. Připojení větve s regulátorem Nand a pohonem Scene nastaveným na vymazání scény, zajistíme, aby tento nápis po odstoupení zmizel. Nastavovat však všechny dveře tímto způsobem je značně zdlouhavé. Proto si raději vytvoříme krátký skript. msg = cont.actuators["msg"] if(ray.positive): msg.subject = "text_on" else: msg.subject = "text_off" cont.activate(msg) Pro jeho funkční spuštění musí být kamera v Logic Editoru nastavená podle následujícího obrázku.
Vlastní práce
35
Obr. 10 Kamera v logickém editoru
Senzor Ray obsahuje možnosti Ran, jak je vidět z obrázku velikost (vzdálenost) odpovídá stejné hodnotě jako Near senzor a také proměnnou, na kterou má reagovat. V našem případě se jedná o proměnnou door. Spolu se senzorem Keyboart jsou propojené s regulátorem typu Python s vloženým skriptem „vstup“. Ten obsahuje předchozích 6 řádků skriptu. Regulátor je dále propojen se 2 pohony typu Scene a Message pro pozdější využití přechodu do jiné scény. Když pak kamera tímto senzorem zasáhne dveře a je v dostatečné vzdálenosti, vyšle se zpráva „text_on“. Po zbylou dobu se vysílá zpráva „text_off“. Nastavíme si scénu „Text_vejit“. Pro zprávu „text_off“ nastavíme, aby nápis byl neviditelný a pro zprávu „text_on“, aby se zobrazoval. To vše za pomocí dvou senzorů Message a pohonů Visibility. Nyní již stačí u všech dveří, u kterých chceme, aby se nápis zobrazoval v Logic Editoru, nastavit proměnnou s názvem door. Na kameru následně nastavíme, aby se scéna Informace zobrazovala vždy v popředí aktuální scény (stejným způsobem, jak je vyobrazeno na obrázku). To nám umožní, aby informace, které lišta vymodelovaná v této scéně přináší, byly vždy viditelné. 3.4.5
Načítaní scén
V tuto chvíli máme již vše připravené pro to, abychom mohli projít celou scénou. V práci se však nachází scén několik, proto je nutností je navzájem propojit. Zbytek skriptu „vstup“ umožňuje přepínání scén. import bge def main(): GL = bge.logic cont = GL.getCurrentController() own = cont.owner
36
Vlastní práce
ray = cont.sensors["ray"] lmb = cont.sensors["lmb"] scene = cont.actuators["scene"] Proměnné ray a lmb vytváří propojení s existujícími senzory se stejným názvem. Senzor ray vysílá paprsek do přednastavené vzdálenosti. Pokud zasáhne objekt, v tomto případě dveře s proměnnou door, znamená to, že paprsek je aktivní. Zobrazí se nám nápis, jak již bylo vysvětleno, a po stisknutí klávesy Enter, se stává proměnná lmp aktivní. Podmínky příkazu if jsou splněny, proto přejdeme do jeho větve. if(ray.positive and lmb.positive): ob = ray.hitObject GL.door_name = ob["door"] scene.scene = ob["scene"] Do proměnné ob, se přiřadí objekt, který byl zasažen paprskem ray. Tento objekt má uložené v Game Logic 2 proměnné (door a scene). Obě jsou datového typu string. V obsahu proměnné door se vyskytuje název dveří, do kterých vstupujeme a je dále předáván do GL.door_name. Scéna obsahuje název scény, do které se budeme přepínat. Prostřednictvím scene.scene tento název je předán do pohonu v Game Logic. Předposlední řádek skriptu cont.activate(scene) tento pohon aktivuje, čímž dosáhneme přepnutí do následující scény. cont.activate(scene) main() K tomu, abychom byli schopní nastavit kameru na určené místo, slouží skript „load“ spolu s kombinací Empty objektů nazývajících se cam_poz. import bge def main(): GL = bge.logic cont = GL.getCurrentController() own = cont.owner if(hasattr(GL,"door_name")): objlist = GL.getCurrentScene().objects for o in objlist: if(o.name[0:7] == "cam_poz"): if(o["door"] == GL.door_name): own.position = o.position own.orientation = o.orientation main() Jestli existuje předešlá scéna, budeme načítat objekty ze scény aktuální. Dokud nenajdeme objekt cam_poz, který má u sebe také proměnnou
Vlastní práce
37
door stringové hodnoty. Po tom, co je objekt nalezen, kamera se nastaví na pozici cam_poz a převezme i orientaci tohoto objektu.
3.5 Export Aby práce mohla být vyexportovaná, musí být aktivovaná volba Save As Game Engine Runetime, která se nachází v doplňcích mezi uživatelskými preferencemi. Jestli je volba aktivní, stačí už jen soubor exportovat do libovolného adresáře. Původní font Blenderu ovšem nepodporuje českou diakritiku, je proto nutné, aby cesta k cílovému adresáři takovéto znaky neobsahovala.
38
Závěr
4 Závěr Teoretická část této práce přináší informace o vzniku Blenderu, který je spojen především se jménem Ton Roosendaal. V další části je uveden vývoj Blenderu od doby, co se stal Open Source aplikací až do nynější podoby. Popisuje funkce, které se spolu s tímto nástrojem na 3D zpracování modelů vyvíjely. Následuje výčet veškerých editorů, co se v aplikaci vyskytují a jaké možnosti přinášejí. V praktické části (kapitola 3) jsou popsány 2 příklady, pro pochopení problematiky nástrojů pro modelování, které byly v práci použity. Po jejich přiblížení se věnujeme zpracování modelu samotného a jeho rozdělení do několika scén. Další částí této kapitoly je popis navigací, umožňující projít celou scénu bez zásahu uživatele. Ani jedna z těchto navigací však ve výsledné aplikaci není použitá. Jako lepší řešení se zdál být interaktivní průchod, který je zde následně popsán do všech podrobností. K tomuto účelu je využit i programovací jazyk Python, kterému je věnována jedna z podkapitol Analýzy interaktivního průchodu. Zde se vyskytuje i implementace průchodu, která nám přináší informace o nastavení kamery pro průchod scénou, dále i animace otevírání a zavírání dveří, zobrazování nápisu „Prohlédnout“ a popis jednotlivých skriptů, související s interaktivním průchodem, umožňujících nejen průchod po aktuální scéně, nýbrž průchod do ostatních scén. Výsledkem práce je aplikace spustitelná na operačním systému Windows XP, 7 a Vista, určená jakémukoli uživateli.
4.1 Praktický přínos Jak již bylo řečeno, výstupem této práce je aplikace, která je určena všem uživatelům, kteří si chtějí prohlédnout Provozně ekonomickou fakultu Mendelovy univerzity. Takovými uživateli mohou být: potenciální studenti fakulty PEF, nově přijatí studenti, vyhledávající některé prostory budovy, uživatelé částečně si vynahrazující den otevřených dveří. Aplikace sama o sobě může ovlivnit nemalou část studentů, kteří chtějí studovat informatiku na naší fakultě a které láká předmět Grafika I. Může proto působit i jako propagační materiál. Písemná část této práce může být použita jako tutoriál díky přiloženým příkladům modelačních technik či naukový materiál pro práci s Blenderem. Může sloužit jako inspirace, pro práci se skripty napsanými programovacím jazykem Python.
Závěr
4.2
39
Problémy při řešení
Již při seznamování se s prostředím Blenderu 2.59 nastal jeden z problémů, a tím byla neexistující dokumentace pro verze 2.5x. Veškerý materiál, který popisoval Blender byl pro starší verze. Některé funkce vyskytující se ve starších verzích už v nových nenajdeme, popřípadě se nachází na úplně na jiném místě. Což značně ztížilo práci. Tento problém je v tuto chvíli částečně vyřešen. Celá dokumentace, se nacházela na oficiálních stránkách Blenderu4, nyní se přesouvá na stránky http://wiki.blender.org/. Kde je dokumentace postupně vyvíjena v 36 jazycích pro verze 2.4x, 2.5x i 2.6x. Prozatím ještě není kompletní. Při exportování do exe souboru docházelo k nečekaným chybám. Některé objekty ve spuštěné aplikaci se stávaly neviditelnými. Tento problém bohužel byl vyřešen pouze částečně. Pomohlo vyexportování modelu v nové verzi Blenderu 2.6, která se zrovna objevila na trhu. Další problém se objevil záhy. Při exportu ve verzi 2.6 se vytvářel adresář s názvem „lib“ navíc a aplikace při spuštění hlásila chybu. Při odstranění nadbytečného adresáře se problém vyřešil a aplikace byla spustitelná a dokonce i veškeré objekty byly viditelné. Tento export odhalil, že chyba byla nejspíše v Blenderu 2.59. Při rozšíření práce o scénu „Q02“ se problém s mizícími objekty objevil znovu. Po odstranění veškerých textur ve scéně se objekty staly znovu viditelnými. Chyba exportu, která se objevila ve verzi 2.59 nejspíše byla v nové verzi vyřešena pouze částečně. V současné aplikaci je příliš obsáhlá scéna „prizemi“ a méně výkonné grafické karty jako jsou kupříkladu integrované grafické karty Intel, nejsou schopny tuto scénu spustit a při jejím načítání aplikace padá. Což je i tématem následující podkapitoly.
4.3 Budoucí rozšíření Jak bylo řečeno výše, je nutné model optimalizovat, aby byl spustitelný i na méně výkonných grafických kartách, popřípadě rozdělit scénu na více částí a upravit je, aby výsledný model i s jeho okolím působil reálně a model nebyl pouze zasazen do jednobarevného prostředí. Skript pro pohyb kamery je psán pro možnost Simple Motion, nacházející se v pohonu Motion, není ideálním řešením, kamera sjíždí ze schodů. Skript pro nastavení Servo Control by tento problém vyřešil. Jak bylo popsáno na konci kapitoly Modelování, grafické karty mají problém se stíny. Pro lepší vzhled by mohly být stíny zhotoveny jiným způsobem. Případně by zrcadla na toaletách mohla odrážet obraz, aby působila více reálně.
4
Oficiální stránky Blenderu: http://www.blender.org/
40
Závěr
Pro lepší přehled ve scéně by kamera mohla mít nastaven pohyb i nahoru a dolů, například při pohledu do schodů či na vyšší patra budovy.
Literatura
41
5 Literatura ATLANTIDA PUBLISHING S. R. O. . Python skripty v Blenderu. 3D grafika. [onli-ne]. 2009. [cit. 2011-12-22]. Dostupné z: http:// www.pixel.cz/s1690-python-skripty-v-blenderu/. AUTODESK, Inc. Autodesk 3ds Max Products. Autodesk [onli-ne]. ©2011. [cit. 2011-12-22]. Dostupné z: http://usa.autodesk.com/3ds-max/. AUTODESK, Inc. Autodesk Maya. Autodesk [onli-ne]. ©2011. [cit. 201112-22]. Dostupné z: http://usa.autodesk.com/maya/. BLENDER FOUNDATION. History. Blender [onli-ne]. 2011. [cit. 2011-12-22]. Dostupné z: http://www.blender.org/blenderorg/blenderfoundation/history/. BLENDER FOUNDATION. Release Logs. Blender [onli-ne]. 2011. [cit. 201112-22]. Dostupné z: http://www.blender.org/development/releaselogs/. DIGITAL MEDIA S. R. O. . Informace o firmě. Cinema4D [onli-ne]. ©2011. [cit. 2011-10-02]. Dostupné z: http://www.cinema4d.cz/firma/. GRUBER, J. -- MÁDLE, M. Úvodní stránka. Provozně ekonomická fakulta [onli-ne]. 22. 12. 2011 . [cit. 2011-12-22]. Dostupné z: http://www.pef.mendelu.cz/cz. HARMS, D. -- MCDONALD, K. Začínáme programovat v jazyce Python. 1. vyd. Brno: Computer Press, 2003. 455 s. ISBN 80-7226-799-X. HÖHL, W. Interactive environments with open-source software : 3D walkthroughs and augmented reality for architects with Blender 2.43, DART 3.0 and ARToolKit 2.72. Wien: Springer, 2009. 239 s. ISBN 978-3-211-79169-1. MARTELLI, A. -- MARTELLI RAVENSCROFT, A. Python cookbook. 2. vyd. Beijing: O'Reilly, 2005. 807 s. ISBN 0-596-00797-3. MCNEEL, B. Modeling tools for designers. Rhinoceros [onli-ne]. ©2010. [cit. 2011-11-15]. Dostupné z: http://www.rhino3d.com/. PILGRIM, M. Ponořme se do Python(u) 3: Dive Into Python 3. 1. vyd. Praha: CZ.NIC, 2010. 430 s. ISBN 978-80-904248-2-1. POKORNÝ, P. Blender : Naučte se 3D grafiku. 1. vyd. Praha: BEN, 2006. 247 s. ISBN 80-7300-203-5. SUMMERFIELD, M. Python 3 : výukový kurz. 1. vyd. Brno: Computer Press, 2010. 584 s. ISBN 978-80-251-2737-7. ŠVEC, J. Létající cirkus . Python tutoriál [onli-ne]. 2003. [cit. 2011-12-22]. Dostupné z: http://ii.iinfo.cz/r/old/data/letajici_cirkus.pdf ŽÁRA, J. A KOL. Moderní počítačová grafika. 2. vyd. Brno: Computer Press, 2004. 609 s. ISBN 80-251-0454-0.
42
Přílohy
Přílohy
Náhled na model budovy PEF
A Náhled na model budovy PEF
Obr. 11 Budova PEF
Obr. 12 Dvůr
43
44
Obr. 13 Chodba
Obr. 14 Třída
Náhled na model budovy PEF
Náhled na model budovy PEF
Obr. 15 Schodiště
Obr. 16 Toalety
45