• No results found

1. Seznam obrázků

N/A
N/A
Protected

Academic year: 2022

Share "1. Seznam obrázků "

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)

3 Prohlášení

Byl jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje zákon č. 121/2000 Sb., o právu autorském, zejména § 60 – školní dílo.

Beru na vědomí, že Technická univerzita v Liberci (TUL) nezasahuje do mých autorských práv užitím mé bakalářské práce pro vnitřní potřebu TUL.

Užiji-li bakalářskou práci nebo poskytnu-li licenci k jejímu využití, jsem si vě- dom povinnosti informovat o této skutečnosti TUL; v tomto případě má TUL právo ode mne požadovat úhradu nákladů, které vynaložila na vytvoření díla, až do jejich skutečné výše.

Bakalářskou práci jsem vypracoval samostatně s použitím uvedené literatury a na základě konzultací s vedoucím bakalářské práce a konzultantem.

Datum: 3.9.2013

Podpis

(2)

4 Poděkování

Na tomto místě bych chtěl poděkovat hlavně vedoucímu bakalářské práce Ing. Jiřímu Jeníčkovi, Ph. D. Jeho zájem o postup v práci mě motivoval k vyvinutí většího úsilí a byl mi ochoten vždy vyjít vstříc. Velice oceňuji veškeré poskytnuté rady, doporučení a celkovou podporu v práci.

Dále bych chtěl vzdát hold Aleně Turkové, která mě podporovala po psychické stránce a nebýt její podpory, pravděpodobně bych tuto práci vůbec nedotáhl do konce.

(3)

5 Abstrakt

Bakalářské práce na téma Interaktivní mapa areálu Husova se simulovaným 3D prostře- dím se zabývá tvorbou areálu pomocí vývojových 3D nástrojů. Hlavním předmětem práce je simulovat reálný vzhled prostředí včetně interaktivních prvků tak, aby výsledek co nejvíce korespondoval s realitou. Vše by poté mělo sloužit pro nové studenty a za- městnance k ulehčení orientace.

Abstract

Bachelor thesis on theme 3D Map and Simulated Environment of TUL Campus is fo- cused on creating 3D model of campus by using several developing tools. Main goal of thesis is to simulate real look of enviroment including interactive objects. Result should have a look of real word in reason to help people with coordination and orientation acros the campus.

(4)

6

Obsah

1. Seznam obrázků ... 7

2. Úvod ... 8

3. Použitý SW ... 9

3.1. Autodesk 3ds Max ... 9

3.2. Autodesk Maya ... 9

3.3. Unreal Development Kit ... 10

3.3.1. Unreal Engine 3 ... 10

3.3.2. Grafický engine ... 11

3.3.3. Zvukový engine ... 12

3.3.4. Fyzikální engine ... 13

3.3.5. UnrealScript ... 13

3.3.6. Uživatelské rozhraní UDK ... 15

4. Vlastní tvorba ... 19

4.2. Import modelu ... 20

4.2.1. Git repozitář ... 20

4.2.2. Model areálu v UDK ... 20

4.2.3. Modely budov, kolize a import do UDK ... 21

4.3.1. Zemský povrch ... 23

4.3.2. Budovy ... 24

4.3.3. Okna, dveře, vrata a světla ... 27

4.3.4. Vozidla ... 32

4.3.5. Lidé ... 33

4.3.6. Výtahy ... 37

4.3.7. Přírodní prvky ... 38

4.3.8. Textury, materiály a orientační prvky ... 39

5. Závěr ... 40

6. Seznam použité literatury ... 42

7. Obsah CD ... 43

(5)

7

1. Seznam obrázků

Obrázek 1: Rozdíl mezi Unreal Enginem a Cry Enginem ... 11

Obrázek 2: Popis GUI v UDK ... 15

Obrázek 3: GUI Content Browseru ... 16

Obrázek 4: GUI Kismet ... 17

Obrázek 5: GUI Matinee ... 18

Obrázek 6: Ukázka chyb při importu. ... 23

Obrázek 7: Ukázka chyb v původním modelu ... 25

Obrázek 8: Způsob nastavení kolizí budov ... 26

Obrázek 9: Script okno ... 29

Obrázek 10: Script dveře ... 30

Obrázek 11: Script světlo ... 31

Obrázek 12: Nastavení materiálu (okno vozidla) ... 33

Obrázek 13: Práce s Bipodem v 3DS Max ... 34

Obrázek 14: AnimSet Editor v UDK ... 35

Obrázek 15: Scripty a animace postav ... 37

Obrázek 16: Script a animace výtahu ... 38

Obrázek 17: Ukázka orientačního prvku ... 39

(6)

8

2. Úvod

Bakalářskou práci na téma Interaktivní mapa areálu Husova se simulovaným 3D pro- středím, jsem si vybral z důvodu mého dlouhodobého zájmu o grafiku, grafický design a modelování se zaměřením na 3D objekty. Dále bych se rád v budoucnu na trhu práce uplatnil v oblasti vývoje 3D prostředí, ať již pro účely herního průmyslu, nebo jako pra- covník zaměřující se na vizualizaci velkých stavebních projektů. Jedním z dalších dů- vodů byla touha získat lepší znalosti a zkušenosti s prací ve vývojovém prostředí her- ních a modelovacích softwarů.

Hlavním cílem práce je vytvořit interaktivní 3D model areálu Husova, za použití mode- lů budov od předchozích studentů tak, aby se budoucí uživatel mohl procházet po celém areálu i uvnitř budov stejně jako v reálném životě. K dokreslení reality je tedy třeba do- plnit modely o interaktivní a pohyblivé prvky, jakými jsou okna, dveře, vrata, světla, výtahy, automobily a lidé. K těmto prvkům poté naskriptovat vhodné chování tak, aby uživatel měl pocit reálného prostředí. Celková simulace reality má sloužit k možnosti zorientovat se v areálu univerzity, získat povědomí o jeho velikosti a hlavně o velikosti zdejších budov.

Ve své práci se Vám pokusím přiblížit vlastnosti programů, se kterými budu pracovat.

Dále popíši jejich výhody a nevýhody a zaměřím se na vysvětlení podstatných vlastností a charakteristik, kterých budeme využívat při tvorbě samotné práce. Poté detailně popíši přímý průběh mé činnosti dle chronologické posloupnosti vznikání projektu. Rád bych, aby na mou práci bylo možné v budoucnu navázat, nebo aby mohla být použita jako ná- vod pro podobnou činnost. Proto se pokusím popsat co nejlépe všechny kroky a upo- zornit na záludnosti, které by se mohly vyskytnout.

Na závěr popíši průběh a náročnost práce, zdůrazním důležité okolnosti, představím možnosti pro navázání na práci do budoucna a celý výsledek co nejobjektivněji zhodno- tím.

V práci bude z důvodu přímé vazby na UDK, který není v češtině, použitá převážně pů- vodní anglická terminologie. Překlad a vysvětlení termínů viz poznámky pod čarou.

(7)

9

3. Použitý SW

V první kapitole je stručně představen použitý software a bude zaměřena na hlavní funkce, využití a zdůraznění některých výhod a nevýhod. Výběr správných softwaro- vých prostředků je jednoduchý, protože je třeba vycházet z již vytvořených modelů a výběr samotného herního enginu byl určen přímo zadáním bakalářské práce. Na trhu je podobných vývojových nástrojů poměrně velké množství. Mezi nejznámější příklady softwarů určených k 3D modelování patří Cinema 4D, Blender, 3DS Max, Maya, Sket- chUp, AutoCAD a ZBrush. Možností je ovšem mnohem více. Podobně pestrá situace panuje i na poli herních enginů. Nejznámějšími ovšem jsou UnrealEngine, CryEngine, BigWorld, Frostbite a další.

3.1. Autodesk 3ds Max

Autodesk 3ds Max (dále 3DS Max) je program poskytující uživatelské rozhraní k vytváření 3D modelů, obrázků, videí a animací. Software patří do portfolia společnos- ti Autodesk Media and Entertainment a je hojně využíván herními vývojáři, tvůrci re- klamních spotů, a také filmovými studii k tvorbě filmových scén a efektů.

3ds Max pochází z programu 3D Studio, jenž na konci 90. let pod záštitou Autodesku vyvíjela společnost Yost Group. Dnešní verze nese mnohá vylepšení a je určena pro uživatele operačního systému Windows 7 a Windows 8 v 64bitových verzích.

3.2. Autodesk Maya

Autodesk Maya (dále Maya) je profesionální nástroj určený pro 3D tvorbu, jehož mož- nosti využití jsou totožné s 3DS Maxem. První verze tohoto programu byla vydána v roce 1998 společností Alias Systems a součástí portfolia společnosti Autodesk se stala až v roce 2005.

Jedním z hlavních rozdílů mezi Mayou a 3DS Maxem je možnost použití volně stažitel- nou verzi programu, která je zdarma. U této neplacené varianty však musí uživatel počí- tat s vodotiskem loga vloženým do výsledných renderů. Další rozdíl nalezneme v použi- tí skriptovacích jazyků. Zatímco 3ds Max umožňuje používat jazyk nazývaný MaxScript, Maya je vybavena hned dvěma skriptovacími jazyky, a to jsou MEL a Python. Dále také na rozdíl od 3ds Maxu ji lze spustit i na starších verzích operačního systému Windows a také na operačních systémech Mac OS a Linux.

(8)

10

Oba modelovací programy umožňují využití velkého množství přídavných pluginů1. V mém případě jsem využíval převážně plugin ActorX, umožňující exportovat modely do formátu .ase, což je typ souboru, jenž je využíván v softwaru pro vytváření herního prostředí.

3.3. Unreal Development Kit

Unreal Development Kit (dále UDK) je vývojový nástroj pro herní engine nazývající se Unreal Engine. Unreal Engine je, vedle konkurenčního Cry Enginu, jedním ze dvou profesionálních prostředí, které je možné využívat pro nekomerční účely zcela zdarma.

Tato práce má za úkol využít UDK k tvorbě interaktivní mapy areálu TUL Husova včetně veškerých animovatelných prvků. Jak je uvedeno v úvodu, tato práce by měla sloužit i jako případný návod dalším studentům, a proto představím vlastnosti tohoto vývojového nástroje mnohem podrobněji. Informace k této kapitole byly čerpány pře- vážně z doporučené odborné literatury. [5][6]

3.3.1. Unreal Engine 3

Pokud se budeme zaobírat vývojem her, zjistíme, že se k tomuto účelu využívá velké množství herních enginů. Dvěma nejvíce rozšířenými jsou, díky své dostupnosti široké veřejnosti, již zmíněné enginy: Cry Engin a Unreal engine. Cry Engine bude dále jako největší konkurent využívaný k porovnání odlišností a upozornění na rozmanitost mož- ností, kterými se liší. Z těchto důvodů je již na začátku práce důležité vybrat správný vývojový nástroj a brát ohled na jeho vlastnosti. Některé základní rozdíly můžete vidět na obrázku číslo 1.

Herní engine je velice komplexní program, jenž přes jádro spojuje spoustu dílčích částí, které jsou potřeba k vývoji moderních her a jejich prostředí. Tyto části, kterými jsou například zvukový engine, grafický engine a fyzikální engine by bez jádra nemohly spo- lupracovat a ani fungovat samostatně.

1 Plugin – neboli zásuvný modul je aplikace, která přidává k původnímu softwaru doplňkové funkce.

(9)

11

Obrázek 1: Rozdíl mezi Unreal Enginem a Cry Enginem

3.3.2. Grafický engine

Grafický engine zajišťuje vizuální zpětnou vazbu uživatelům a znázorňuje, co se děje s daty a jakým způsobem jsou zpracovávána při běhu programu. Díky tomu je tato část nepostradatelnou součástí celého komplexu a umožňuje nám s daty pohodlně pracovat.

Pro konkrétnější představu bude uvedeno několik příkladů prvků, které má grafický en- gine na starost.

Hlavním prvkem je určitě zobrazení celé aplikace na monitoru uživatele, dále například objekty, jejich nasvícení, stínování, vkládání do scény a jejich vykreslování. Grafický engine má také na starost rozlišovat, zda se jedná o objekty statické, u nichž se osvětle- ní, stíny a další vlastnosti vypočítají pouze jednou a to při vložení do scény, nebo zda se jedná o objekty dynamické, jejichž vlastnosti jsou neustále přepočítávány na základě vnějších, či předem nadefinovaných podnětů. Objekty jako takové lze dále rozdělit do tří hlavních kategorií na Brush (čistě statické), StaticMesh (statické i dynamické objekty obvykle vloženy z některého modelovacího programu) a SkeletalMesh (čistě dynamické objekty s animovatelnou kostrou).

V předešlém odstavci jsme se lehce otřeli o osvětlení. Osvětlení je další část práce, k níž využíváme grafický engine a díky které lze vytvářet celkovou atmosféru hry. Osvětlení je velmi složité odvětví, ze kterého se poslední dobou stává samostatný obor, jelikož správné rozmístění světel vyžaduje mnoho zkušeností a často může rozhodnout o úspě-

(10)

12

chu či neúspěchu celého projektu. Světel máme v enginu hned několik druhů a těmi jsou: Point light (bodové světlo svítící všemi směry)

Spot light (bodové světlo svítící jedním směrem) Directional light (simuluje funkci slunce)

Sky light (simuluje světlo rozptýlené v okolí)

Dále je možné nastavit objekty tak, aby vyzařovaly světlo s podobnými vlastnostmi jako Point Light. Veškerá světla se poté ve výsledné scéně vypočítávají najednou a výsledné nastavení se ukládá do takzvané Light mapy.

Nesmíme však opomenout, že grafický engine se stará také o různé animace a videa za- budované do hry. Pro rendering obrazu je použit multi-threading systém nazývající se Gemini. Dále engine podporuje DirectX 3D software, jenž slouží ke zpracování obrazu na PC, ve všech v současnosti používaných verzích.

3.3.3. Zvukový engine

Jistě si umíte představit, že žádné virtuální prostředí, natož hra se neobejde bez zvuků a stejně tak tomu je i v případě UDK, jenž umožňuje uživateli vkládat zvuky a dále s nimi pracovat. Základní zvukový systém se nazývá UTMapMusicInfo. Avšak tento defaultní prvek je do jisté míry limitován a proto se pro komplexní ztvárnění zvuků vy- užívají další doplňkové nástroje, jako například skriptovací nástroj Kismet (viz kapitola 3.3.6, 6tý bod popisu prostředí). Základní zvukové nástroje se po použití v Kismetu mě- ní v rozmanité pole možností, kterými se dá se zvukem pracovat a utváří tak komplexní nástroj pro tvorbu atmosféry našeho projektu.

Dále si je dobré uvědomit, že vzhledem k tomu, že se pohybujeme v 3D prostředí, veli- ce záleží na rozmístění a intenzitě zvukových zdrojů tak, aby i zvuk působil při průcho- du úrovněmi 3D realistickým dojmem.

Velice také záleží, pro kterou platformu je naše aplikace určena, jelikož zvuky pro různé platformy se ukládají do různých tříd. PC platformě je přiřazena třída UALAudioDevi- ce, Play Station 3 používá třídu UPS3AudioDevice a Xbox360 využívá zase UXeAudi- oDevice.

(11)

13 3.3.4. Fyzikální engine

Dalším prvkem Unreal Enginu 3, se kterým pracujeme prostřednictvím UDK je engine, jenž se stará o simulaci fyzikálních zákonů a díky kterému může virtuální svět fungovat s velkou podobností ke světu reálnému. Stará se o výpočty pohybů, kolizí a interakce mezi všemi objekty ve scéně. Do fyzikálního enginu je implementován známý a světově rozšířený systém PhysX, jenž vyvíjí společnost Nvidia.

Celý systém funguje tak, že objektům, u kterých chceme, aby fungovaly na bázi fyzi- kálních zákonů, přiřadíme vlastní kolizní zóny, takzvané kolizní boxy a nastavíme jim požadované vlastnosti. Systém PhysX poté bere tyto objekty jako fyzikální a aplikuje na ně celou řadu vlastností, jenž lze předem definovat, či nechat dynamicky generovat.

Engine lze rozdělit na dva základní typy fyzikálních modelů a to na Kinematický model, jenž provede předdefinované úkony bez ohledu na kolize a Dynamický model, který s kolizemi počítá a tudíž umožňuje vytvořit mnohem realističtější chování objektů.

K ovládání jednotlivých objektů se nejvíce používají úrovně působení sil. Tyto síly lze dělit dle typu působení, a to na Konstantní síly, které působí stále stejným směrem o stejné úrovni, například Gravitace. Dále jsou to Impulzy, jenž lze definovat jako jed- norázová akce, které ovlivní své okolí krátkým vývojem, například výbuchy. A poslední kategorií jsou Cykly, které se využívají k simulaci dějů s cyklickým průběhem, napří- klad houpání.

3.3.5. UnrealScript

UnrealScript (dále UScript) je programovací jazyk pro Unreal Engine, pomocí něhož jsou naprogramovány veškeré vlastnosti herního prostředí. Tento jazyk vyvinul jako první Tim Sweeney, který ho založil na svém dřívějším jazyku ZZT-oop. Pokud bych měl přirovnat UScript k některému ze známějších jazyků, nejvíce se podobá jazyku Java a také jazykům C/C++. Z tohoto přirovnání je zřejmé, že se také jedná o objektově ori- entovaný programovací jazyk, jehož základním stavebním kamenem jsou třídy. Každá taková třída je definována ve vlastním souboru s koncovkou .uc a .uci. Každá třída mů- že mít pouze jednoho rodiče a pouze jednoho potomka, což eliminuje možnost mnoho- násobné dědičnosti.

Hlavní programovací koncepty, které Unreal Script vyvozuje z Javy jsou:

 Prostředí bez ukazatelů a s automatickým systémem pro uvolňování paměti

(12)

14

 Systém jednoduché dědičnosti tříd

 Silná kontrola typů v čase kompilace

 Bezpečné provedení dat zasílaných ke klientovi (tzv. sandbox)

 Podobný vzhled s princip kódu jako C/C++/Java.

Scripty lze jednoduše vytvářet pomocí Kismetu, což je přehledný grafický nástroj im- plementovaný v uživatelském rozhraní UDK. Pro složitější programování, například umělé inteligence, se využívá přímého editování scriptů, k čemuž lze poměrně pohodlně použít externí programy jako Unreal X-Editor a UnCodeX.

Ukázka scriptu. První část definuje základní vlastnosti vozidla a druhá část nastavuje u tohoto vozidla chování kol:

class UTVehicleFactory_Hummer_H1 extends UTVehicleFactory;

defaultproperties {

Begin Object Name=SVehicleMesh

SkeletalMesh=SkeletalMesh'VH_SMOKEY13_Hummer.Mesh.Hummer_H1' Translation=(X=0.0,Y=0.0,Z=-70.0)

End Object

Components.Remove(Sprite)

Begin Object Name=CollisionCylinder CollisionHeight=+80.0

CollisionRadius=+120.0

Translation=(X=-45.0,Y=0.0,Z=-10.0) End Object

VehicleClassPath="SMOKEY13hummer.UTVehicle_Hummer_H1_Content"

DrawScale=1.0 }

class UTVehicleHummer_H1Wheel extends UDKVehicleWheel;

defaultproperties {

WheelRadius=23 SuspensionTravel=16 bPoweredWheel=true SteerFactor=0.0 LongSlipFactor=2.0 LatSlipFactor=2.75

HandbrakeLongSlipFactor=0.7 HandbrakeLatSlipFactor=0.3 ParkedSlipFactor=10.0

bUseMaterialSpecificEffects=true }

(13)

15 3.3.6. Uživatelské rozhraní UDK

Uživatelské rozhraní vývojového nástroje UDK je na první pohled velmi podobné všem modelovacím programům, které pracují s 3D prostředím. Zcela typickým rysem pro ten- to typ softwarů je rozdělení obrazovky do čtyř oken, z nichž každé může na scénu na- hlížet z jiné perspektivy a zobrazovat jinou množinu vlastností. Zpravidla bývá toto rozdělení použito ve formátu 1 + 3, což znamená, že máme jeden hlavní obraz, ve kte- rém vidíme náš projekt z ptačí perspektivy s nastaveným výsledným realistickým zob- razením. Další 3 obrazovky se defaultně používají ke kolmým náhledům na síťovou strukturu modelu. Nejčastější varianty pohledů jsou: přední, boční a horní. Konkrétní vzhled rozhraní si můžete prohlédnout na obrázku číslo 2.

Obrázek 2: Popis GUI v UDK

Jak můžete vidět, vývojové prostředí se neskládá pouze z již zmíněných náhledů, ale ta- ké z panelů pro nejrůznější vývojové nástroje. Právě těmito nástroji se UDK liší od všech typických modelovacích programů, a proto zde uvedu vlastnosti těch nejvíce pod- statných prvků podrobněji.

1) Panel číslo jedna obsahuje tvary předdefinovaných štětců. Je důležité si uvědo- mit, že jelikož se pohybujeme ve 3D prostředí, štětce jsou zde reprezentovány geometrickými tvary jako například plocha, koule, kužel, kvádr…

(14)

16

2) Panel číslo dvě úzce souvisí s prvním panelem, jelikož až pomocí zde umístě- ných nástrojů, se v mapě přidává, či ubírá hmota. A to v místech kde již máme umístěný štětec. Při práci s nástroji první a druhé kategorie, je důležité si zkon- trolovat, zda nejsou skryty některé důležité vrstvy, což může vést ke zničení ce- lého modelu.

3) Panely patřící do třetí skupiny slouží k ovládání jednotlivých oken pohledů a převážně se používají k již zmíněnému nastavení perspektiv a typu zobrazení.

4) Čtvrtá skupina nástrojů sdružuje prostředky pro závěrečnou produkci a spuštění výpočtů. Vždy před novým spuštěním úrovně je nutné nechat přepočítat geome- trii prostředí, osvětlení a popřípadě ozvučení, k čemuž právě slouží tyto položky.

5) Content Browser

Content Browser je jednou z nejpodstatnějších částí UDK, která propojuje vývo- jové prostředí s rozsáhlou databází textur, materiálů, modelů, zvuků a animací, ať už z produkce vývojářů, či vaši vlastní. Toto okno je zobrazeno hned po prv- ním spuštění aplikace, což jen podtrhuje jeho význam, jelikož bez jeho použití nikdy nebudete schopni vytvořit použitelný level. Ukázka rozhraní Content Browseru s několika vlastními texturami a materiály je níže na obrázku číslo 3.

Obrázek 3: GUI Content Browseru

(15)

17 6) Unreal Kismet

Unreal Kismet (dále Kismet) je dalším z řady velice podstatných nástrojů pro tvorbu interaktivního prostředí. Řekněme, že toto rozhraní se stará o definici dě- jů, které známe z fyziky jako akce a reakce. Kismet dává vývojáři možnost vy- tvářet skripty, vyvolávající či reagující na různé děje, bez nutnosti znát scripto- vací jazyk. Zde se vytváří logika dějů tak, aby program věděl například, co se má stát se světlem, pokud použijeme vypínač, jak mají zareagovat dveře, pokud je otevřeme, nebo pokud vstoupíme do čidla v jejich blízkosti atd. Zjednodušeně se zde vždy nastavuje způsob, jakým akce vyvolané určitými událostmi, či ob- jekty působí na další události a objekty, nebo na sebe samy. Na obrázku číslo 4 přikládám pro lepší pochopení celého principu vývojový diagram, jenž ovládá otvírání dveří.

Obrázek 4: GUI Kismet

(16)

18 7) UnrealMatinee

UnrealMatinee (dále Matinee) je třetí velice podstatné a hojně užívané podroz- hraní programu UDK. Matinee se používá, pokud je potřeba do scény přidat ja- kýkoliv pohyb. Všechny animace pohyblivých částí se dělají pomocí tohoto ná- stroje a z toho důvodu zde můžeme pozorovat jistou podobnost s animačními, či střihačskými programy. Rozhraní pracuje na základě definování klíčových snímků, používání vrstev a vazeb mezi nimi. Matinee je velmi provázané s Kis- metem, jelikož i když všechny pohyby objektů získávají své vlastnosti zde, je to právě Kismet, pomocí kterého dáváme těmto pohybům podněty ke startu. Ukáz- ka vývojového prostředí na obrázku číslo 5 znázorňuje jednoduchou animaci po- stavy pohybující se po obdélníkové trajektorii s krátkým zastavením ve výcho- zím bodu.

Obrázek 5: GUI Matinee

(17)

19

4. Vlastní tvorba

Pro tvorbu nestačí jen teorie, je potřeba získat praktické zkušenosti a k tomuto účelu nejlépe slouží rozmanité tutoriály pro vyzkoušení základních i pokročilých principů, metod a postupů. Tyto tutoriály výborně slouží k pochopení systémů, kterých je třeba využívat a jsou tedy často využívaným zdrojem informací pro začátečníky i pokročilé.

4.1 Jak začít s UDK

Vývojový nástroj pro modelování 3D prostředí UDK je poměrně rozšířený po celém světě a tudíž na něj existuje velké množství návodů. První návod, se kterým je dobré za- čít, je psaný český tutorial na serveru pctuning.cz, jehož autorem je Aleš Ulm [10]. Ten- to návod je reprezentován deseti kapitolami, ve kterých jsou postupně uživateli předsta- veny základní vlastnosti softwaru, jeho možnosti a principy, pomocí nichž se můžete pustit do kreativní práce.

Díky tomuto návodu lze za pár týdnů získat základní povědomí o metodách tvorby počí- tačových her a hrdě se dívat na vlastní střelnici skládající se například ze tří vymyšle- ných místností, se zabudovanými schody a statickými i pohyblivými cíli k sestřelení.

Jelikož předmětem bakalářské práce není vymyšlený abstraktní svět, bylo nutné začít pracovat na druhém osobním projektu a zaměřit se na 3D interpretaci blízkého okolí.

V mém případě na model vlastního bytu. Při pokročilé práci však již zmíněný český ná- vod nestačí a je třeba začít využívat cizojazyčné zdroje. Mezi oblíbený zdroj návodů patří videotutoriály na serveru youtube.com [1] a rady zkušenějších uživatelů na tema- ticky zaměřených fórech, například na unrealeditor.cz [11], udn.epicgames.com [7], animium.com [12] a gildor.org [13], nebo v oficiální dokumentaci k UDK [9].

Všechny tyto weby, a další jim podobné, vám pomohou vytvořit model prostředí s vlastními realistickými texturami a funkčními interaktivními prvky. Zde se naučíte pro účely budoucí práce scriptovat chování světel a animovat pohyby dveří. Dále se naučíte tvořit různorodý členitý venkovní terén, a na závěr například vložit do scény další oso- bu, jejíž pohyb je řízený dle vlastních požadavků. Po takto nabytých zkušenostech mů- žete tedy začít pracovat na velkém projektu, například na modelu areálu školy.

(18)

20 4.2 Import modelu

K tvorbě areálu školy jsem měl za úkol použít holé modely budov vytvořené předešlými studenty, ve sdíleném repozitáři. Modely byly jako jednotlivé budovy vytvořeny pro- střednictvím různých softwarů. Budovy C a E byly vytvořena v 3DS Maxu, IC bylo vy- tvořeno v Maye a venkovní prostředí areálu v UDK. Celý repozitář obsahoval 2736 souborů, obsažených v 196ti složkách, což celkem tvořilo 16.9 GB.

4.2.1 Git repozitář

Při zadávání práce byla domluvena elegantní metoda sdílení souborů pomocí sdíleného repozitáře na školním serveru. Tento systém měl zaručovat dostupnost a přehlednost všech souborů napříč projekty. Další pozitivní vlastností by byla informovanost vedou- cího o dosavadním postupu studentů a dále také automatické verzování.

Při práci s repozitářovým systémem je třeba znát alespoň základy práce v linuxovém prostředí, nejlépe pomocí příkazové řádky. Ač je tato metoda sdílení souborů velmi mo- derní a v poslední době hojně využívaná, je možné se zde setkat s řadou komplikací. Ke komunikaci mezi klientem a serverem se používá sada vygenerovaných privátních a ve- řejných klíčů, které nemusí být vždy serverem řádně rozpoznány. V takovém případě doporučuji mít k dispozici více zařízení, pro správné detekování problému. Dále nedo- poručuji využití této metody v případě nestabilního připojení k internetu, či připojení s nízkým datovým tokem. Přenos souborů je na kvalitě sítě velmi závislý a nestabilita často vede k jeho přerušení. V případě podobných problémů doporučuji ke sdílení dat využít pevných přenosných médií.

4.2.2 Model areálu v UDK

Mí předchůdci z řad studentů již v minulosti pracovali na tvorbě 3D modelu areálu TUL Husova v prostředí vývojového programu UDK, a proto bylo mým úkolem využít těch- to modelů, jako základních stavebních kamenů pro mou práci a doplnit je pouze o inter- aktivní a pohyblivé prvky.

Bohužel stávající model areálu má velké množství kolizních nedostatků na úrovni ven- kovního terénu. Také budovy, u kterých jsem předpokládal, že budou již připravené k osázení dveřmi a okny, byly pouze prázdné kvádry opatřené texturami. Bylo tedy nut- né použít modely z externích modelovacích programů.

(19)

21

Dalším problémem, kterým byl model po mém předchůdci provázen, byla velká nesta- bilita při pokusech o další úpravy a optimalizaci. Tento jev mě společně s dalšími nedo- statky přinutil upustit od konceptu pokračování v práci na areálu po předešlém studen- tovi a začít pracovat na vlastní verzi celého prostředí, které nebylo součástí původního zadání.

Příčina problémů s původním modelem vznikla pravděpodobně použitím rozdílné verze vývojového prostředí a zároveň původní tvůrce zřejmě neměl k dispozici podrobné plá- ny budov.

4.2.3 Modely budov, kolize a import do UDK

Modely budov, které jsem měl k dispozici s již hotovou strukturou chodeb, byly vytvo- řeny pomocí dvou modelovacích programů od společnosti Autodesk. Těmito programy byly Autodesk 3ds Max a Autodesk Maya.

Pro počáteční seznámení je vhodné využít portfolia videotutoriálů [2][3][4] (např. zá- kladní uživatelské rozhraní, práce a tvorba modelů, metody exportu, animace) a tak se naučit, jak s modely naložit, aby je bylo možné použít prostřednictvím UDK ve výsled- ném areálu. V složitých a komplexních programech jako jsou tyto, máte vždy několik možností, jak exportovat model pro další použití. Jako první možnost je defaultní im- plementovaný nástroj, jenž umožňuje ukládat modely do formátu kompatibilního s UDK. Tato možnost ovšem nefungovala zcela správně a modely se po vložení do UDK zobrazovaly jako deformované, nebo přímo chyběly velké podstatné části modelů.

Navíc modelům zcela chyběly správné kolizní zóny, což mělo za následek dva neakcep- tovatelné stavy závislé na druhu importu. Prvním takovým stavem po čistém importu byla budova, jejíž zdi neobsahovaly žádný kolizní model, a tudíž se jimi dalo procházet.

Pokud jsem zvolil import s možností dopočítání kolizí samotným UDK softwarem, do- stalo se mi výsledku, jenž vytvořil velkou kolizní zónu kolem celého modelu, a tudíž nebylo možné s charakterem procházet budovou, a to ani v místě dveří.

Bylo tedy nutné využít alternativní možnosti exportu modelů a jejich následného impor- tu do UDK. Jednou z hojně využívaných a doporučovaných variant, které se objevují ve velkém množství návodů, bylo využití externího zásuvného modulu pro export souborů určených k použití v UDK s názvem ActorX. Tento zásuvný modul byl ovšem vyvíjen pouze pro starší verze modelovacích programů, a proto se mohou objevit problémy

(20)

22

s jeho instalací. Po podrobnějším pátrání na stránkách vydavatelů a fanoušků lze zjistit, že studio EpicGames již oficiálně nepodporuje funkci zásuvného modulu ActorX pro programy 3DS Max a Maya u verzí 2012 a novějších. K tvorbě této bakalářské práce byly použity programy ve verzi 2013, a proto jsem byl nucen použít neoficiální modifi- kaci softwaru z webu gildor.org [13].

Metoda exportu modelů včetně kolizních zón však vyžadovala, aby byly všem zdem vy- tvořeny vlastní kolizní bloky v konvexním tvaru. V praxi to tedy znamenalo nutnost do původního modelu zakomponovat druhý, který bude absolutně totožný s tím původním, pouze bude skrytý pod původními zdmi a bude složen z uzavřených kvádrů. Abych pře- dešel zbytečné práci, vyzkoušel jsem si celou metodu na tvorbě malého fiktivního dom- ku, jenž sloužil pouze pro ověření celého postupu a jeho funkčnosti.

Po vložení zkušební budovy do UDK vše fungovalo bez sebemenších problémů. Začal jsem tedy upravovat původní modely stejnou metodou. Problém je ale omezení softwaru na množství polygonů objektu, jenž může být do UDK naimportován. Toto omezení je stanoveno na 65 535 ploch. Metoda, která funguje pro malé struktury a budovy se uká- zala jako zcela nepoužitelná pro modely o velikosti školních prostor. Proto bylo nutné využít alternativní možnosti, jak zpracovat zdrojové soubory tak, aby byly použitelné pro další práci. Ukázku chyb zamezujících import složitých objektů můžete vidět na ob- rázku číslo 6.

(21)

23

Obrázek 6: Ukázka chyb při importu.

Jako další možnost byl zvolen postup rozdělit modely na několik menších částí, které později budou spojeny v prostředí UDK a případné kolizní problémy opravit ručně po- mocí kolizních boxů. Tato varianta se později ukázala jako efektivní a jejímu detailnímu popisu jsou věnovány následující kapitoly.

4.3 Model v UDK

4.3.1 Zemský povrch

Rozloha zemského povrchu pro oblast areálu nebyla předem definovaná, proto se její velikost i tvar průběžně měnily. Jelikož model areálu, který byl k dispozici, neodpovídal svými rozměry a hlavně proporcemi tvaru a rozmístění budov, byly budovy nejprve umisťovány na vodorovnou plochu. Tato plocha byla vytvořena pomocí obyčejného kvádru pouze jako podklad pro první budovu. Pomocí postupného rozšiřování následně tento kvádr sloužil jako imitace jednoduchého zemského povrchu pro celý areál.

V raných fázích tvorby byl princip vodorovného povrchu vyhovující, hlavně díky jed- noduché manipulaci a použití při testování.

S implementací prvních pater informačního centra, především podzemních garáží a pří- zemí, bylo nutné od konceptu vodorovného okolí budov upustit. Pro tento účel bylo vy- užito zakřivení zemského povrchu, který obklopoval původní model informačního cen-

(22)

24

tra. Tento prvek byl oddělen od přilehlých budov, protože neobsahovali dostatečné úrovně dědičnosti (Leaf level Error2), aby mohli být vyexportovány jednotlivě. Povrch obsahuje části s jemnými odstíny materiálů, které na něj byly aplikovány. Přesná úprava a aplikace materiálů byla provedena v softwaru Maya.

4.3.2 Budovy

Základním stavebním kamenem práce bylo nalezení správného způsobu pro import bu- dov z externích zdrojů tak, aby byly dále využitelné pro doplnění o interaktivní animo- vané prvky.

Po problémech s kvalitou modelů po předešlých studentech se nakonec jako použitelný způsob ukázal postup, při kterém bylo nutné každý model rozdělit na jednotlivá patra.

Dále bylo nutné oddělit stropní části. Stropy jednotlivých pater byly sloučeny s podlahami vyšších podlaží, čímž se otevřely chodby pro lepší přehlednost z ptačí per- spektivy a zároveň se objevily chyby v modelech. Jako příklad některých vad mohu uvést několik zazděných průchodů v oblasti schodiště v budově C, absenci celého scho- diště v budově IC, zazděné vstupy do výtahů v budově E a další nepřesnosti mezi jed- notlivými patry.

Veškeré tyto problémy byly skryty ve zdrojových modelech, tudíž je bylo nutné ručně opravit. Domodeloval jsem tedy celé schodiště v budově informačního centra, uvolnil průchody do výtahů a schodišť u ostatních budov a opravil mnohdy až nesmyslně vlo- žené zdi blokující průchod některými chodbami. Ukázku neprůchodné části schodiště v budově C můžete vidět na obrázku číslo 7. Za povšimnutí stojí, že například tento blok schodiště obsahoval hned tři chyby modelu a vysvětluje se tím i důvod, proč čin- nost spojená s úpravou prací po předešlých studentech byla nejvíce časově náročnou.

2Leaf level hierarchy – označuje v programu 3DS Max poslední úroveň dědičnosti. Tímto názvem jsou označeny objekty na konci celé struktury, tedy dále nedělitelné.

(23)

25

Obrázek 7: Ukázka chyb v původním modelu

Po ruční opravě chyb bylo potřeba každé patro vyexportovat jako souvislý model do formátu .ASE pro modely z programu 3DS Max a do formátu .FBX pro modely z pro- gramu Maya. Každý z těchto modelů byl poté importován zvlášť a následně ručně se- staven a usazen s nejlepší přesností, kterou nám UDK ve své drátové síti nabízí. Zde bych chtěl poznamenat, že možnosti práce s pivotem jsou v tomto softwaru velmi uživa- telsky přívětivé a přesné umisťování modelů je tím značně vylepšeno. Usazování jed- notlivých částí se provádí při maximálním přiblížení drátové sítě, ve které je potřeba umístit hrany a hroty sousedních modelů tak, aby se vzájemně překrývaly. Velmi nápo- mocný je zde víceoknový zobrazovací systém, který nabízí nahlížet na model z několika různých úhlů současně. Dalším hojně využívaným nástrojem byla možnost dočasného přemístění pivotu do aktuální pozice výhledu. V neposlední řadě nesmíme zapomenout na snapovací3 funkci, která nám umožňuje automaticky přiřadit hrany a plochy k jejich sousedům. Od využívání snapovací funkce bylo však brzy opuštěno, jelikož při práci se složitými a rozmanitými modely vykazuje častou chybovost a ruční manipulace je tedy mnohem přesnější a rychlejší.

3 Snap – možnost automatického zarovnání dvou objektů, či dosednutí na plochu.

(24)

26

Po importu a osazení jednotlivých pater je potřeba nastavit kolizní chování modelů a opatřit je správným materiálem. Níže představený způsob nastavení kolizí byl průlo- movou částí celé práce a přesně díky této kombinaci způsobu vložení modelů a zvole- ných vlastností v UDK je možné procházet budovy s reálnými vlastnostmi a velmi přes- nými kolizními zónami. Hlavními body, které nesmí být při nastavování kolizí zaškrtnu- té, jsou možnosti: Use Simple Box Collision a Use Simple Rigid Body Collision, viz obrázek číslo 8.

Obrázek 8: Způsob nastavení kolizí budov

Pro účely simulace omítnutého zdiva byl vytvořen vlastní materiál. Kombinací uprave- né 2D textury vzniklé z fotografie stěny a pokročilých možností pro úpravu textur přímo v UDK tak vznikl realistický povrch. Tento povrch byl použit na všechny budovy tak, aby získaly reálnější vzhled. Pro věrné zobrazení barevné škály budov by bylo nutné vy- tvořit speciální texturu obsahující reference vztahující se k rozmístění vnitřního a vněj- šího zdiva u každého části modelu, vzhledem k časové náročnosti bylo od tohoto dopl- nění opuštěno. Při aplikaci materiálů na modely pocházející z modelovacího programu Maya, je třeba dbát zvýšené pozornosti. Tyto modely se exportují s dvoustranným nastavením povrchů a je tedy nutné pohlídat, jakým směrem jsou plo- chy vašeho modelu namířeny a zda mají správné nastavené průhlednosti materiálem.

Pokud není jednostranná průhlednost materiálem požadovaným prvkem, lze možnost rozlišovat mezi jednotlivými stranami materiálu zrušit přímo v UDK. Přesto se můžete setkat s rozdílnou interpretací stínů na takto různorodém povrchu. Proto doporučuji dbát na směrování ploch a materiálů již při prvotním modelování.

(25)

27

Dále bych chtěl upozornit na převodní nutnost mezi veličinami velikostí u modelova- cích programů a UDK. Softwary pracují každý s vlastními jednotkami velikostí a je tedy nutné si hlídat, jaké hodnoty jsou v modelu použity a převést je pro následnou úpravu velikosti v UDK. UDK navíc nevyužívá, žádnou ze známých fyzikálních veličin. Roz- měry jsou v tomto programu reprezentováni takzvanými unity4, pro které platí neofici- ální převodní stupnice [8]. Ač byly ze začátku dodrženy informace o převodních pomě- rech pro dodržení přesné velikosti budov, byl nutné výsledný model areálu zvětšit. Při pokusu o průchod budovami za použití původní velikosti, nebylo možné procházet úz- kými chodbami. Například chodbička kolem schodiště u velké posluchárny v budově E byla pro průchod příliš úzká. Defaultní postava, kterou máme v UDK k dispozici pro pohyb v modelech, je totiž větších rozměrů nežli obyčejný člověk a model musel být přizpůsoben její velikosti.

4.3.3 Okna, dveře, vrata a světla

Po úspěšném vložení koster budov bylo možné přejít k hlavní podstatě práce. Vymode- lovat všechna okna, dveře, vrata a světla a osadit jimi dané budovy. Všechny tyto prvky jsou kompletně vytvořené v UDK a při procházení virtuálním prostředí reagují na stisk klávesy E.

Jako první byla vytvořena okna. Vzhledem k tomu, že původní model budovy C obsa- hoval připravené rámy, pokusil jsem se ho využít k tvorbě oken, které by později byly vyexportovány do UDK. Rámy však byly vytvořeny duplicitní metodou s pevným na- stavením dědičnosti. V praxi to znamenalo, že nešlo upravit samotné okno a exportovat ho, aniž by ovlivnilo zbytek modelu. Tyto rámy obsahovaly také drobné geometrické nepřesnosti, které zamezovaly v tvorbě výplně pro skleněnou plochu. Hlavním důvo- dem, proč nakonec nebylo využito přenosu modelů oken z některého z modelovacích programů, byla špatná interpretace materiálu skleněné plochy v UDK. I přes kompletní přemodelování oken pouze za použití původních rozměrů a jejich osazení správnými materiály, nepodařilo se mi v UDK dosáhnout u skleněné plochy požadovaných vizuál-

4 Unreal Unit – jednotka velikosti v UDK. Jedna Unreal Unita odpovídá přibližně dvěma centimetrům.

Přesný převodní poměr ovšem neexistuje.

(26)

28

ních vlastností. Možnosti tvorby a úprav materiálů v 3DS Maxu a Maye značně převy- šují možnosti UDK a je tedy možné, že některé vlastnosti vytvořeného realistického skleněného materiálu nebyly podporovány.

Pro vytvoření všech komponentů budov bylo nakonec využito kombinace trojrozměr- ných štětců. Tyto štětce umožňují vzájemné skládání za pomoci přičítání a odečítání hmoty. Je však nutné dát si pozor na způsob vyplnění těchto štětců hmotou. Pokud pou- žijete základní metodu přidávání a odebírání hmoty ve formě CSG5. Nebude později možné jakkoliv s objektem pohybovat, či ho dále animovat, nebo s ním jakkoliv zachá- zet. Modely obsahující CSG hmotu jsou automaticky enginem brány jako statické a dále neupravitelné. Výhodou je, že engine při spuštění levelu vypočítá pozici, nasvícení a další vlastnosti hned při startu a dále se již modelem nezabývá, což velmi napomáhá při optimalizaci výkonu. Nevýhodou však je nemožnost s modelem dále manipulovat.

Proto je nutné nejprve vytvořit požadovanou kombinaci štětců, označit kompletní kostru budoucího objektu a převést jí na typ StaticMesh. Tato volba nám vytvoří tvar odpoví- dající kombinaci štětců v Content Browseru, odkud je možné objekt umístit do scény.

Opět je třeba dbát zvýšené pozornosti, neboť nesmíme objekt umístit klasicky jako Sta- ticMesh. Pokud chceme s naším objektem dále pracovat pomocí Kismetu a Matinee, musíme ho do scény vložit jako InterpActorStaticMesh. Objekty s tímto označením nej- sou vždy statické, nýbrž na základě určitých událostí je možné s nimi provádět různé nadefinované akce a Engine tyto události i objekty hlídá. Dále již stačí aplikovat materi- ály, naanimovat reálný pohyb v Matinee a nascriptovat chování těchto objektů v Kisme- tu. Důležité je osadit prostředí Triggery6, které slouží jako detektory přítomnosti uživa- tele a pomocí nichž se spouští následné akce. Co se týká materiálů, u oken bylo použito pro skleněné tabulky enginem předdefinované sklo, které vykazovalo nejlepší vlastnosti a bylo, na rozdíl od vlastního materiálu, průhledné z obou stran.

5 CSG - neboli Constructive Solid Geometry je označení pro objekty, které engine bere jako statické a využívají se v určitých situacích k optimalizaci výkonu.

6 Trigger – Spínač hlídající určitou kruhovou oblast.

(27)

29

Na obrázku číslo 9 níže, můžete vidět ukázku scriptu spravujícího funkci jednoho okna.

Pro každé okno je třeba vytvořit podobný script avšak s rozdílem v objektech, na které působí a ve spínačích, na které reaguje. Tento konkrétní script funguje na základě moni- torování jednoho spínače (Trigger_2) a jeho tří stavů (Used, Touched a Untouched). Ty- to stavy jsou vyvolané interakcí s uživatelem. Chronologická posloupnost funguje v reá- lu tak, že uživatel přistoupí k oknu, kde je skrytá oblast, kterou nám hlídá právě již zmí- něný Trigger. Jakmile uživatel vstoupí do této oblasti, Trigger zaznamená stav Touched a spustí navazující událost. V našem případě je to událost Play Announcement, která je nastavená tak, aby na obrazovku vypsala hlášení, že pro otevření okna je třeba stisknout klávesu E. Jakmile dojde ke stisku klávesy E a zároveň stále stojíme ve hlídané oblasti, spustí se událost Trigger Used. Tato událost nám aktivuje celou řadu dějů. Nejprve se změní nastavení kolizí celého okna tak, abychom nemuseli při otevírání ustupovat a ne- blokovali průběh animace. Poté se spustí animace otevírání, která provede požadovaný pohyb okna v rotaci o 90 stupňů. Jakmile se okno plně otevře, aktivuje se následná opě- tovná změna kolizního nastavení a okno již opět blokuje veškeré okolní objekty. Pokud od okna ustoupíme, opustíme tím oblast monitorovanou Triggerem a spustíme tím udá- lost UnTouched, která nám provede animaci v obráceném sledu, což znamená, že se ok- no zavře. Jelikož již nestojíme v prostoru okna, není třeba měnit kolize v průběhu ani- mace.

Obrázek 9: Script okno

(28)

30

K tvorbě mechaniky dveří a vrat u garáží byl použit podobný postup jako u oken. Mode- ly byly vymodelovány pomocí skládání štětců, jejich převodu na StaticMesh a osazeny jako InterpActorStaticMesh do scény s následnou aplikací materiálu a uvedením do in- teraktivního pohyblivého stavu. Rozdíl je pouze v jejich následné animaci a v použití ji- ného materiálu, který podtrhuje charakter a funkci objektu. Podobnost funkce vrat a dveří umožnila použít i stejnou mechaniku scriptu, pouze za propojení s jiným druhem animace, vložením pěti sekundového zpoždění při zavírání a vlivem pouze na jeden ob- jekt.

Obrázek 10: Script dveře

Světla jsou malou výjimkou mezi interaktivními prvky areálu. Nemají vlastní kolizní model, protože ani zdrojové soubory neobsahovaly vymodelovaná světla. Byly tedy zpracovány jako všesměrové zdroje světelného záření reagující na stisknutí vypínače pomocí vlastního Triggeru a scriptu s ním provázaného. U světel je nutné dát si pozor

(29)

31

na způsob jejich umístění do scény. Zde nesmíme vložit světlo klasicky jako defaultní PointLight7, jelikož klasické světlo nereaguje na příkazy z Kismetu. Každé světlo je te- dy nutné umístit, či převést na formát PointLightToggleable8. V tomto formátu lze se světlem nadále pracovat za použití scriptu viz obrázek číslo 11.

Obrázek 11: Script světlo

Princip tohoto scriptu je poměrně jednoduchý. Skládá se z jednoho Triggeru hlídajícího dva stavy Touched a Used. Stav Touched nám klasicky na obrazovku vypíše hlášku, upozorňující na možnost interakce s vypínačem pomocí klávesy E. Stav Used, reaguje již na samotný stisk klávesy, kterou se spustí virtuální přepínač ovládající reálný stav světla, což je vše co pro správnou funkci potřebujeme.

Veřejné venkovní osvětlení je řešeno umístěním modelů pouličních lamp, které jsou připraveny pro osazení případným zdrojem světla. Aktuální model venkovní osvětlení

7 PointLight – Obyčejné statické všesměrové světlo.

8 PointLightToggleable – Světlo rozšířené o možnost měnit vlastnosti prostřednictvím Kismetu.

(30)

32

nevyžaduje, jelikož se v areálu intenzita osvětlení nemění a světlo vydávané sluncem (DominantDirectionalLight9) je naprosto dostačující.

4.3.4 Vozidla

Jelikož jednou z hlavních myšlenek práce bylo umožnit budoucím uživatelům pohyb po areálu v plně ovladatelném vozidle a aby si mohli vyzkoušet parkování, především v podzemních garážích. Bylo jasným cílem rozmístit do areálu plně ovladatelná vozidla s reálnou interakcí s uživatelem.

K tomuto účelu bylo využito importu externího balíčku od uživatele smokey13 z oficiálního fóra epicgames [14], kde si lidé vzájemně sdílí vlastní výtvory. Bylo při- stoupeno k volbě vozidla z externího zdroje z důvodu, jelikož tvorba vlastního modelu se všemi komponenty by zabrala několik týdnů navíc a rozdíl pro koncového uživatele by nebyl takřka žádný. Použití tohoto balíčku bylo podmíněno updatem vývojového prostředí UDK na nejnovější verzi a převodem celé práce do prostředí této aktualizace.

Stejně jako dostupné zdroje v UDK, tak i tento balíček byl vyvinut pro použití v herním prostředí, proto byl dále upraven dle vlastních potřeb. K automobilu byla vytvořena animace raketometu, který se po nasednutí do vozidla vysunul na střechu. Tuto animaci bylo nutné zrušit úpravou logiky její funkce a přerušením vazeb na události, které jí vy- volávaly. Dále bylo vozidlo nepřirozeně zbarvené s velmi kontrastními odlesky. Nahra- zena byla také paleta zdrojových materiálů v oblasti karoserie a změněno barevné podá- ní u skleněných výplní oken. Dále byla nakonfigurována interakce s charakterem a vo- zidlo naimportováno o správné proporcionální velikosti jako SkeletalMesh10 do scény.

Rozmístění vozidel po areálu odpovídá náhodnému stavu a vždy by mělo být v okolí uživatele minimálně jedno vozidlo k dispozici.

Vozidlo má plně funkční řízení, tlumiče a kola. Dále také obsahuje 12 materiálů pozičně umístěných tak, aby byla v budoucnu možná další změna zbarvení jednotlivých dílů. Na obrázku číslo 12 můžete vidět nastavení pro Materiál okna použitý na vozidlech. Tento

9 DominantDirectionalLight – Hlavní světlo celé scény simulující sluneční paprsky.

10 SkeletalMesh – Označení pro objekt opatřený pohyblivou kostrou, která umožňuje animovat pohyb dílčích částí.

(31)

33

materiál se skládá, ze čtyř různých textur. Každá položka levého sloupce znamená apli- kaci určitého efektu. Propojením textur skrz tyto efekty vznikají různorodé materiály, jako například zdejší šedé průhledné okno s černým podkladem a bílými odlesky.

Obrázek 12: Nastavení materiálu (okno vozidla)

4.3.5 Lidé

Pro dokreslení reality celého modelu bylo třeba oživit areál o modely lidí procházejících se po okolí. Stejně jako u vozidel jsem se snažil najít použitelný balíček z veřejných zdrojů tak, aby mohl být upraven pro vlastní potřeby. Bohužel tržní prostředí je v tomto odvětví velmi zakořeněno a modely lidských postav jsou k dispozici pouze po zakoupe- ní. Jelikož se částky za stažení jednoho takového modelu pohybují v rozmezí 50-150 dolarů, rozhodl jsem se pro tvorbu vlastního animovaného charakteru.

(32)

34

Obrázek 13: Práce s Bipodem v 3DS Max

Vývojové prostředí UDK nabízí pouze postavy v těžké zbroji, či mimozemské roboty, což by na dokreslení reality mnoho nepřispělo. Bylo nutné tedy přejít opět do 3D mode- lovacího softwaru 3DS Max, kde byly vytvořeny dvě jednoduché postavy. Muž s brýlemi a rozcuchanými vlasy a dívka se světlými vlasy. Jako předloha sloužily známé filmové postavy Harryho Pottera a Hermiony Grangerové. Dále bylo potřeba vytvořit animace nohou tak, aby připomínaly chůzi člověka a spojit je s právě vytvořenými mo- dely. 3DS Max obsahuje možnost vytvořit takzvaný Bipod11, což je v podstatě skelet lidské postavy s pohyblivými částmi. Tento skelet je třeba přesně umístit do námi vy- tvořeného modelu postavy tak, aby každý kloub pokud možno přesně odpovídal reál- nému pozici. S bipodem pracujeme ve dvou režimech. Prvním režimem je fáze, při které umisťujeme skelet do námi vytvořené postavy a v druhém režimu poté animujeme po- hyb jednotlivých částí kostry. Bipod i jeho zasazení do modelu můžete vidět na obrázku číslo 13. Pro účely chůze je dostačující zaměřit se převážně na animaci v oblasti nohou, jelikož cílem je vytvořit postavy procházející se po areálu. Stejně jako v každém pro- gramu, pracujícím s pohyblivými prvky, i zde se animace tvoří za použití klíčování snímků v závislosti na časovou osu. I zde máme možnost vybrat si počet snímků za

11 Bipod – Označení pro animovatelnou kostru v 3DS Max.

(33)

35

sekundu a délku animace. Dalším skvělým pomocníkem je možnost Auto Key, která přidává snímky automaticky a vy se tak můžete soustředit pouze na optimalizaci plynu- losti animace a na její realistické podání. Pro tvorbu zcela přirozené chůze je třeba zís- kat roky praxe v oblasti animování lidských postav, a proto nejsou použité animace zce- la dokonalé. Po vytvoření cyklu chůze je třeba pomocí funkce skinned12 propojit pů- vodní model s novou animovanou kostrou. Kosti se dají přiřazovat jednotlivě k určitým částím těla. Zde bylo ovšem využito možnosti sjednotit model do souvislého celku a osadit jej celou kostru najednou. Nyní se po přehrání animace bude pohybovat celá postava. Je však nutné zkontrolovat, zda se zóny okolí kostry nepřekrývají v nežádou- cích bodech, což by mělo za následek deformace modelu v průběhu animace či její ne- správnou funkci. Tyto zóny můžeme zkontrolovat a zároveň editovat po stisknutí tlačít- ka Edit Envelopes v programu 3DS Max.

Obrázek 14: AnimSet Editor v UDK

12 Skin – Termín pro metodu, při které je ke kostře přiřazován reálný model postavy.

(34)

36

Jakmile je vše správně nastaveno, přichází na řadu export modelu včetně animace do formátu .FBX a import jako SkeletalMesh do UDK. Zde se lze pustit do finální fáze práce s postavou. Animaci postavy je možné zkontrolovat v AnimSet Editoru, viz obrá- zek číslo 14. Pokud model obsahuje větší množství animací, lze je zde také upravovat a kombinovat do komplexnějších celků. Pokud vše funguje správně, lze přejít ke kon- krétnímu nastavení každé postavy. Nejprve je nutné přiřadit postavu do rodiny animací, neboli AnimTree13. Dále je nutné nastavit fyzikální model na Interpolating14 a přiřadit modelu správné kolize. Následně lze model umístit do scény jako SkeletalMeshMAT, jelikož ho bude dále animovaný pomocí Matinee, což by s obyčejným SkeletalMeshem nešlo. Po těchto přípravných krocích přejdeme do scriptovací a animovací části UDK, kde se nastaví události a propojí již vytvořený cyklus chůze (AnimSet15) ve smyčce s pohybovou trasou celého modelu po areálu (MovementTrack16). AnimSet i Mo- vementTrack musí být součástí stejné skupiny animací a nebylo by možné s AnimSetem v této skupině pracovat, pokud by k ní nebyl přiřazen. Plynulost celé animace je poté zajištěna pomocí interpolačních křivek a postavy se po spuštění virtuálního prostředí budou procházet po vytyčených trasách. Script i animace pohybu postav je k vidění na obrázku číslo 15.

13 AnimTree – Rodina AnimSetů obsahující všechny animace.

14 Interpolační fyzikální model – model, u kterého jsou fyzikální vlastnosti určovány matematickou ana- lýzou.

15 AnimSet – Soubor pohybů určující animaci určitého objektu.

16 MovementTrack – Osa v Matinee určující pohyb objetu v prostředí na základě klíčování.

(35)

37

Obrázek 15: Scripty a animace postav

4.3.6 Výtahy

Řešení problematiky víceposchoďového výtahu je úkolem pro zkušené programátory.

Doplníme-li k problematice nutnost vyřešit fungování výtahu pouze za použití Triggerů a animací pohybu, vyplyne z toho poněkud složitý úkol.

Pro tvorbu výtahu byla tedy použita jistá forma zjednodušeného mechanismu, který vy- užívá propojení složitějších animací, pomocí méně komplikovaného scriptu. Z pohledu uživatele tak výtah funguje zcela dle očekávání, až na drobnou výjimku, kterou je mož- nost zvolit si cílové patro. Výtah po přivolání přijede do patra uživatele přesně dle reál- né předlohy, po nastoupení se však začne pohybovat napříč budovou s několika vteřino- vým zastavením v každém patře až do doby, dokud uživatel nevystoupí.

Na obrázku číslo 16 můžete vidět script a animaci výtahu v budově informačního cen- tra. Jeho funkce je zajištěna 16 Triggery, polovina je umístěna z vnější a polovina z vnitřní strany výtahových dveří v každém patře. Venkovní triggery spouštějí akci in- formující uživatele o možnosti přivolání výtahu a vnitřní informují o aktuálním patře, ve kterém se výtah nalézá. Hlavní částí je ovšem animace pohybu výtahu mezi jednotlivý- mi patry v určitých časových intervalech. Animace obsahuje také pohyb dveří, závisejí- cí na patře, ve kterém se výtah aktuálně nachází.

(36)

38

Obrázek 16: Script a animace výtahu

4.3.7 Přírodní prvky

Poslední kapitola se věnuje prvkům dokreslujícím realitu. Mezi tyto prvky patří napří- klad slunce a obloha. UDK nabízí několik šablon pro tvorbu 3D prostředí ať už s různou pozicí slunce, různou denní dobou, či dynamickou změnou mezi dnem a nocí. Pro účely našeho modelu bylo zvoleno statické umístění slunce zhruba uprostřed dne tak, aby svě- telné zabarvení okolí při zapadajícím slunci nezkreslovalo výsledný dojem z celého modelu. K tvorbě oblohy včetně oblačnosti byla použita přednastavená šablona s nízkou až nulovou oblačností.

Dalšími prvky dokreslujícími rozmanitost prostředí jsou stromy různých druhů, tvarů a velikostí přímo sousedících s budovou C. K tvorbě stromů byly použity již implemen- tované modely zeleně z prostředí UDK včetně animovaného pohybu simulujícího půso- bení větru. Posledním prvkem je již výše zmiňované zvrásnění zemského povrchu a ne- živé prvky prostředí, jako pouliční lampy a menší bezúčelné budovy.

(37)

39 4.3.8 Textury, materiály a orientační prvky

Textury v prostředí UDK nefungují klasickým způsobem a je nutné je pro použití nejdříve převést na materiál. S materiály se dá dále pracovat a to jejich upravováním, nebo kombinováním v Unreal Material Editoru. Detailní způsoby využití materiálů jsou popsány v kapitolách výše tak, aby popis jejich zpracování více zapadl do celkového konceptu práce. Zde bych chtěl pouze upozornit, že ač model vypadá na první pohled velmi světlý a jednotvárný, počet použitých textur a materiálů není zanedbatelný. Na tvorbu celého areálu bylo využito 26 Textur, 130 Materiálů a 340 modelů. Dále bych chtěl podotknout, že některé povrchy jsou tvořeny kombinováním již existující palety a například všechna okna, nebo všechny dveře jsou tvořeny stejným modelem pouze o různé velikosti. Výsledná rozmanitost je tedy ještě mnohem vyšší. Přesný počet objek- tů použitých ve scéně je v řádech tisíců, avšak získání přesného počtu nebylo možné, je- likož při označení celé skupiny objektů dojde k zamrznutí a následnému pádu UDK.

Zástupcem orientačních prvků je tabule s názvy budov umístěná v exteriéru a popisky budov u vchodů. Tabule zobrazuje síťový model areálu z ptačí perspektivy a umožňuje jednoduchou orientaci v rozmístění areálu. Výchozí bod, ve kterém se objeví uživatel po spuštění 3D prostředí je umístěn přímo před tuto tabuli a proto by ani neznalý člověk neměl mít problém s nalezením požadované budovy. Informační tabuli můžete vidět na obrázku číslo 17.

Obrázek 17: Ukázka orientačního prvku

(38)

40

5. Závěr

Pokud se na průběh zpracování celého tématu podíváme z časového hlediska, nejvíce časově náročné bylo přepracování modelů po předešlých studentech do použitelné po- doby, jejich rozklad na menší díly a následné opětovné složení v UDK. V podstatě se dá říci, že jsem kromě práce na vlastní bakalářské práci, dokončoval další čtyři bakalářské projekty tak, abych na ně mohl navázat. Druhou velice časově náročnou částí bylo osa- zení modelů všemi modely interaktivních prvků. Vzhledem k velikosti budov a jejich rozmanitosti bylo osázení oken a dveří velkou výzvou vytrvalosti.

Dalším bodem pro dosažení prezentovaného výsledku, bylo doplnit model o prvky in- terakce a pohybu, které celý výsledek přiblíží realitě. Ve výsledném modelu máme funkční dveře a vrata. Lze se kochat výhledem z otevřeného i zavřeného okna. K pohy- bu mezi podlažími si můžeme vybrat mezi využitím schodiště či výtahu. Po areálu je možné svézt se jedním z náhodně rozmístěných vozidel a otestovat s nimi možnosti parkování. A v neposlední řadě na své procházce areálem potkáme i další osoby, které korzují slunečným dnem mezi budovami. Všechny tyto vlastnosti působí výborným do- jmem a myslím, že s využitím informační tabule a dalších orientačních prvků mohu prohlásit, že se mi povedlo nasimulovat reálné chování celého komplexu tak, že ho lze použít jako případnou 3D mapu.

Jelikož jedním z mých osobních cílů bylo podání celého průběhu práce tak, aby jí mohl v budoucnu kdokoliv využít jako případný návod. Rozebral jsem jednotlivé části vývo- jových prostředí. Podrobně jsem popsal jejich nejpoužívanější nástroje, včetně vysvět- lení, jakým způsobem se s nimi pracuje a jaké jsou možnosti využití. Vlastní práci jsem chronologicky zaznamenal včetně komplikací, se kterými jsem se potýkal a vždy jsem se snažil upozornit na případné záludnosti a možnosti v nastavení, na které si je třeba při tvorbě dávat pozor. Doufám tedy, že někomu bude mé snažení v budoucnu prospěšné.

Chyby a nedostatky práce zahrnují v tomto případě absenci materiálů s možností rozlišit vnější a vnitřní zdivo budovy. Animace pohybů postav, by bylo možné lépe vyladit a propojit s horní polovinou těla tak, aby vypadaly věrohodněji. Prudké polední slunce vrhá velmi ostré stíny a příliš přesvěcuje barevné podání materiálů. Příště bych zvolil raději mírnější či proměnlivé osvětlení. Při průchodu budovami se může objevit probli- kávání v oblasti zdiva a podlah, což je jev způsobený horší kvalitou původních modelů.

(39)

41

Převodem systému slunce na proměnlivé osvětlení jsem se již dostal k možnostem na- vázání na tento projekt v budoucnu. Zde se samozřejmě nabízí také rozšíření areálu o další budovy, tvorba rozmanitější kolekce vozidel, postav a doplňků v okolním pro- středí. Technika ovládání výtahů by mohla být doplněna o možnost volby cílového patra a pod materiály bych navrhoval vytvořit strukturovaný povrch z důvodu navození lepší- ho trojrozměrného efektu. Možnosti hlasové interakce s postavami, či simulace davové- ho chování jsou poté dalšími možnými návrhy k budoucí tvorbě.

Ač celá práce může zcela bezpochyby sloužit lidem k vytvoření reálné představy o po- době areálu a hlavně rozlehlosti budov, největší přínos si z celé činnosti odnáším já, a to ve formě nabytých zkušeností a dovedností. Zdokonalil jsem se ve velmi zajímavém odvětví. Získal jsem spoustu odborných, užitečných a poučných informací. Zlepšil jsem své dovednosti nejen v 3D modelování, ale také ve skriptování, animování a anglickém jazyce. Za největší přínos ovšem považuji zkušenost s vypracováním takto rozsáhlé prá- ce. Zde bych rád ještě jednou poděkoval vedoucímu práce za projevený zájem o prů- běžný postup, což mě po celou dobu velice motivovalo.

(40)

42

6. Seznam použité literatury

[1] Youtube, kanál věnovaný videonávodům na UDK, WWW:

http://www.youtube.com/user/UDKVideos?feature=watch, online 30.8.2013

[2] Youtube, videonávod zaměřený na techniku animací postav v 3DS Max, WWW:

http://www.youtube.com/watch?v=fpU1yqsT8_A, online 30.8.2013

[3] Youtube, videonávod zaměřený na techniku animace postavy v UDK, WWW:

http://www.youtube.com/watch?v=KprHpS0ZFv0, online 30.8.2013

[4] Youtube, videonávod zaměřený na techniku exportu z Maya do UDK, WWW:

http://www.youtube.com/watch?v=qe1gXlw-76k, online 30.8.2013

[5] Kříž, J.: Mistrovství v 3ds Max, Computer press, 2010, ISBN 9788025124642 [6] Busby, J., Parrish, Z., VanEenvyk, J.: Mastering Unreal Technology: The Art of Le- vel Design, Sams, 2004, ISBN 978-0672326929

[7] Epic Games Community Fórum, WWW: http://forums.epicgames.com, online 30.8.2013

[8] Návod na správné poměry mezi velikostmi v různých programech, WWW:

http://worldofleveldesign.com/categories/udk/udk-maya-how-to-set-up-grid-in-maya-to- match-udk.php, online 30.8.2013

[9] Dokumentace k UDK, WWW: http://www.unrealengine.com/udk/documentation/, online 30.8.2013

[10] Návody na UDK, WWW: http://pctuning.tyden.cz/multimedia/hry-a-

zabava/17565-hratky-s-unreal-engine-cast-i-prvni-krok-do-nerealna?start=1, online 30.8.2013

[11] Web věnovaný vývoji v UDK, WWW: http://www.unrealeditor.cz/, online 30.8.2013

[12] Web s 3D modely, WWW: http://animium.com, online 30.8.2013

[13] Fórum s návody na různé metody exportu modelů, WWW: http://www.gildor.org, online 30.8.2013

[14] Model vozidla, WWW: http://forums.epicgames.com/threads/742901-Free- Custom-Assets-ready-for-UDK!-Only-Download/page3, online 30.8.2013

(41)

43

7. Obsah CD

/

- BP_Toman_Jiří.doc - Zdrojové soubory/

- C/

- E/

- IC/

- UDK verze/

- staré verze/

- Areal_FINAL_END_v2.udk - UDKInstall-2013-07.exe - Externí balíčky/

- Obrázky/

References

Related documents

Studentka použila 67 odborných zdrojů pro zpracování své práce, což je pro bakalářskou práci nadstandard, který byl podstatný pro přínos práce tohoto zaměření..

a) Teplota na pracovišti – jakmile se na pracovišti vyskytují více než dva lidé, bývá teplota v pracovním prostředí problém. Někomu je teplo, někomu

Na obrázku výše je možné vidět dva známé typy reklamy na YouTube. První reklamou, která je umístěna napravo od spuštěného videa a nad seznamem nabízených videí,

K odrazu by měla cvičenka přidat doprovodný pohyb paží ze zapažení do vzpažení (ZÍTKO,

Prvním koncepčním návrhem rámu byla varianta s výměnnými rameny. V této koncepci bylo pracováno s návrhem centrálního kříže, na který by byla osazena řídící jednotka, a

Na obrázku 4.1 lze také vidět, že v některých řadách regálů je umístěn současně materiál pro dvě linky. V uličkách, mezi těmito regály, kde se nakládá materiál,

Uveďte, zda v práci na přípravě a realizaci tanečních táborů pokračujete, čím Vás práce inspirovala a co byste, díky důslednému zhodnocení, v nové realizaci

Teoretickii d6st je logicky dlendnS. Autor popisuje pifrodnf vlSkna rostlinndho pfivodu jejich chemickd sloZenf a mechanickd vlastnosti. Poukazuje na kritickou