}w!"#$%&'()+,-./012345<ya



Similar documents
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Ústredná knižnica FaF UK informuje svojich používateľov o prístupe do ONLINE VERZIE EUROPEAN PHARMACOPOEIA (EP)

PRÍSPEVOK K APLIKÁCII SYSTÉMU NI LABVIEW VO VYŠETROVANÍ KONTAKTU PNEUMATIKY A TERÉNU

BEZOLEJOVÉ KOMPRESORY

Vzor pre záverečnú prácu

Web of Science a ďalšie nástroje na Web of Knowledge

Počítačová grafika a grafická informácia

Stereoskopia v počítačovej grafike. Tomáš Duras

9 Virtuálna realita (VRML)

MODELOVANIE PRIESTOROVÉHO USPORIADANIA A DICHOTÓMIE CENTRUM PERIFÉRIA

LV5WDR Wireless Display Receiver Rýchla príručka

Kozmické poasie a energetické astice v kozme

Príprava dát s bielou na tlačový stroj

PLAVECKÝ KLUB RIMAVSKÁ SOBOTA. III. ročník POHÁR PRIATEĽSTVA

Management of agricultural production in the conditions of information society

WLA-5000AP. Quick Setup Guide. English. Slovensky. Česky a/b/g Multi-function Wireless Access Point

J&T FINANCE GROUP, a.s. a dcérske spoločnosti

Príklady riadenia kvality z vybraných krajín

Sledovanie čiary Projekt MRBT

WONDERWERK IN YOUR HOME

Tornáda. a iné nebezpečné búrkové javy na území Slovenska

M V Alarm 12V Užívateľská a inštalačná príručka Uživatelská a instalační příručka User and Installation Manual

Rychlý průvodce instalací Rýchly sprievodca inštaláciou

E-puck knihovna pro Python

Ekonomická univerzita v Bratislave REVUE SOCIÁLNO-EKONOMICKÉHO ROZVOJA

PLATNOSŤ POBYTU DO/validity of the residence permit. VLASTNORUČNÝ PODPIS/signature

OSOBNOSTNÉ ASPEKTY ZVLÁDANIA ZÁŤAŽE

Príručka na vyplňovanie

VITAJTE V POKROKU. Obdivuhodné diagnostické možnosti, služby a koncepcie pre servisy úžitkových vozidiel

Môže sa to stať aj Vám - sofistikované cielené hrozby Ján Kvasnička

Margita Vajsáblová. Zvislá perspektí. perspektíva objektu v prieč. priečelnej polohe. U k

: Architectural Lighting : Interiérové svietidlá

Installation manual Wireless Keypad

LEG BANDAGE Bandáž dolných končatín

Linguae.eu 3/2011. A Trimestrial European Scientific Language Review. J u n e 2 ISSN Good communication

Tetanus ako ho nepoznáme

Vizualizácia objektov s využitím technológií. zmiešanej reality. Úvod

KONTAKT CHEMIE Kontakt PCC

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

ŽILINSKÁ UNIVERZITA V ŽILINE

ING (L) Société d Investissement à Capital Variable 3, rue Jean Piret, L-2350 Luxembourg R.C.S.: Luxembourg B č (ďalej ako spoločnosť )

Osídlenie Kostolianskej doliny

IBM Security Framework: Identity & Access management, potreby a riešenia.

Technika a vzdelávanie

ITIL výkladový slovník a skratky. Slovenčina

Ján Hanák. Základy databázového vývoja v prostredí Visual Studio LightSwitch 2011

METODICKÝ POKYN na vypracovanie dotazníka

TRADIČNÉ NÁSTROJE VERZUS NOVÉ FORMY A TRENDY V MARKETINGOVEJ KOMUNIKÁCII PODNIKOV NA SLOVENSKU

EXTERNÁ ČASŤ ANGLICKÝ JAZYK. úroveň B2 kód testu: 9240 NEOTVÁRAJTE, POČKAJTE NA POKYN! PREČÍTAJTE SI NAJPRV POKYNY K TESTU.

Pracovná skupina 1 Energetický management a tvorba energetických plánov mesta

PERFORMATÍVNA SEKVENCIA LARPOVEJ HRY. MATEJ MOŠKO Ústav divadelnej a filmovej vedy Slovenskej akadémie vied, Bratislava

~>- _a: Oa: C'~ ca I-C' W<C 0<C ~LL CI- geský úřad zeměměřický a katastrální Urad geodézie, kartografie a katastra Slovenskej republiky

Operačné systémy, štúdijný text pre POS a TPS 1/ História programového vybavenia počítačov

MOŽNOSTI VYUŽITIA SIMULÁCIE VYHODNOTENIA PARAMETROV OSVETLENIA

Evaluation of the radiation load of children in neonatal departments of Slovak hospitals Maruniaková A. 1), Nikodemová D. 2), Greschner J.

Kamerové systémy na monitorovanie objektov

Berlín, symfónia veľkomesta k tematike mesta vo filme a literatúre

PORUCHY A OBNOVA OBALOVÝCH KONŠTRUKCIÍ BUDOV - Podbanské 2012

TVORBA KOMUNIKAČNEJ KAMPANE S VYUŢITÍM DIGITÁLNYCH MÉDIÍ

Ministerstvo dopravy, pôšt a telekomunikácií Slovenskej republiky RÁDIOTELEFÓNNE POSTUPY A LETECKÁ FRAZEOLÓGIA CIVILNÉHO LETECTVA

NÁVOD NA INŠTALÁCIU MSR3-09HRN1 MSR3-09HRN1-QE MSR3-12HRN1 MSR3-12HRN1-QE MSR3-18HRN1 MSR3-18HRN1-QE MSR3-24HRN1 MSR3-24HRN1-QE

Návod k použití: Boxovací stojan DUVLAN s pytlem a hruškou kód: DVLB1003

Použitie programu PREZI vo vyučovacom procese

Angličtina bez knihy a bez pera

POKUS O ENERGETICKO-INFORMAÈNÚ INTERPRETÁCIU NIEKTORÝCH MAGICKÝCH LIEÈEBNÝCH PRAKTÍK V TRADIÈNEJ ¼UDOVEJ KULTÚRE SLOVENSKA

Sťahovanie ebooks v rozhraní EBSCOhost

NÁVRH TÉM BAKALÁRSKYCH PRÁC V AR 2014/2015

TECHNICKÁ UNIVERZITA V KOŠICIACH. BSC metóda vo vybranej leteckej spoločnosti

Prestige 660HN-T3A Príručka k rýchlej inštalácii splittra a smerovača (routra)

EN User manual for Solight 1T04 Breath Analyzer

Čo je Office 365? Výhody Microsoft Office 365:

SLOVENSKÁ POĽNOHOSPODÁRSKA UNIVERZITA V NITRE FAKULTA EKONOMIKY A MANAŽMENTU BAKALÁRSKA PRÁCA Katarína Nagyová

From Product Idea to Reality.

Politológia a politická analýza. Syllabus kurzu

štátne deti na jednej lodi? Rómske deti v detských domovoch Editovala ELENA G. KRIGLEROVÁ

Investície do ľudského kapitálu ako predpoklad rozvoja podniku

RIADENIE REGÁLOVÉHO ZAKLADAČA A KOMUNIKÁCIA S RIADENÍM DOPRAVNÉHO SYSTÉMU VLAKOV

Vodcovstvo a vedenie ľudí. Iveta Mihoková

8.2 Transformace, množinové operace

ADAM A SYN LED LIGHT STRIP

1. Oblast rozvoj spolků a SU UK 1.1. Zvyšování kvalifikace Školení Zapojení do projektů Poradenství 1.2. Financování

Sprievodca investovaním do zlata

Kľúčové slová. Keywords. Organizačná kultúra, prostriedky organizačnej kultúry, prostredie organizačnej kultúry, zmena organizačnej kultúry.

Towards the optimization of IT service delivery processes in governmental environment

Pripojenie k internetu v pevnej sieti

Aplikácia učebných štýlov vo vyučovaní anglického jazyka

Mobilné zariadenia a ich budúci vývoj. DIPLOMOVÁ PRÁCA Textová časť MILAN HRUBÝ

My Passport Ultra Metal Edition

Systémy bezpečnosti potravín 1

MARKETINGOVÝ PLÁN ZAVEDENÍ NOVÉHO VÝROBKU NA TRH

WK29B / WK29W. Bluetooth Wireless Slim Keyboard. User manual ( 2 5 ) Uživatelský manuál ( 6 10) Užívateľský manuál (11 15)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV VÝROBNÍCH STROJŮ, SYSTÉMŮ A ROBOTIKY

Dokážem zasiahnuť ľudské srdce dizajnom? Bc. Peter Chmela

Spravodaj c 94. Prihlasujem sa na predná ku prof. PhDr. Martina WIHODU, Ph.D. o jeho najnov ej publikácii Morava v dob kní ecí

Tajomstvo života plného zdravia a pohody

Školenia v oblasti IT:

Kľúčové slová: simulakrum, remediácia, nové médiá, digitalizácia, imitácia Keywords: simulacrum, remediation, new media, digitalization, imitation

VPLYV INFORMAČNÝCH A KOMUNIKAČNÝCH TECHNOLÓGIÍ NA DETI A MLÁDEŽ NA SLOVENSKU

Nový Office. Pre domácnosti a malé podniky. Ovládanie dotykom. Roaming. Na každé zariadenie. Služba

Transcription:

}w!"#$%&'()+,-./012345<ya Masarykova univerzita Fakulta informatiky Stereo adventúra s využitím programu Adobe Flash Bakalárska práca Branislav Paulis Brno, jar 2011

Kópia listu zadania bakalárskej práce Kópia listu zadania bakalárskej práce ii

Prehlásenie Prehlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. V Brne dňa 19. mája 2011 Branislav Paulis Vedúci práce: Mgr. Lukáš Kalčok iii

Poďakovanie Niekoľkými slovami by som chcel teraz poďakovať predovšetkým svojmu vedúcemu Mgr. Lukášovi Kalčokovi za jeho čas, rady a pripomienky, ktoré mi počas vedenia práce veľmi ochotne poskytoval. Veľké ďakujem rád vyslovujem aj svojej milujúcej rodine a priateľom, ktorí ma podporovali počas všetkých dní môjho štúdia. Vďaka a česť patrí tým, ktorí mi závidia a hlavne aj tým, ktorým zasa závidím ja. Bez vás všetkých by nebola motivácia. iv

Zhrnutie Cieľom tejto bakalárskej práce je vytvoriť krátku hru zo žánru adventúra využívajúcu pasívnu stereoprojekciu. Hra je spracovaná ako 2D aplikácia, ktorá však vďaka vykresleniu trojrozmernej grafiky a stereoskopickému zobrazeniu vytvára ilúziu priestoru s treťou dimenziou. Implementovaná je pomocou nástroja Adobe Flash a jej programová čast demonštruje predovšetkým algoritmus na hľadanie cesty. Táto adventúra sa zameriava na interakciu človeka s počítačom v prostredí simulovanej virtuálnej reality a je ovládaná pomocou herných ovládačov Wiimote a Kinect. V texte práca oboznamuje čitatela s herným žánrom adventúra, s princípmi stereoskopie, popisuje tvorbu grafiky a programovej implementácie výslednej hry. Abstract The goal of this bachelor thesis is to create a short game of adventure genre that uses passive stereo projection. The game is 2D application with illusion of three-dimensional space because of 3D graphic rendering and stereoscopic representation. It is implemented using Adobe Flash and its program part demonstrates especially pathfinding algorithm. This adventure is centred on human-computer interaction in the simulated virtual environment and is controlled with the appropriate gaming devices such as Wiimote and Kinect. Thesis text acquaints the reader with adventure game genre, principles of stereoscopy, describes a graphics creation and a programming implementation of the game development process. v

Kľúčové slová adventúra, stereo hra, Stroj #257, Adobe Flash, ActionScript 3.0, 3ds Max, 3D grafika, rendering, animácia charakteru, Biped, stereoskopia, pasívna stereoprojekcia, virtuálna realita, Human-Computer Interaction, Wiimote, Kinect, hľadanie cesty, plánovanie cesty, A* algoritmus Keywords adventure game, stereo game, Adobe Flash, ActionScript 3.0, 3ds Max, 3D graphics, rendering, character animation, Biped, stereoscopy, passive stereo projection, virtual reality, Human-Computer Interaction, Wiimote, Kinect, pathfinding, path planning, A* algorithm vi

Obsah 1 Úvod.................................. 1 2 Herný žáner adventúra....................... 3 2.1 Vznik žánru............................ 4 2.2 Typy adventúr.......................... 5 3 Stereoskopia a virtuálna realita................. 8 3.1 Kľúče vnímania priestoru a hĺbky................ 8 3.2 Princíp stereoskopického zobrazenia.............. 10 3.3 Metódy stereoprojekcie...................... 12 3.4 Interakcia v prostredí virtuálnej reality............. 14 3.5 Laboratórium interakcie človeka s počítačom......... 16 4 Návrh hry a tvorba grafiky.................... 18 4.1 Nástroj Adobe R Flash R CS4 Professional........... 18 4.2 Námet, scenár a grafický štýl.................. 19 4.3 Tvorba a animácia charakteru.................. 20 4.4 Tvorba scén............................ 23 5 Implementácia............................ 26 5.1 Dekompozícia aplikácie..................... 27 5.2 Generovanie priestorového zvuku................ 29 5.3 Pohyb postavy a hľadanie cesty................. 31 5.4 Rozširovanie aplikácie a jej ďalšia použiteľnosť........ 35 6 Záver.................................. 38 Literatúra................................. 40 Zoznam obrázkov............................ 43 Zoznam zdrojových kódov....................... 44 A Spustenie a ovládanie hry..................... 45 B Propagačný plagát hry....................... 46 C Obsah priloženého média..................... 47 vii

Kapitola 1 Úvod Počítačové hry sú dnes považované za druh zábavy, ktorý má človeku napomáhať zbaviť sa stresu a slúžiť ako určitá forma oddychu. Neustále sa však vedú dohady, ako by ideálne mala takáto hra vyzerať, najmä čo sa týka príbehu. Kým jedni zastávajú názor, že kvalitná zápletka a príbeh je niečo, čo človek hľadá len v knihách a filmoch, na druhej strane sú aj ľudia, ktorí absenciu silnejšieho príbehu výrazne odmietajú. Vzbudenie emócií je pre mnohých neoddeliteľnou súčasťou každého audiovizuálneho zážitku, či už u diváka, alebo hráča. Samozrejme aj hry majú svoje žánre, a tak vzniká široké spektrum rôznych typov hier určených pre daného konzumenta. Táto bakalárska práca si kladie za cieľ vytvoriť krátku logickú hru s príbehom zo žánru adventúra. Má poslúžiť ako prezentačný materiál pre Laboratórium interakcie človeka s počítačom (HCI Laboratory) sídliace na Fakulte informatiky Masarykovej univerzity. Z toho pramení snaha vniesť do klasickej 2D (prípadne možno hovoriť až o 2.5D kap. 2.2 ) adventúry tretí rozmer využitím v dnešnej dobe čoraz populárnejšej stereoprojekcie nachádzajúcej sa tiež práve v tomto laboratóriu. Nakoľko žiadny zo známych vývojových nástrojov a herných enginov určených špeciálne na tvorbu adventúr momentálne nedisponuje podobnými stereoskopickými možnosťami, praktická časť práce zahŕňa okrem samotnej hry aj implementáciu základného herného jadra, na ktorom bola hra postavená. Písomná časť bakalárskej práce je členená do niekoľkých kapitol. V prvej časti textu sa zaoberám herným žánrom adventúra, jeho históriou, logickými hádankami a ostatnými prvkami, ktorými je špecifický. Ďalej v práci uvádzam druhy adventúr, či už po stránke atmosférickej alebo z hľadiska grafického a technického spracovania. Nasledujúca obsiahlejšia časť je venovaná stereoskopickému zobrazovaniu vnímaniu hĺbky človekom, princípom a metódam stereoprojekcie. S tým je úzko spätý pojem virtuálnej reality, o ktorej tiež pojednáva tretia kapitola. Nakoniec sa v tejto kapitole venujem technickému vybaveniu HCI laboratória, a to konkrétne pasívnej stereoprojekcii i ovládačom Wiimote a Kinect. V ďalšej kapitole krátko spomínam program Adobe Flash CS4 Professional a prečo som sa rozhodol pre imple- 1

1. Úvod mentáciu hry práve pomocou tohto programového nástroja. Nasleduje popis ako vznikala už samotná hra, najmä jej grafická časť, čo zahŕňa modelovanie, oživenie hernej postavy, vykresľovanie herných scén a ich vzájomná spätosť. V poslednej časti textu práce popisujem vývoj a implementáciu. Väčšiu pozornosť venujem jednému z najdôležitejších prvkov programu, a to pohybu hráča po scéne a jeho hľadaní si cesty pomocou A* algoritmu. Súčasťou tejto kapitoly je nakoniec i návod, ako možno aplikáciu rozšíriť a vyvinuté jadro ďalej použiť. V závere si dovoľujem zhrnúť niekoľko postrehov z procesu vývoja. Rovnako záver pojednáva o možnostiach, akými by sa mohol uberať prípadný ďalší vývoj herného jadra. Výsledkom práce je tradičná adventúra obohatená o stereo efekt, ktorá sa skladá z neveľkého počtu len 6 obrazoviek (herných lokácií). Napriek tomu však ponúka hráčovi priestor na rozvíjanie logického myslenia pomocou interakcie s rôznymi predmetmi a hernú dobu závislú na jeho počínaní. 2

Kapitola 2 Herný žáner adventúra Adventúra je herný žáner dosahujúci svoju najväčšiu popularitu na prelome osemdesiatych a deväťdesiatych rokov 20. storočia. Založený je predovšetkým na narácii, čiže rozprávaní. Adventúry sa preto často vyznačujú hlbším príbehom s prepracovanou zápletkou. Hráč v podobe hlavného hrdinu je súčasťou deja, väčšinou striktne lineárneho, kde sú mu predkladané rôzne logické úlohy, skladačky a iné hádanky, ktorých vyriešenie je nutnou podmienkou ďalšieho postupu v hre. Ďalším charakteristickými prvkami sú napríklad interakcia s NPC 1 či inventár hlavného hrdinu, do ktorého sú počas hrania zbierané rôzne predmety, ktoré je potrebné na príslušnom mieste v hre opäť použiť. Iba samotný pohyb hráča medzi jednotlivými lokáciami je v niektorých prípadoch dopĺňaný rôznymi medzihrami, no klasická adventúra dodržujúca konvencie predpísané žánrom neobsahuje žiadne, prípadne minimum akčných prvkov. Adventúra je z veľkej časti deterministická a prvky náhody sa v nej vyskytujú len zriedka. Často môže byť definovaná pomocou troch typických elementov. Tri základné charakteristiky adventúry [11]: Rozprávanie Dejová línia je pre adventúru nevyhnutná. Kým v akčnej hre typu first-person shooter môže byť motiváciou k postupu v hre zneškodnenie čo najväčšieho množstva nepriateľov, u adventúry to je predovšetkým postupné odhaľovanie príbehu, čo núti hráča prejsť hru do konca. Hádanky Logické hádanky, hlavolamy či skladačky (z angl. puzzles) môžu súvisieť s príbehom viac alebo menej. Používajú sa také, čo sú do deja zakomponované sofistikovanejšie, ako napríklad kombinovanie určitých predmetov v inventári, komunikácia s postavami. Na druhej strane 1. Non-player character (z angl.) je postava v hre, ktorá nie je ovládaná hráčom, ale počítačom za účelom interakcie a poskytovania rôznych služieb alebo úloh. 3

2. Herný žáner adventúra v adventúrach nájdeme aj hlavolamy bez výraznejšej súvislosti s kontextom, čo sú minihry podobné šachu alebo piškôrkam. Preskúmavanie Hráč hľadá na obrazovke klikateľné plochy, nazývané tiež hotspoty, reprezentované objektami, ktoré je možné preskúmať alebo s nimi manipulovať, či miestami ovplyvňujúcimi pohyb hrdinu. Preto sú adventúry častokrát označované prívlastkom point- n-click. 2.1 Vznik žánru Názov adventúry (z angl. Adventure games) siaha do úplných počiatkov žánru, do roku 1977. Prvá hra z tohto žánru niesla názov Colossal Cave Adventure a jej autormi boli William Crowther a Don Woods. Jednalo sa o textovú adventúru napísanú v jazyku Fortran, zloženú približne zo 700 riadkov zdrojového kódu a asi rovnakého počtu riadkov textových dát [12]. C LIGHT LAMP 9404 IF (( IPLACE (2). NE.J). AND.( IPLACE (2). NE. -1)) GOTO 5200 PROP (2)=1 IDARK =0 CALL SPEAK (39) GOTO 2011 C LAMP OFF 9406 IF (( IPLACE (2). NE.J). AND.( IPLACE (2). NE. -1)) GOTO 5200 PROP (2)=0 CALL SPEAK (40) GOTO 2011... 39 YOUR LAMP IS NOW ON. 40 YOUR LAMP IS NOW OFF. 75 ANYWAY, NOTHING EXCITING HAPPENS. 77 YOUR BOTTLE IS EMPTY AND THE GROUND IS WET. Kód 2.1: Ukážka pôvodných zdrojových kódov Colossal Cave Adventure v jazyku Fortran [13] Hráčovi bol poskytnutý popis prostredia, v ktorom sa nachádza, a predmetov ležiacich v jeho okolí. Zadávaním jednoduchých textových príkazov typu otvor dvere či vezmi kľúče potom hru ovládal. Takto nastával pocit čítania literárneho diela, v ktorom je navyše možné interaktívne ovplyv- 4

2. Herný žáner adventúra ňovať jeho dianie. Preto to boli práve textové adventúry, nazývané aj interaktívne fikcie, ktoré sa zakrátko stali veľmi populárne. 2.2 Typy adventúr S príchodom grafických rozhraní bola do textových adventúr postupne vnášaná prvá grafika. Tým, že jednotlivé lokácie už nebolo nutné podrobne opisovať v niekoľkých vetách, prestávala sa využívať fantázia a predstavivosť hráča v takom veľkom rozsahu. No na druhej strane grafické spracovanie hry prinieslo do jej hrateľnosti úplne nový rozmer. Súčasné obrovské možnosti grafického spracovania i vyspelá možnosť vizuálnej komunikácie a vyjadrenia spôsobili diferenciu žánru. Kategorizovať adventúry môžme podľa príbehu a celkovej atmosféry napríklad na investigatívne detektívky, hororové, fantastické, humorne ladené či s komiksovým alebo detským spracovaním. Väčšina atmosférických prvkov je však dosiahnutá práve prostredníctvom grafiky. Nasledujúce rozdelenie adventúrnych hier sa týka ich technického a grafického spracovania. Rozdelenie adventúr podľa grafického spracovania [11]: 2D ručne kreslená Technika najpoužívanejšia začiatkom deväťdesiatych rokov. Jednotlivé scény, predmety a postavy sú kreslené rukou na papier a následne digitalizované pomocou skeneru, alebo kreslené na počítači priamo, napr. pomocou grafického tabletu. Tento grafický štýl možno považovať za najosobitejší, čo sa týka autorstva. Typickými predstaviteľmi sú veľmi populárne série Broken Sword, Runaway, humorom nabitý Polda z dielne českých vývojárov alebo kúzelné Machinarium. 2D predrenderovaná Scény vznikajú vytvorením za pomoci modelovacieho softvéru na tvorbu trojrozmernej grafiky. Po pridaní textúr a svetiel sú následne vykresľené do rovinných obrázkov. 2.5D Lokácie v hre sú rovnako predrenderované do dvojrozmerných obrazoviek ako v prípade 2D adventúr. Herný charakter je však 3D model vykresľovaný v reálnom čase. Hybridný názov 2.5D teda vznikol ako pomyselná hranica medzi hrami využívajúcimi dve alebo tri dimenzie. V súčasnosti asi najpopulárnejší typ adventúr. Patria sem tituly fantazíjnej série Syberia i hororový Posel smrti. 5

2. Herný žáner adventúra 3D real-time Do poslednej kategórie zaraďujeme niekoľko málo hier, ktoré skutočne využívajú 3D prostredie. Ako hrdina, tak aj lokácie sú vykresľované v reálnom čase, čo umožňuje rôzne zmeny pohľadov a natočenia kamery. Príkladom sú novšie epizódy Broken Sword. Avšak diela ako Silent Hill, ktoré napriek tomu, že v istej miere využívajú prvky adventúry, zaraďujeme do iných žánrov (akčná adventúra alebo survival horror). Obr. 2.1: Ukážky z adventúr: a) Broken Sword 2, b) Runaway, c) Syberia 2, d) Posel Smrti 2 [11] Prevažné množstvo dnešných adventúr je spracovaných z pohľadu tretej osoby, nazývané sú 3 rd person, kde je celú dobu charakter viditeľný na obrazovke. Pomernú časť však tvoria aj hry z pohľadu prvej osoby, inak 1 st person. Tu sa hráč dokáže jednoduchšie zosobniť s úlohou hlavného hrdinu. V prvom prípade však neustály vizuálny kontakt s hernou postavou uceluje jej identitu a je jedným z nosných prvkov dopĺňajúcich atmosféru v hre. 6

2. Herný žáner adventúra Bohužiaľ, je nutné konštatovať, že pojmom umierajúci žáner sa začína adventúra dnes označovať čoraz častejšie. Či tomu tak skutočne je, alebo ide len o výroky konzumentov počítačových hier, čo uprednostňujú nenáročnú zábavu v hre pred akousi mentálnou výzvou prameniacou z adventúry, je polemizujúce. V dnešnej dobe, kedy sa trh s hrami zameriava predovšetkým už na herné konzole, adventúra bude musieť prejsť modernizáciou a do určitej miery sa prispôsobiť súčasným trendom. Faktom zostáva, že stále sa každoročne na trhu objavuje niekoľko kvalitných adventúrnych titulov. Rovnako môžeme sledovať pomerne bohaté zastúpenie tohto žánru na poli voľne šíriteľných freeware hier. Veľkému množstvu takto vzniknutých amatérskych adventúr z radov fanúšikov vďačí aj existencia niekoľkých voľne dostupných herných enginov a vývojových nástrojov určených predovšetkým na tvorbu tohto typu hier. Medzi najznámejšie patrí zahraničné Adventure Game Studio alebo český Wintermute Engine. 7

Kapitola 3 Stereoskopia a virtuálna realita Vnímanie priestoru u človeka je popri sluchovom ústrojenstve uskutočňované predovšetkým pomocou zraku. Pocit priestorového videnia vzniká v mozgu ako dôsledok zlúčenia a vyhodnotenia dvoch obrazov získaných z pravého a ľavého oka, ktoré sú premietané na sietnici. Vďaka vzdialenosti očí (v priemere 6,3 cm) sú jednotlivé obrazy získavané z mierne odlišného ulha v horizontálnom smere. Toto má za následok spojenie dvoch obrazov v určitej vzdialenosti od pozorovateľa. Hĺbkový vnem zaisťujú vodítka monokulárne, pokiaľ platia iba pre jedno samostatné oko a binokulárne, ak sú potrebné obe oči. Z hľadiska vrodených či získaných schopností človeka je možné rozdeliť tieto kľúče na fyziologické a psychologické [15, 16]. 3.1 Kľúče vnímania priestoru a hĺbky Vo všeobecnosti za psychologické vodítka označujeme väčšinu monokulárnych kľúčov. Sú to poznatky o vlastnostiach okolitého sveta, ktoré človek získava zo skúseností počas raných fáz života. Oproti tomu časť našej schopnosti vnímať hĺbku je vrodená a vypovedajú o nej fyziologické vodítka [14]. Psychologické kľúče: Svetlo a tieň Je jedným zo základných kľúčov pri určovaní tvaru (reliéfu) a hĺbky. Jasné a kontrastné predmety sa zdajú byť bližšie ako predmety tmavé a upadnuté v chladných šedotónnych odtieňoch. Umiestnenie objektu v priestore môže byť zrejmé aj z tieňu, ktorý vrhá. Pomocou veľkosti a smeru vrhnutého tieňa rozlišujeme tiež vzájomnú polohu jednotlivých objektov [14]. Relatívna veľkosť Pramení z jednoduchej vedomosti, že vzdialenejšie predmety vidíme menšie ako tie, ktoré sa nachádzajú v našej blízkosti. Spôsobuje to 8

3. Stereoskopia a virtuálna realita veľkosť obrazu premietaného na sietnici a znalosť rozmerov pozorovaných predmetov. Napríklad ak vidíme dve ľudské tváre a jedna z nich je viditeľne väčšia, apriórne vieme usúdiť, že tento človek je vzhľadom k menšej tvári v popredí. Perspektíva Vzduch je nedokonale priehľadné prostredie, preto rozlišujeme tzv. vonkajšiu perspektívu, kde na svetelné podmienky vplývajú malé čiastočky v atmosfére. Príliš vzdialené objekty, čo je typické pre otvorenú krajinu, sú rozostrené a málo kontrastné [14]. Na druhej strane sa stretneme s pojmom lineárna perspektíva, ktorej základom sú zákony stredového premietania, čiže zužovanie sa smerom k horizontu. Objekty sa na horizonte zbiehajú do jedného bodu (takzvaného úbežníka). Gradient textúry Označuje hustotu skreslenia textúry rastúcu so vzdialenosťou predmetu. Textúra vzdialeného povrchu je menej výrazná a chudobnejšia na detaily. Tento efekt je najvýraznejšie pozorovateľný na pravidelných textúrach s geometrickými vzormi, ktoré sa v dôsledku lineárnej perspektívy postupne zmenšujú [20]. Prekrývanie Alebo tiež interpozícia sa ukazuje ako veľmi výrazné vodítko pri určovaní relatívnej hĺbky objektov v obraze. Ak predmet disponuje neúplným prekrytým obrysom, logicky sa jeho umiestnenie javí za predmetom, ktorý ho prekrýva. Fyziologické kľúče: Akomodácia Prispôsobenie, teda zmena optickej mohutnosti šošovky. Svalové vlákna nachádzajúce sa v oku umožňujú zaostrovať na rôznu vzdialenosť, a tým vytvárať ostrý obraz práve na sietnici [14]. Pohybová paralaxa Fyziologické vodítko, ktoré je spolu s akomodáciou monokulárne, vychádza z rýchlosti pohybu obrazu objektu po sietnici. Vzdialené predmety sa zdajú byť pomalšie. Preto pohybová paralaxa výrazne posilňuje priestorový efekt na scéne. 9

3. Stereoskopia a virtuálna realita Obr. 3.1: Vplyv psychologických vodítok na vnímanie hĺbky (lineárna perspektíva, gradient textúry, relatívna veľkosť, svetlo a tieň) Konvergencia Ľudské oči sú schopné konvergovať, teda stáčať sa k sebe, za účelom premietania obrazu do stredu sietnic oboch očí. Pri pohľade na príliš vzdialené objekty sú optické osi prakticky rovnobežné. Pri simulácii 3D obrazu je nevyhnutné vyvarovať sa divergencii a súčasne i prehnanej konvergencii očí, inak sa obraz v mozgu nikdy nespojí. Binokulárna disparita Jedno z najvýraznejších vodítok pre priestorové videnie v stredných dĺžkach. Kvôli vzdialenosti očí (retinálnej disparite), každé z nich vytvorí vodorovne mierne posunutý obraz. Výsledný predmet potom leží na tzv. horopteri, čo je miesto, kde sa spájajú obrazy s rovnakou hĺbkou. Teoreticky má tvar kruhu, no u každého človeka sa môže toto vnímanie mierne líšiť [14, 16, 20]. 3.2 Princíp stereoskopického zobrazenia Slovo stereoskopia má pôvod v gréckych výrazoch stereos (pevný, priestorový) a skopien (vidieť, pozerať sa). Jej princípy sú známe už viac ako 150 rokov [14]. V súčasnosti však nastáva obrovský rozmach 3D technológií najmä vo filmovom priemysle, čo je vlastne aplikácia dobre známych princípov stereoskopie. Tak ako sa v ľudskom mozgu spájajú dva plošné obrazy očami pozorovaného skutočného sveta do trojrozmernej ilúzie, zhotovia sa záznamy z dvoch susediacich kamier. Existuje niekoľko typov nastavenia kamier. Prvé možné nastavenie popisujú uhlovo zbiehavé kamery (toed-in). Ďalším typom sú paralelné kamery, kedy sú ich optické osi vzájomne rovno- 10

3. Stereoskopia a virtuálna realita bežné. Tu musíme rozlíšiť symetrický a asymetrický FOV 1. Ak sú zorné polia kamier reprezentované symetrickými kužeľmi, dochádza k strate obrazovej informácie na bočných stranách týchto kužeľov. Preto sa v praxi častejšie využívajú snímacie zariadenia so schopnosťou asymetrického pohľadového kužeľa [20]. Táto technika zhotovovania stereoskopického záznamu neohýba vnímanie priestoru ako je to v prípade konvergujúcich kamier. Toed-in kamery disponujú ďalšou nevýhodou v podobe mierneho rozostupu obrazov aj vo zvislom smere (vertikálna disparita), čo je pre naše oko nežiaduce [17, 7]. Obr. 3.2: Konvergujúce (vľavo) a asynchrónne paralelné kamery (vpravo) Binokulárnu disparitu, čiže horizontálnu vzdialenosť medzi súhlasnými bodmi v obrazoch pre pravé a ľavé oko, označujeme pojmom paralaxa. Ak sú tieto dva obrazy na premietacom zariadení totožné, teda nie sú vzájomne posunuté, hovoríme, že paralaxa je nulová. V tomto prípade sa jedná o takzvanú rovinu konvergencie. Pokiaľ rozdiel medzi obrazmi nadobúda kladnú hodnotu, čo znamená, že obraz pre pravé oko je napravo a pre ľavé naľavo, k ich spojeniu dochádza až za plátnom. Tento jav popisuje termín pozitívna paralaxa. Opačným prípadom je negatívna paralaxa, ak sa optické osi prekrížia ešte pred samotnou premietacou rovinou [14, 15, 20]. Negatívna paralaxa sa s obľubou využíva práve vo filmovom priemysle, kedy má divák pocit, že predmet vystupuje pred plátno a približuje sa k nemu (efekt pop-up) [7]. Najčastejšie sa jedná o scény, kde daný objekt letí, pretože vtedy ho je možné jednoducho izolovať od ostatných predmetov v scéne. Naopak pri pozitívnej paralaxe je potrebné dávať veľký pozor, aby sa jej 1. Field of view (z angl.), v preklade zorné pole, je časť priestoru, ktorú je oko alebo iné optické zariadenie schopné zachytiť, a z ktorej doň vstupujú svetelné lúče. 11

3. Stereoskopia a virtuálna realita hodnota rovnala maximálne interokulárnej vzdialenosti, teda rozostupu očí. Tento jav je typický pre pozadie a krajinu, kedy zaostrujeme na vzdialenosť nekonečno. Ak vzdialenosť týchto 7 cm prekročíme, dôjde k divergencii očí divergentná paralaxa. Túto skutočnosť je treba zohľadňovať hlavne pri väčších projekciách, kedy hrá významnú úlohu veľkosť projekčnej roviny a vzdialenosť diváka od nej. Ale aj samotná prílišná separácia obrazov spôsobuje, že predmety sa pre diváka dostávajú do tzv. nekomfortných zón, čo môže spôsobiť bolesti v očiach a stratu trojrozmerného vnemu [7, 15]. Obr. 3.3: Znázornenie komfortných oblastí a predmetov s negatívnou (hore) i pozitívnou paralaxou (dole) 3.3 Metódy stereoprojekcie Na prezeranie stereoskopického páru sa využívajú rôzne technológie. Od primitívnejších možností využívajúcich prekážky pred očami (tzv. metóda prekrížených očí), až po sofistikované rozdelenie dvojice obrazov. V histórii sa objavovali rôzne zariadenia, napríklad masovo rozšírený meoskop 2. Za obdobné, no samozrejme technologicky oveľa vyspelejšie, možno považovať i zariadenia typu head-mounted displays. Ide o stereoskopické displeje upevnené na hlave, teda pár miniatúrnych LCD obrazoviek je súčasťou okuliarov alebo helmy, čím je zabezpečené premietanie obrazu len do korešpondujúceho oka. Tieto pomôcky však priamo pracujú s vyvolaním 3D efektu 2. Zariadenie s vymeniteľnými kotúčmi rôznych rozprávkových motívov či fotografií. Hľadením do dvoch okulárov (podobných ďalekohľadu) proti svetlu sa človeku vo vnútri meoskopu spájal trojrozmerný obraz zachytený na dvojici malých políčok priesvitnej fólie. 12

3. Stereoskopia a virtuálna realita súčasne len u jedného pozorovateľa. Na stereoskopickú projekciu pre väčšiu skupinu divákov sa dnes používa viacero metód. Základné typy stereoskopických projekcií: Anaglyf Dlho známa a dnes už pomerne zastaraná metóda rozdeľuje obrazy pomocou dvoch navzájom komplementárnych farebných filtrov. V jednom zábere sa odstráni farebná informácia tvorená prvou farbou, v druhom zábere sa odstráni farebná informácia tvorená druhou farbou a obrazy sa preložia jeden cez druhý. Následne sa na prezeranie takéhoto obrazu použijú okuliare s rovnakými farebnými filtrami [15]. Najčastejšie sa jedná o kombináciu farieb červená a zelenomodrá (red-cyan), zriedkavo sa používajú aj modro-žltá (blue-yellow) či zeleno-purpurová (greenmagenta). Výhodou tejto metódy je dostupnosť a nízke náklady. Použiteľná je ako pri všetkých typoch obrazoviek (CRT, LCD) či plátne, tak i v tlačenej podobe [20]. Obrovský úbytok farebnej informácie však v dnešnej dobe popri pokročilejších metódach veľmi neprospieva k použiteľnosti anaglyfu. Využitím farebných filtrov môžeme v podstate plnohodnotne vnímať iba obraz monochromatický, pretože plne farebný obraz je výrazne skreslený. Obr. 3.4: Princíp filtrovania farieb pri použití red-cyan anaglyfu Aktívna stereoprojekcia Ďalšia metóda vnímania stereo obrazu využíva striedavé zakrývanie pravého a ľavého oka. Nutná je preto dvojnásobná zobrazovacia frekvencia (minimálne 100 Hz) a špeciálne aktívne okuliare synchronizované so zobrazovacím zariadením. Používajú sa priehľadné tekuté kryštály, ktoré sa dostávajú do nepriehľadného stavu ak je k nim privedené elektrické napätie. Aj v zatemnenom stave však prepustia určité malé množstvo svetla, čo má za následok nepriaznivý efekt rušivých tieňov známy ako ghosting. V dôsledku použitých technológií je celkový úbytok svetla veľmi výrazný až 80 % [14]. Aktívne 3D okuliare sú väčšinou synchronizované bezdrôtovo, teda aj vybavené vlastným napájaním, preto majú vyššiu hmotnosť a sú robustnejšie ako pri iných 13

3. Stereoskopia a virtuálna realita technológiach. Tento druh projekcie je kvôli drahším okuliarom vhodný najmä do domácností pre menší počet divákov. Pasívna stereoprojekcia Prístup založený na polarizácii svetla vychádza z jeho duálnej povahy, konkrétne z elektromagnetických vĺn a ich opačnej orientácie. Polarizácia, čiže uhol natočenia vĺn, je rozdielny o 90, čo je základným predpokladom oddelenia obrazu pre pravé a ľavé oko [15]. Okrem polarizácie lineárnej (zvislá/vodorovná) je možné použiť kruhovú (pravotočivá/ľavotočivá) [14]. K zachyteniu polarizovaného svetla je potrebné plátno so špeciálnou povrchovou úpravou a polarizačné filtre rovnako na projektoroch i okuliaroch pozorovateľa. Dané sklá s filtrami sú potom súčasťou 3D okuliarov, ktoré sú ľahšie a bez akejkoľvek elektroniky, teda pasívne. Pomerne rozsiahly pozorovací uhol, plná farebnosť obrazu a nenákladné okuliare predurčujú používať túto stereoskopickú metódu na veľké projekcie. Tento princíp je využívaný tiež v sieti stereoskopických kín IMAX 3D [4]. Autostereoskopia Jedná sa o technologicky najnovší spôsob reprezentácie stereo obrazu. Jeho výnimočnosť spočíva v absencii použitia okuliarov. Hĺbkový vnem vzniká pri pohľade na display voľným okom vďaka bariérovej maske, ktorá je preložená pred monitorom v tesnej blízkosti. Táto maska v podobe vertikálnych pásov povoľuje každému oku vidieť príslušný obraz a naopak blokovať obraz určený pre druhé oko (parallax-barrier). Na podobnom princípe funguje využitie lentikulárnych šošoviek, kde sa na separáciu obrazu využívajú zákony lomu svetla (lenticular lenses). Oba prípady však trpia zásadným nedostatkom, že pozorovateľ je limitovaný vzdialenosťou a predovšetkým pozorovacím uhlom. Preto sú takéto autostreoskopické obrazovky vhodné pre osobné použitie, čomu nasvedčuje aj dnešné využívanie tejto technológie v mobilných telefónoch či ručných herných konzolách (napr. Nintendo 3DS) [18, 15]. 3.4 Interakcia v prostredí virtuálnej reality Virtuálna realita (virtual reality, VR) je spôsob zobrazenia zložitých informácií, manipulácie a interakcie človeka s nimi prostredníctvom počítača. Spôsob dialógu človeka s počítačom sa nazýva rozhranie (z angl. interface) a virtuálna realita je len najnovšia z celej dlhej rady týchto rozhraní [5]. Cieľom systémov pre VR je poskytnúť užívateľovi či skupine spolupracujúcich užívateľov ilúziu, že sa nachádzajú v umelom prostredí, nazývanom virtuálny 14

3. Stereoskopia a virtuálna realita svet, scéna či virtuálne prostredie (virtual environment). Pocit prítomnosti užívateľa v tomto prostredí sa dosahuje ovplyvňovaním ľudských zmyslov, najčastejšie zraku a sluchu, prípadne hmatu i rovnováhy [4]. Stereo efekt, či už obrazový alebo zvukový, umocňuje pocit skutočnosti a existencie virtuálneho sveta. V súčasnosti by preto každý správny virtuálny systém mal disponovať 3D prostredím, kde môže užívateľ plne vnímať aj jeho hĺbku. Druhy aplikácií virtuálnej reality: Pohlcujúca Immersive virtual reality je väčšinou spojená so špeciálnymi technickými zariadeniami, ktoré majú v čo najväčšej miere odrezať užívateľa od vnímania reálneho sveta tak, že je úplne ponorený do sveta virtuálneho [4]. Tu práve nachádzajú uplatnenie zobrazovacie zariadenia ako už spomínané head-mounted displeje a podobne. Pohlcujúca virtuálna realita nachádza najväčšie uplatnenie ako súčasť rôznych trenažérov a simulátorov. Rozširujúca Augmented VR kombinuje informácie z reálneho sveta s prvkami virtuálnymi. Súčasťou takéhoto systému býva kamera reagujúca na pohyb užívateľa a polopriepustné okuliare [4]. Videný obraz skutočnosti je doplnený o digitálne objekty existujúce jedine vo virtuálnom priestore, a tak vzniká virtuálny systém, ktorého uplatnenie nájdeme napríklad vo vojenskom, či leteckom priemysle. Súčasnosť zavádza použitie augmented reality aj v mobilných zariadeniach (operačný systém Android) a navigačných systémoch. Jednoduchá Posledným typom virtuálnej reality je takzvaná desktop alebo low-end. Ide o skupinu aplikácií nevyužívajúcich žiadne špeciálne technické zariadenia. K ilúzii práce a pohybu vo virtuálnom prostredí postačuje obyčajná obrazovka a bežné ovládacie zariadenia ako myš a klávesnica. Využitie jednoduchej VR je preto skutočne rozmanité od zábavy a hier, cez vzdelanie až po profesionálne aplikácie [4]. Joe Gradecki v The Virtual Reality Programmer s Kit definuje virtuálnu realitu ako technológiu, ktorá umožňuje užívateľovi prezerať si virtuálny svet z akéhokoľvek bodu a uhlu [6]. Zároveň mu dovoľuje interagovať s predmetmi nachádzajúcimi sa v tomto prostredí. Interakcia je charakterizovaná dvoma typmi manipulačných techník. Prvá je takzvaná egocentrická metafora, kde človek nachádzajúci sa vo VE sa na scénu pozerá z vlastných očí. 15

3. Stereoskopia a virtuálna realita S objektmi manipuluje pomocou virtuálnej ruky alebo ukazovátka, napríklad metódou vrhania lúča (ray casting). Na druhej strane exocentrická metafora pracuje so zmenšeným virtuálnym svetom, kde má užívateľ náhľad nad celým prostredím, a tým je mu ponúknutá v podstate rýchlejšia a prehľadnejšia forma interakcie [8]. Aby v podobnom exocentrickom systéme virtuálnej reality užívateľ nestratil prehľad nad svojím umiestením v ňom, je reprezentovaný virtuálnou postavou avatarom. Pri navigácii alebo pohybe vo virtuálnom svete sa uplatňuje tzv. 6DOF 3. Postava avatara tu ale často nebýva viditeľná, lebo jeho obraz nie je dôležitý. Naopak v systémoch pre viacužíveteľskú VR sa avatary stretávajú, a preto je potrebné im dodať skutočný vzhľad. Pre potreby sociálneho chovania sa avatar doplňuje animáciami vyjadrenými pomocou telesných gest, ktorými dáva najavo svoje pocity (súhlas, nesúhlas, nezáujem či nadšenie) [4]. 3.5 Laboratórium interakcie človeka s počítačom Laboratórium interakcie človeka s počítačom (Human-Computer Interaction Laboratory) bolo založené s cieľom riešiť projekty z oblasti počítačovej grafiky. V súčasnej dobe sa výskum zameriava na rozhrania slúžiace na komunikáciu človeka s počítačom, haptické rozhrania, systémy virtuálnej reality a geometrické vizualizácie. Laboratórium sídli na Fakulte informatiky Masarykovej univerzity v Brne a jeho vedúcim je doc. Ing. Jiří Sochor, CSc. [9]. V súčasnosti sa v toto výskumnom laboratóriu nachádza niekoľko hardvérových technológií, využívaných pre rôzne typy projektov. Nasleduje krátky popis vybraných zariadení. Technické vybavenie HCI laboratória: Stereoskopická projekcia Jej súčasťou sú projektory s filtrami, ktoré prepúšťajú lineárne polarizované svetlo. Toto svetlo dopadá na plátno so špeciálnou povrchovou úpravou, ktoré ho nedepolarizuje. Pozorovateľ je schopný na plátne po nasadení polarizačných okuliarov vnímať stereoskopický obraz. Jedná sa o pasívnu projekciu kap. 3.3, ktorá je doplnená sústavou reproduktorov s možnosťou prehrávať priestorový 5.1 zvuk. Herné ovládače Wii Remote Ovládač prezývaný Wiimote je zariadenie primárne určené pre herné 3. Six degrees of freedom (z angl.), v preklade 6 stupňov voľnosti, je systém pohybu v trojdimenzionálnom priestore, kde okrem posúvania sa v troch smeroch pozdĺž súradnicových osí (3DOF) sú možné aj tri rotačné pohyby. 16

3. Stereoskopia a virtuálna realita Obr. 3.5: Schéma pasívnej stereoskopickej projekcie v HCI laboratóriu konzole Nintendo Wii. Je možné ho však použiť aj bez tejto konzoly, a to pripojením zariadenia k počítaču pomocou bezdrôtovej technológie Bluetooth. Okrem niekoľkých tlačidiel je vybavený i akcelerometrom na zachytenie natočenia ovládača. Polohu Wiimotu je možné snímať aj prídavným zariadením Sensor Bar vyžarujúcim infračervené lúče, ktoré dokáže ovládač spracovať, a tým vyhodnotiť svoju polohu v priestore. Priamou komunikáciou a odpočúvaním je možné namapovať funkcie tohto zariadenia na myš a klávesy. Slúži na to voľne dostupná utilita GlovPIE [24]. Zariadenie Kinect V súčasnosti novinka na hernom trhu, ktorá predstavuje novú generáciu ovládania konzolových hier. Zariadenie na snímanie pohybu človeka je doplnok ku konzole XBox 360 od spoločnosti Microsoft. K tomuto snímaniu nie je potrebné použiť žiadny špeciálny odev či reflexné body, ale Kinect si vystačí s dvoma kamerami. Klasická RGB kamera spolupracuje s infrared, ktorá je doplnená o CMOS senzor, a tak je schopná presne určiť polohu hráča. Po pripojení k počítaču je ovládanie vlastným telom možné preniesť tiež na funkcie klasických vstupných zariadení klávesnice a myši. Toto je možné vykonať použitím prídavného programu FAAST [25]. 17

Kapitola 4 Návrh hry a tvorba grafiky Praktická časť tejto bakalárskej práce spočívala vo vytvorení kratšej logickej hry stereo adventúry. Snahou bolo držať sa konvencií predpísaných týmto herným žánrom a vytvoriť tak tradičnú point- n-click kap. 2 adventúru. Charakteristická je pohľadom z tretej osoby a svojím 2D spracovaním, ktoré však výrazne využíva 3D priestorového dojmu. Počas tvorby grafiky a z menšej časti i pri samotnej programovej implementácii boli okrem iného využité práve poznatky o stereoskopickom zobrazení popísané v predošlej kapitole. Táto časť práce zhrnie proces vytvárania grafiky od samotných návrhov a skíc herných scén i postavy, cez modelovanie, až po finálny rendering. Do tejto etapy vývoja zahrňujeme aj import vykreslených obrázkov do grafickej knižnice projektu v nástroji Adobe Flash. Najskôr si však túto technológiu krátko predstavíme. 4.1 Nástroj Adobe R Flash R CS4 Professional Adobe Flash CS4 Professional je priemyselným štandardom v obore vytvárania multimediálnych aplikácií, pôsobivého interaktívneho obsahu a virtuálnych prvkov prezentovaných konzistentne na osobných počítačoch, mobilných zariadeniach i displejoch rôznych veľkostí a rozlíšení [10]. Flash bol v minulosti vyvíjaný spoločnosťou Macromedia, momentálne je vo vlastníctve Adobe Systems. Za uplynulé obdobie vyšlo pod Adobe už niekoľko verzií, od CS3 až po dnešnú CS5.5. Zameranie tohto vývojového nástroja sa počas jeho existencie prispôsobovalo súčasným trendom, a tak dnes pracuje so širokou škálou grafických, programovacích a komunikačných prostriedkov. Vo svojich počiatkoch bol používaný výlučne ako nástroj na tvorbu animácie s použitím vektorovej grafiky, no v súčasnosti je základom pokročilých webových aplikácií s bohatým obsahom (rich internet application, RIA). Flash obsahuje objektovo orientovaný jazyk ActionScript, v posledných verziách už v poradí jeho tretiu generáciu s označením 3.0. Vychádza zo štandardov EC- MAScript, do ktorých patrí aj známy dialekt JavaScript. Dnes popri Adobe Flash vzniká niekoľko alternatív v podobe Microsoft Silverlight či HTML5. 18

4. Návrh hry a tvorba grafiky ActionScript 3.0 predstavuje pomerne známu syntax, ktorá sa príliš nelíši od jazykov podobného typu, ako napríklad Java alebo C++. Podobne ako v jazyku Java je základnou triedou Object, z ktorého dedia vlastnosti všetky ostatné triedy. Ďalej základné aplikačné programové rozhranie (application programming interface, API ) jazyku ActionScript disponuje dôležitými objektmi na ovládanie animácie. Za zmienku stojí spomenúť MovieClip, čo je priamy potomok zobraziteľného objektu Sprite obohatený o prácu s časovou osou. Touto triedou sú popísané všetky objekty vytvorené v grafickej knižnici prostredia Adobe Flash, v ktorom je ActionScript priamo integrovaný. Nástroj Flash sa ukázal ako vhodné programové prostredie na realizáciu riešeného projektu, pretože jeho použitie značne zjednodušuje tvorbu interaktívnej desktopovej či webovej aplikácie. Podpora bitmapovej grafiky, rôznych zvukových formátov a iných prvkov, ktoré boli pre vývoj hry nevyhnutné, sú vo flashi tiež samozrejmosťou. 4.2 Námet, scenár a grafický štýl Vytvorená hra má slúžiť na prezentáciu možností HCI laboratória, vrátane stereoprojekčnej jednotky a herných ovládačov. Ďalej demonštruje predovšetkým algoritmus hľadania cesty, ktorý je neodmysliteľnou súčasťou skoro každej hry. V neposlednom rade sa zameriava na použitie aplikácií 3ds Max a Adobe Flash v kontexte prípravy interaktívneho materiálu. Všetky tieto ciele sa spájajú v snahe o vytvorenie stereo adventúry s názvom STROJ #257. Adventúra dostala názov podľa mena hlavného hrdinu, čo je humanoidný robot 1. Prostredie, do ktorého je hra zasadená, zahŕňa prevažne prírodné exteriéry, no použitá je aj jedna interiérová lokácia. To všetko formou, aby boli pokiaľ možno v čo najväčšej miere využité stereoskopické možnosti a z nich prameniaci hĺbkový dojem scén bol pri hraní hry dobre pozorovateľný. Námet hry je úzko spätý s podobou herného charakteru a jednotlivých lokácií. Jeho zámerom je dejovo prepojiť tieto dva zdanlivo odlišné elementy hlavná postava je robotická a prostredie prirodzené. Rozsah samotnej adventúry na niekoľko pár herných obrazoviek je však nedostačujúci na rozvinutie hlbšej zápletky, ktorá je pre tento druh hier špecifická. Jednoduchý príbeh je hráčovi v skromnej forme predložený pri štarte hry, len za účelom motivovať ho. K hre bol napísaný technický scenár, ktorý absentuje na dialógy, 1. Robot vykazujúci antropomorfné črty, t.j. svojím vzhľadom a konštrukciou pripomínajúci ľudské telo. Typický napríklad aj bipedálnou (dvojnohou) chôdzou. 19

4. Návrh hry a tvorba grafiky pretože sa v diele nevyskytujú NPC kap. 2 postavy. Takisto hlavný charakter je nemý a pri komunikácii s hráčom používa len gestá. Stroj #257 je hra spracovaná ako 2D adventúra, ktorá vďaka použitiu modelovacieho software Autodesk R 3ds Max R 2010 pripomína zástupcu zo skupiny 2.5D adventúr. Vzhľadom k tomu, že nezachytáva žiadny fantazijný či rozprávkový svet, nedisponuje ani žiadnym osobitým grafickým stvárnením. Všetky objekty sa snaží zachytiť reálne, ako sú známe človeku z jeho okolia (stromy, studňa a pod.). Podrobnejší popis ako vznikala grafika je rozdelený do dvoch častí v nasledujúcich podkapitolách. 4.3 Tvorba a animácia charakteru Za ovládateľnú postavu v hre bol vybraný robot. V počiatočnej fáze je rozumné najprv si predstavovaný charakter načrtnúť na papier vo forme skíc označovaných tiež pojmom artworky. Vhodné sú rôzne pózy postavy a obrazy na jednotlivých priemetniach, teda nárys, pôdorys, bokorys. Tieto náčrty nám neskôr pomôžu pri príprave referenčných materiálov, podľa ktorých budeme modelovať. Podobným spôsobom sa postupuje i pri vytváraní technických modelov za pomoci blueprintov. Rovnako ako herné scény, aj charakter vznikal v prostredí 3ds Max. Jeho telo sa skladá zo základných geometrických tvarov, ktoré sú z väčšej časti prevedené na objekty typu NURBS 2. V tomto programe im zodpovedá modifikátor delenia a vyhladzovania povrchu typu TurboSmooth alebo MeshSmooth, ktorý je napríklad ekvivalentom objektu HyperNURBS v prostredí Cinema 4D. Táto technika bola použitá, aby výsledný model pôsobil plastickejším dojmom. Kĺby postavy tvoria gule, kosti končatín sú zasa tvorené valcami, prípadne zrezanými kužeľmi. Na jej trupe je umiestnený displej, ktorý je v neutrálnom stave vypnutý. Opticky je tvorený z malých LED diód, ktoré sa rozsvecujú v závislosti na charakterom vyjadrovanom geste. Má 3 stavy znázorňujúce súhlas a úspech (zelená fajka), nesúhlas a neúspech (červený krížik), nerozhodnosť a pochyby (žltý otáznik). V súvislosti s displejom sa mení aj výraz tváre príslušným pokrivením úst. Po vymodelovaní robota nasledovalo aplikovanie textúr. Tomuto procesu tesne predchádza rozbalenie zložitejších častí modelu, typicky pomocou modifikátoru Unwrap UVW. Tým za- 2. Non uniform rational B-spline (z angl.) sú objekty resp. plochy, ktoré vznikajú zovšeobecnením B-spline plôch a predstavujú dnes priemyselný štandard v geometrickom modelovaní. Umožňujú definovať širokú triedu plôch, napr. voľne tvarovateľné plochy na bázy racionálnych polynómov (free form surfaces) alebo plochy založené na priamkach a kužeľosečkách [4]. Prvýkrát sa objavujú v polovici 20. storočia pre potreby presnej matematickej reprezentácie tvaru karosérie áut, trupu lodí a lietadiel. 20

4. Návrh hry a tvorba grafiky bezpečíme namapovanie textúry na presne určené miesta polygónovej siete. Použité materiály využívajú na optické vylepšenie modelu okrem difúzneho kanála aj spekulárny a bump kanál. Celé telo obsahuje prevažne textúry kovu a železa pripravené pomocou grafického editoru. Obr. 4.1: Proces tvorby charakteru od ručne kreslených skíc (hore) po výsledné rendre (dole) Animácia pohybu hernej postavy Ďalšou úlohou pred animovaním charakteru bolo naviazanie kostry na model. 3ds Max vďaka prídavnému modulu Character Studio, ktorý veľmi dobre ovláda biomechaniku ľudského pohybu, ponúka pomerne pohodlnú variantu 21

4. Návrh hry a tvorba grafiky preddefinovanej bipedálnej kostry. Jednotlivé kosti je možné upraviť presne na mieru pre konkrétny model dvojnohej postavy. Následne je na model aplikovaný modifikátor Physique a nastavené sú prepojenia, ktoré kĺby majú ovplyvňovať ktorú časť tela a do akej miery. Aby sa predišlo rozbitiu polygónov pri pohybe kostry, musí byť polygónová sieť v miestach ohybu dostatočne hustá a nasegmentovaná. To ale nebol prípad nášho modelu robota, pretože jeho telo nebolo tvorené jednou súvislou sieťou, ale viacerými útvarmi (hlava, rameno, predlaktie atď.). Momentálne bolo potrebné pridať Physique na každú časť tela zvlášť. Aj v tomto prípade však bolo nutné presne určiť, ktoré vrcholy modelu budú korešpondujúcim kĺbom deformované. Tento proces naviazania kostry na postavu sa nazýva character skinning and rigging. Po správnom vytvorení systému Biped vo vnútri charakteru môžeme prejsť už k samotnej animácii. Pri animácii chôdze, známej ako cycle walk, vychádzam najmä z publikácie od Georga Maestriho Digital Character Animation 2 [1]. K dispozícii je tiež mnoho voľne dostupných online zdrojov a návodov, ako pri tvorbe cyklickej chôdze postupovať. Veľkou výhodou bipedálnej kostry v 3ds Max je kombinácia oboch typov kinematiky inverznej (inverse kinematics, IK) a doprednej (forward kinematics, FK). Dopredná kinematika využíva hierarchiu kĺbov od rodiča na potomka, to znamená, že napríklad pohnutím ramena sa zmení aj poloha zápästia. Inverzná kinematika naopak pri pohybe zápästia postupuje v hierarchii opačným smerom, teda rozhýbe ramenný kĺb. V 3ds Max je predvolená FK, ale je možné ju ľubovoľne meniť na IK kedykoľvek počas animácie. Všeobecne platí, že rodičovský kĺb by mal byť otáčaný s použitím doprednej kinematiky a jeho potomok posúvaný kinematikou inverznou. Využívať obe súčasne je možné v móde freeform animation, kde však nie je možné automaticky kontrolovať správnu polohu chodidla pri každom kroku [2, 19]. George Maestri v Digital Character Animation 2 považuje za preferovanú metódu pri animácii chôdze práve inverznú kinematiku [1]. V našom prípade však pre jednoduchý cyklický krok kontrola chodidiel so zemou nie je nevyhnutná. Cyklický krok sa typicky skladá z ôsmich kľúčových snímkov, ktoré sa opakujú. Okrem výmeny samotných nôh pri chôdzi charakter pohybuje aj zvyšnými časťami tela. Ruky vyvažujú postavu protichodne k nohám, panva aj hrudný kôš sa mierne vytáčajú a celá postava sa tiež zvislo pohupuje. Tieto pohyby je nutné dodržať, aby animácia vyzerala čo najprirodzenejšie. Okrem chôdze je charakter vybavený animáciami zbierania predmetov a tromi pózami pre znázornenie gest (success, fail and confusion). Pre každú animáciu bolo vyrendrovných 16 alebo 8 obrázkov reprezentujúcich postupne jej snímky, ktoré boli importované do grafickej knižnice projektu v programe Adobe Flash. Charakter sa v hre otáča do ôsmich smerov, čo tvorí v rovine 22

4. Návrh hry a tvorba grafiky natočenie pozdĺž osí x, z a diagonál. Preto aj jednotlivé klipy nesú postupne názvy front, frorig, right, bacrig, back, baclef, left a frolef. Obr. 4.2: Animovanie charakteru pomocou bipedálnej kostry v 3ds Max (vľavo) a výsledný Movie Clip tvorený z vyrendrovaných snímkov v Adobe Flash (vpravo) 4.4 Tvorba scén Práve herné prostredie je v adventúrach to, čo často zaberá najväčšiu časť obrazovky. A keďže pomocou zraku vnímame až 80 % informácií z okolitého sveta, je zrejmé, že práve prostredníctvom vzhľadu herných lokácií sa snažia vývojári hráča zaujať. Adventúra Stroj #257 obsahuje 6 navzájom prepojených scén, medzi ktorými sa môže hráč voľne pohybovať. Ich dizajn podlieha potrebám tejto bakalárskej práce, v stereo zobrazení využíva napríklad i negatívnu paralaxu. Lokácie sú statické a pomerne jednoduché, obsahujú len niekoľko objektov. Taktiež ich rozmiestnenie je vhodne prisôsobené na demonštráciu algoritmu hľadania cesty. Základ však tvorí prírodný exteriér a stromy rozumne vypĺňajú jednotlivé scény. Na ich tvorbu v programe 3ds Max bol použitý nástroj Foliage, ktorý obsahuje niekoľko preddefinovaných typov drevín. Každá inštancia tohto objektu môže vyzerať mierne odlišne, pretože sa dá vygenerovať jednou z 2 24 vzoriek. Na trávnaté povrchy mal byť pôvodne použitý globálny modifikátor Hair and Fur. Kvôli náročnému renderovaciemu procesu však nakoniec nebola použitá žiadna podobná technika, ktorá by pokročilým spôsobom simulovala trávu, a aplikovaný bol len materiál s bump kanálom. Ostatné objekty takisto využívali len základné materiály namapované pomocou triviálnych postupov (napr. sférické, cylindrické alebo mapovanie na kváder). Pri zložitejších modeloch, podobne ako v prípade charakteru, sme využili rozbalenie pomocou UVW mapy. 23

4. Návrh hry a tvorba grafiky Svetlá a kamery Pri umiestňovaní svetiel na scénu musíme brať na zreteľ dôležitú skutočnosť. Osvetlenie vo všetkých scénach by malo byť navzájom totožné alebo aspoň veľmi podobné. Súčasne musí približne korešpondovať s osvetlením charakteru, ktorý sa bude na tejto scéne pohybovať, vzhľadom k tomu, že je do nej zasadený dodatočne programovo. Súčasné schopnosti herného jadra totiž neobsahujú možnosť farebnej a jasovej korekcie postavy na scéne v závislosti od pozadia. Ak sa teda charakter dostáva napríklad do tmavého kúta, sám zostane stále rovnako nasvetlený, čo pôsobí samozrejme pomerne neprirodzene. Preto sa pri tvorbe hernej obrazovky treba vyvarovať výrazným tieňom, či práve naopak príliš vysvieteným plochám. Pri piatich vonkajších lokáciach bolo použité jedno spoločné Skylight svetlo, plus lokálny Omni svetelný zdroj pre každú scénu samostatne. Umiestnený bol nad zorným poľom kamery, približne vo vzdialenosti konvergentnej roviny. Scéna interiéru nepoužíva slnečné svetlo, ale vhodne nasmerované svetlo bodové Spotlight. Obr. 4.3: Tvorba scény, umiestňovanie svetla a kamery s použitím modifikátoru od Louisa Marcouxa Pri vykresľovaní scén do stereoskopického páru bolo treba použiť dve susediace kamery. Veľmi dobre tu poslúžil prídavný skript StereoCam Modifier od Louisa Marcouxa [20], ktorý využil kamery s asynchrónnym pohľadovým 24

4. Návrh hry a tvorba grafiky kužeľom. Asynchrónnosť docielil skosením (Skew) zbiehavých kamier. Po aplikovaní tohto modifikátoru na kameru bez pevného cieľa Free Camera je možné nastaviť interaxiálnu vzdialenosť (implicitne 6,1 cm) a veľkosť stereo efektu, čo predstavuje vzdialenosť roviny konvergencie. V pracovnom prostredí potom máme možnosť prehľadným spôsobom vidieť pri každej kamere komfortné zóny jej zorného poľa. Ďalej sa v 3ds Max naskytuje možnosť na takto vytvorené stereo kamery použiť modifikátor Camera Correction, ktorý upraví perspektívu na 2 body (úbežníky) a vylepší tým ich perspektívne zobrazenie. Možnosť vykresľovať stereoskopický obraz ponúka aj nová verzia známeho pokročilého renderovacieho systému V-Ray 2.0. Pri vypracovávaní tejto bakalárskej práce bol však použitý len základný renderer prostredia 3ds Max založený na skenovaní riadkov. Scénam aj preto na pohľad chýba výraznejšia atraktivita, ktorá je u väčšiny projektov často dosahovaná až vo fáze postprocesingu. Ten by v našom prípade bol už pomerne neistá záležitosť, pretože v dôsledku dvoch mierne disparitných obrazov by sa s veľkou pravdepodobnosťou vytratila ich zhoda, ktorá je pre spojenie stereo páru v ľudskom mozgu nevyhnutná. Dalo by sa uvažovať o korekcii svetla a farieb na obrázkoch, prípadne o aplikovaní niektorých konvolučných filtrov. Pravdepodobne by však nebolo rozumné zo zrejmých dôvodov uskutočňovať napríklad zásahy v podobe dodatočného dokresľovania trávy a iných lokálnych úprav. 25

Kapitola 5 Implementácia Stroj #257 je adventúra simulujúca 3D herné prostredie s využitím technológie nachádzajúcej sa v laboratóriu HCI kap. 3.5. Svojím grafickým spracovaním a herným ovládaním sa snaží priblížiť prostrediam virtuálnej reality. Podľa rozdelenia nachádzajúceho sa v kapitole 3.4 je možné túto hru zaradiť do skupiny aplikácií používajúcich jednoduchú virtuálnu realitu. Hráč sleduje dianie na plátne s využitím stereoprojekcie a ovláda hru pomocou herných zariadení Kinect alebo Wii Remote. Pri použití technológie Kinect sú príkazy zadávané pohybmi hráčovho tela, ovládačom Wiimote zas s hrou interagujeme o niečo tradičnejším spôsobom pomocou tlačidiel nachádzajúcich sa priamo na ňom. Vďaka týmto pokročilejším metódam sprostredkovania herného zážitku môže nastávať pocit, že predložený systém patrí do kategórie pohlcujúcej virtuálnej reality. Nespĺňa ale hneď niekoľko predpokladov všeobecne platných v akomkoľvek virtuálnom systéme. Hneď v prvom rade je vhodné zdôrazniť, že hra je kompletne spracovaná ako 2D aplikácia. Aj o tom, čo je potrebné vykonať, aby bol dosiahnutý pocit trojrozmernosti predloženého herného sveta, pojednáva táto kapitola. Ako je uvedené už v časti 3.1, pri vnímaní hĺbky človeku napomáha hneď niekoľko javov či už psychologického, alebo fyziologického charakteru. Okrem základnej binokulárnej disparity, ktorá bola dosahovaná už v procese tvorby grafiky vykresľovaním obrazu pomocou dvoch kamier, je dôležité rešpektovať aj ostatné tieto javy. Spomenúť treba hlavne vnímanie relatívnej veľkosti predmetu, ktoré je základom pohybu hráča po 3D scéne. Namiesto toho, aby využíval pohyb v smere hĺbky z, stačí, ak sa na obrazovke zmenší a mierne posunie po zvislej osi y. Okolo svojej zvislej osi sa hlavný hrdina aj otáča a pohybuje do 8 smerov. Pri správnom usporiadaní objektov na scéne môžeme potom veľmi ľahko nadobudnúť ilúziu trojdimenzionálneho priestoru. Hra bola vytvorená s použitím technológie Adobe Flash. Jedná o vysokoúrovňový vývojový nástroj a vykompilovaný formát súboru sa v počítači prehrá až po doinštalovaní softvérových doplnkov. Preto sa kvôli vyššej kompatibilite výsledný súbor s multimediálnym obsahom typu SWF (shockwave- 26

5. Implementácia flash) dodatočne spracuje aplikáciou Flash EXE Builder 1.0. Výsledkom je potom spustiteľný EXE súbor obsahujúci samostatnú desktopovú aplikáciu. Integrované vývojové prostredie v programe Adobe Flash je pomerne ťažkopádne, preto sme pri vývoji používali aj voľne dostupný editor zdrojových kódov FlashDevelop 3.3 určený predovšetkým pre jazyky ActionScript druhej a tretej generácie. Prejdime však teraz k samotnému popisu programovej implementácie hry. 5.1 Dekompozícia aplikácie Obr. 5.1: Neúplný diagram tried aplikácie Stroj #257 s vyznačenými typmi objektov a kardinalitami Hlavná trieda ovládajúca aplikáciu je Main.as a za najrozsiahlejšiu triedu, ktorá je naprogramovaná všeobecne, možno považovať Scene.as. Tento objekt popisuje funkčnosť spoločnú pre všetky scény, to zahŕňa vnorené objekty jednotlivých vrstiev pozadia, hotspotovkap. 2 či charakteru. Medzi triedy so samostatnou funkčnosťou patrí aj Pathfinder.as, ktorý pracuje s objektmi typu Waypoint.as. Podrobne sa týmito dvoma triedami zaoberám až v nasledujúcej časti 5.3. Trieda Main z veľkej časti skriptuje už priamo konkrétnu hru Stroj #257, preto ju nie je vhodné zahŕňať do čistého herného jadra. Táto trieda je ale pre beh nevyhnutná a popisuje aj niekoľko všeobecných súčastí, ako napríklad inventár, kurzor i samotné herné obrazovky. Hlavne sa 27

5. Implementácia stará o prepojenie týchto herných lokácií, čo je vlastne sled objektov Scene. Povedzme si však niečo viac o tomto objekte. Scéna, teda herná obrazovka, je potomkom objektu MovieClip, čiže hierarchicky najvyššie postavenému zobraziteľnému objektu v knižniciach programu Adobe Flash. Rozširuje ho o radu atribútov a metód starajúcich sa o chovanie postavy na scéne, o interakciu s predmetmi a preusporiadavanie obrazových vrstiev na zachytenie hĺbky. Pri výmene poradia vrstiev s charakterom sa neuplatňujú žiadne zložité algoritmické konštrukcie, väčšina práce musí byť poctivo zrealizovaná už počas tvorby grafiky. Rendering prebieha vo vrstvách, čo znamená, že modely s evidentne rôznou hĺbkou na scéne sú vykreslené do samostatných vrstiev. Ako príklad si uvedieme otvorenú krajinu. Kopce a stromy v ďalekom pozadí zrejme charakter nikdy neprekročí, preto budú vykreslené do obrázku ako súčasť Movie Clipu scene#_layer1, kde # označuje poradové číslo index scény. V druhej vrstve sa bude nachádzať objekt s obrázkom zobrazujúcim predmet, za ktorý môže postava zájsť alebo naopak sa bude pohybovať pred ním. V najbližšej vrstve smerom k pozorovateľovi bude inštancia Movie Clipu scene#_layer3, kde sa budú nachádzať napríklad koruny stromov, ktoré sú tak blízko kamery, že charakter sa pred ne nikdy nedostane. Prehadzovať poradie vrstiev s charakterom môžeme v jazyku ActionScript 3.0 vykonávať pomocou funkcie swapchildren, resp. swapchildrenat na objekte typu DisplayObjectContainer alebo jeho potomkoch. Toto poradie sa určuje na základe polohy stredového bodu jednotlivých objektov. Charakter má referenčný bod umiestnený presne pod nohami a ostatné grafické objekty už konkrétne v závislosti na ich povahe a výzore. Na scénu je zavesený poslucháč udalosti zmeny snímku this.addeventlistener- (Event.ENTER_FRAME, onenterframe). Funkcia onenterframe, ktorá je volaná v našom prípade 30 krát za sekundu (rovná sa hodnote fps), potom zisťuje aktuálnu polohu charakteru na osi y a porovnáva ju s hodnotou súradnice y pre každú z vrstiev. V prípade, že inštancia Movie Clipu character dosiahne v zvislom smere nižšiu hodnotu ako iný objekt, na pozadí sa zavolá už spomínaná funkcia, ktorá mení poradie detí this.background.swap- Children(this.background.character, this.background["scene" + - this.index + "_layer" + layerindex]) a postava je prekrytá korešpondujúcou vrstvou pozadia. Akcia takéhoto preusporiadavania objektov je nesmierne dôležitá na uplatnenie princípu prekrývania kap. 3.1 ako jedného z vedúcich psychologických kľúčov pri vnímaní hĺbky. Ako sa spomína na začiatku kapitoly, charakteru sa pri pohybe mení vlastnosť scale v závislosti na jeho súradnici vo vertikálnom smere. V jednej z prvých alternatív sa zmena veľkosti vykonávala plynule s použitím triedy 28

5. Implementácia Tween definovanej v knižniciach ActionScript 3.0. Vzhľadom k nepresným výpočtom i zaokrúhľovacím chybám pri násobení a delení nad objektom Number dochádzalo k nežiadanému efektu, kedy sa objekt po niekoľkých presunoch postupne stále viac a viac zväčšoval. Preto sa nakoniec od použitia triedy Tween upustilo a veľkosť sa mení tiež pri vyvolaní udalosti zmeny snímku, kedy sa prepočítava z aktuálnej polohy charakteru. Stereo efekt sa na postave odzrkadľuje tak, že sú vytvorené až dve inštancie characterviewleft a characterviewright. V závislosti na umiestnení charakteru a jeho veľkosti sa potom príslušne rozdvojujú, čím hráč na postavu zaostruje v požadovanej vzdialenosti za alebo pred plátnom. Z popísaných vlastností programu je vidieť takzvané udalostne riadené programovanie (event-driven programming). Vyplýva to z povahy programovanej aplikácie, kedy sa väčšinou čaká na akciu užívateľa či programu samotného, napríklad kliknutie myšou na objekt, zmena snímku a podobne. Pre tento typ programovania sú typické pojmy ako listener, handler alebo callback, čo predstavuje funkcie reagujúce na vznik istej udalosti. V našej hre bola vytvorená trieda udalostí CharacterEvent s akciami typu TAKE, MAYBE, YES a inými. Vlastné udalosti sú potom vyvolávané príkazom dispatchevent a zachytáva ich príslušný definovaný poslucháč. Ako príklad si uveďme moment, kedy hlavná postava dokráča k vybranému predmetu a je vyvolaná udalosť new CharacterEvent(CharacterEvent.TAKE, this.object). Udalosť je zachytená a odovzdáva informáciu, na ktorý predmet užívateľ klikol. Následne môže program reagovať ďalším spracovaním tejto udalosti, teda nechať predmet vziať alebo ho odmietnuť. V nástroji Adobe Flash sa často používa tento typ programovania, preto má ActionScript 3.0 dobrú podporu toku udalostí (event flow). Nasledujúce podkapitoly teraz podrobnejšie popisujú vybrané časti implementačného procesu. 5.2 Generovanie priestorového zvuku Okrem hlavnej melódie, ktorá znie počas celého hrania, bola hra ozvučená aj niekoľkými zvukovými efektmi. Pri všadeprítomnom stereozobrazení nesmel zostať ani stereofónny zvuk bez povšimnutia, a tak si v tejto časti ukážeme, ako sa pomocou pár riadkov zdrojového kódu generoval priestorový zvuk. Ako príklad uveďme prehrávanie zvuku krokov pri chôdzi charakteru. Pokiaľ by sa stále opakovane prehrával jediný zvuk došľapnutia nohy na zem, kráčanie by znelo veľmi neprirodzene. Vytvorená bola teda sada 5 kratučkých zvukov reprezentujúcich styk dolnej končatiny so zemou. Ťažko si však predstaviť uveriteľný zvuk, ktorý by zodpovedal napríklad kráčaniu na tráve a súčasne na kamennej dlažbe, preto boli použité hneď dve odlišné sady 29

5. Implementácia zvukov. Simulácia 3D zvuku bola vytvorená pomerne jednoduchým spôsobom, ako môžeme vidieť v nasledujúcom úseku zdrojového kódu. /** * @param surface set of step sounds that are used for walking, * for example " grass " or " floor " */ public function playsounds ( surface : String ): void { if ( Scene ( this. getchildat (0) ). background. character. characterviewleft. currentlabel == " walk ") { if (( Scene ( this. getchildat (0) ). background. character. characterviewleft. characterwalk. getchildat (0). currentframe == 4) ( Scene ( this. getchildat (0) ). background. character. characterviewleft. characterwalk. getchildat (0). currentframe == 20) ) { var random : Number = this. randomnumber (1, 5); this. stepsoundtransform. volume = Scene ( this. getchildat (0) ). background. character. characterviewleft. scalex ; this. stepsoundtransform. pan = ( Scene ( this. getchildat (0) ). background. character.x -( this. STAGE_WIDTH /2) )/( this. STAGE_WIDTH /2) ; switch ( random ) { case 1: this. stepsoundchannel = this [ surface +"1 sound " ]. play (); break ; case 2: this. stepsoundchannel = this [ surface +"2 sound " ]. play (); break ; case 3: this. stepsoundchannel = this [ surface +"3 sound " ]. play (); break ; case 4: this. stepsoundchannel = this [ surface +"4 sound " ]. play (); break ; case 5: this. stepsoundchannel = this [ surface +"5 sound " ]. play (); break ; default : break ; } this. stepsoundchannel. soundtransform = this. stepsoundtransform ; } } } Kód 5.1: Metóda prehrávania a simulácie priestorového zvuku ActionScript 3.0 pri práci so zvukom používa triedy Sound, SoundChannel, SoundTransform a iné z balíku flash.media. Pri každej udalosti zmeny snímku na scéne sa zisťuje, či je charakter v pohybe. Ak sa nachádzal Movie Clip postavy v stave walk, vytvorili sme inštanciu objektu SoundTransform, ktorej sme upravovali 2 atribúty. Veľkosť charakteru na scéne vlastne vypovedá o jeho vzdialenosti od pozorovateľa, takže priamo ovplyvňuje hlasitosť volume kroku. Podobného princípu využíva aj zmena atribútu pan, ktorý spôsobuje vyvažovanie stereo zvukových kanálov. V požadovanom rozsahu -1 až 1 ho naplníme prepočítanou hodnotou polohy postavy na vodorovnej osi x. Ak sa charakter nachádza v pravom okraji obrazovky, jeho horizontálne umiestnenie nadobúda hodnotu konštanty šírky scény STAGE_WIDTH, teda transformátor zvuku nastaví vyváženie na maximálnu hodnotu 1 30

5. Implementácia a všetok zvuk bude vychádzať len z pravého reproduktoru. Ešte je potrebné náhodne vygenerovať poradové číslo zvuku zo sady pre daný povrch surface a náš objekt stepsoundchannel prehrá požadovaný zvuk kroku. Týmto spôsobom aktuálna poloha charakteru na scéne upravuje rozloženie zvuku, a tým je len umocnený pocit, že sme súčasťou trojrozmerného herného prostredia. 5.3 Pohyb postavy a hľadanie cesty Herná umelá inteligencia (artificial intelligence, AI ) je v súčasnej dobe jedným z najhorlivejšie sa rozvíjajúcich odvetví interaktívneho zábavného priemyslu. Samostatný obor, ktorý vznikol z programovania hier a herného dizajnu, sa v posledných rokoch začína uplatňovať dokonca aj pri akademickom výskume umelej inteligencie. Až do druhej polovice 90. rokov bola umelá inteligencia v počítačových hrách považovaná za okrajovú záležitosť, pretože prioritou herných vývojárov v tom období bola dokonalejšia a realistickejšia grafika. Postupne s príchodom grafických akcelerátorov, kedy sa uvoľnil výkon hlavného procesoru i na algoritmy umelej inteligencie, si vývojári hier začali uvedomovať, že hra nemôže stavať iba na realisticky vyzerajúcej grafike a zamerali svoju pozornosť práve na umelú inteligenciu [21]. Ideálne AI jadro by malo riešiť obrovské množstvo problémov, ako napríklad komunikácia medzi objektmi v hre či zaznamenanie a reagovanie na všetky udalosti, ktoré sa počas hrania môžu vyskytnúť [3]. A* algoritmus plánovania cesty Nosným algoritmickým riešením prezentovaným v tejto práci je plánovanie a hľadanie cesty. Pathfinding je jednou z najzákladnejších súčastí AI, keďže veľké množstvo hier obsahuje herné postavy a ich pohyb musí vyzerať prirodzene, čo znamená, že jeho simulácia zahŕňa napríklad výber najjednoduchšej trasy či obchádzanie prekážok. Tento problém je možné previesť na algoritmy z teórie grafov slúžiace na prehľadávanie grafu alebo nájdenie jeho najkratšej cesty. Za jednu z najpoužívanejších metód v tejto oblasti môžeme považovať A* algoritmus. Pôvodne vychádza z veľmi známeho Dijkstrovho algoritmu, ktorý navyše obohacuje o heuristický prvok. Názov s použitím hviezdičky značiacej jeho úplnosť zaviedol Bertram Raphael potom, ako v roku 1968 podal dôkaz, že jeho nový algoritmus upravujúci pôvodné A1 a A2 algoritmy je optimálny [22]. A* algoritmus využíva matematický princíp hladného algoritmu na nájdenie optimálnej cesty z daného počiatočného uzlu do požadovaného koncového uzlu. Algoritmus ohodnocuje uzly v závislosti na hodnotách hrán, 31

5. Implementácia ktoré k nim vedú, pomocou funkcie f(x) = g(x) + h(x), kde g(x) je funkcia predstavujúca vzdialenosť aktuálneho uzlu od počiatku. Druhé h(x) označuje heuristickú funkciu, ktorá odhaduje vzdialenosť k cieľovému uzlu. Nesmie nadhodnocovať túto vzdialenosť, teda vyjadruje jej minimálnu hodnotu. Za túto heuristiku pri navigácii preto často používame práve fyzicky najkratšiu možnú cestu vzdialenosť vzdušnou čiarou [22]. Pri implementácii A* algoritmu vychádzam z pseudokódu Bryana Stouta uvedeného v knihe Game programming gems [3]. Aplikačné programové rozhranie jazyka ActionScript 3.0, ktorý používa Adobe Flash, bohužiaľ nedisponuje dátovými štrúkturami ako sú kolekcie, halda, zásobník, graf a podobne. Online však môžme nájsť k dispozícii voľne šíriteľný balík tried AS3 Data Structures For Game Developers vyvinutý Michaelom Baczynskim z Polygonal Laboratory. Táto knižnica je vysoko optimalizovaná použitím pokročilej technológie haxe, čo je multiplatformový (Javascript, Flash, PHP, C++ a iné) programovací jazyk šíriteľný pod licenciou open source [23]. Balík dátových štruktúr de.polygonal.ds, konkrétne jeho verzia 1.21, sa ukázal ako veľmi vhodný na použitie pri implementácii algoritmu hľadania cesty a urýchlil tým celkový vývoj aplikácie. Nasledujúca ukážka zdrojového kódu popisuje triedu implementovaného A* algoritmu Pathfinder, kde metóda findpath() vráti false, ak cesta neexistuje, inak vráti true a nastaví všetkým uzlom v grafe až po cieľový ich predchodcu. Tieto uzly sú potom spätne uložené do zásobníku, ktorý je na výstupe metódy getpath(). public function findpath (): Boolean { var open : PriorityQueue = new PriorityQueue ( true ); // true means the lower the number, the higher the priority var closed : ListSet = new ListSet (); // inicialize a start and a goal waypoint represented by graph node var endwaypoint : Waypoint = Waypoint ( this. endnode. val ); var startwaypoint : Waypoint = Waypoint ( this. startnode. val ); startwaypoint. release (); // sets distfromstart and disttogoal to zero and ancestor to null startwaypoint. setdisttogoal ( startwaypoint. countdistanceto ( endwaypoint )); // countdistanceto computes the straight - line distance startwaypoint. priority = Math. round ( startwaypoint. getdistfromstart () + startwaypoint. getdisttogoal ()); // priority of the start waypoint should be equal its disttogoal value now open. enqueue ( startwaypoint ); // process the list until success or failure while (! open. isempty ()) { var currentwaypoint : Waypoint = Waypoint ( open. dequeue ()); // the best node ( with lowest priority ) is chosen from open list var currentnode : GraphNode = currentwaypoint. getnode (); // if at a goal, we are done and the path is found if ( currentnode == this. endnode ) { return true ; 32

5. Implementácia } else { var arclist : GraphArc = currentnode. arclist ; // the head of a doubly linked list of a graph arcs pointing to node } while ( arclist!= null ) { // for each successor of currentnode do var nextnode : GraphNode = arclist. node ; var nextwaypoint : Waypoint = Waypoint ( nextnode. val ); arclist = arclist. next ; // a reference to the next graph arc in the list for next iteration var distance : Number = currentwaypoint. getdistfromstart () + currentwaypoint. countdistanceto ( nextwaypoint ); // ignore this node if exists and no improvement if (( open. contains ( nextwaypoint ) closed. contains ( nextwaypoint )) && ( nextwaypoint. getdistfromstart () <= distance )) { continue ; } else { // store the new or improved information nextwaypoint. setancestor ( currentwaypoint ); nextwaypoint. setdistfromstart ( distance ); nextwaypoint. setdisttogoal ( nextwaypoint. countdistanceto ( endwaypoint )) if ( closed. contains ( nextwaypoint )) { closed. remove ( nextwaypoint ); } if ( open. contains ( nextwaypoint )) { open. reprioritize ( nextwaypoint, Math. round ( nextwaypoint. getdistfromstart () + nextwaypoint. getdisttogoal ())); } else { nextwaypoint. priority = Math. round ( nextwaypoint. getdistfromstart () + nextwaypoint. getdisttogoal ()); open. enqueue ( nextwaypoint ); } } // now we are done with this successor of currentnode } } closed. set ( currentwaypoint ); } return false ; // if no path found and open list is empty public function getpath (): LinkedStack { var path : LinkedStack = new LinkedStack (); var waypoint : Waypoint = Waypoint ( this. endnode. val ); // constructs a path backward from the goal to the start waypoint while ( waypoint!= null ) { path. push ( waypoint ); waypoint = waypoint. getancestor (); } return path ; } Kód 5.2: Vlastná implementácia A* algoritmu v jazyku ActionScript 3.0 33

5. Implementácia Algoritmus pracuje s orientovaným grafom a jeho uzly ukladá do dvoch kolekcií. Prvá je prioritná fronta open, ktorá na začiatku algoritmu obsahuje len štartovací uzol. Druhá dátová štruktúra closed je množina už uzavretých uzlov a na začiatku je prázdna. Postupne sa vyberajú uzly s najvyššou prioritou, ktorá značí najmenší súčet vzdialenosti od počiatku a vzdušnej čiary k cieľu, a sú prehľadávané do šírky (breadth-first search, BFS). Takto sa spracovávajú jednotlivé susediace uzly, až kým sa nespracuje nami hľadaný cieľový uzol. Slovný popis vykonávania jednotlivých krokov algoritmu by bol pomerne zdĺhavý, jeho priebeh vystihuje komentovaný zdrojový kód 5.2. Už sme si síce popísali ako sa prehľadáva daný graf, aby sa našla najkratšia možná cesta existujúca medzi dvoma uzlami, nemusí však byť jasné, aký graf je vlastne na vstupe algoritmu a čo predstavujú jeho jednotlivé uzly. Vo funkciách triedy Pathfinder vidíme objekty typu Waypoint, čo sú určité významné body priestoru, v ktorom sa postava pohybuje. Spojitý priestor nepravidelného tvaru, obsahujúci tiež rôzne prekážky, môže byť rozdelený jedným z nasledujúcich spôsobov. Obr. 5.2: Vývoj hľadania najkratšej cesty s použitím nástroja Adobe Flash a tvorba vstupného grafu algoritmu A* Spôsoby rozdelenia spojitého priestoru [3]: pravouhlá mriežka najjednoduchší spôsob, ako nasegmentovať priestor je vytvoriť pravidelnú štvorčekovú sieť a uzly tvoriace graf reprezentujúci daný priestor sú na priesečníkoch v tejto mriežke tam, kde sa nenachádzajú žiadne prekážky 34

5. Implementácia kvadrantový strom quadtree metóda vytvárania štvorcov rôznych veľkostí, používaná tiež napríklad pri segmentácii obrazu, rozdeľuje rekurzívne štvorce na 4 rovnaké podštvorce (kvadranty), kým nepokryjú homogénny priestor konvexné polygóny priestor sa rozbije do konvexných útvarov, ktoré potom na hranách obsahujú body prechodu, a tým sa jednoducho docieli, že spojnica akýchkoľvek dvoch bodov bude vždy ležať vo vnútri týchto polygónov body viditeľnosti points of visibility je technika, ktorá nerozdeľuje priestor priamo, ale umiestňuje na scénu body typické pre konkávne uhly tohto priestoru a vedie rovno k obchádzaniu prekážok Herné jadro adventúry Stroj #257 využíva pri pathfindingu poslednú spomenutú metódu, kedy sú pri tvorbe scény na klikateľnú plochu objektu floor umiestňované inštancie triedy WaypointFlag. Vkladajú sa na význačné miesta v scéne, typicky vrcholy prekážok, čím dôjde k rozdeleniu plochy, na ktorej sa je možné pohybovať, na konvexné podmnožiny tohto priestoru. Takto vložené body potom reprezentujú uzly v grafe a hrany medzi nimi sú tvorené spojnicou týchto bodov, ak existuje. Hrana neexistuje vtedy, ak celá spojnica neleží vo vnútri klikateľnej plochy určenej k pohybu hráčovho avatara kap. 3.4. Práve tento postup umiestňovania bodov viditeľnosti sa ukázal ako najvhodnejšie riešenie problému týkajúceho sa pohybu postavy na nepravidelných plochách s prekážkami, ktorý je pre adventúry typický. 5.4 Rozširovanie aplikácie a jej ďalšia použiteľnosť Súčasťou tejto bakalárskej práce je hotová aplikácia disponujúca transparentným herným jadrom, ktoré je ľahko rozšíriteľné o nové prvky a môže byť ďalej použité na tvorbu vizuálne úplne odlišnej adventúry. Vyplýva to z vlastností nástroja Adobe Flash, kedy sú bitmapové obrázky vložené do objektov typu Movie Clip a zdrojový kód potom pracuje len s týmito objektmi, bez ohľadu na to, aký je ich grafický obsah. V jednej z posledných častí textu sa teda v skratke pozrieme na to, ako pri použití herného základu postupovať. Vytváranie hernej scény si vyžaduje len dodržať predpísané konvencie a názvy objektov. Najjednoduchší spôsob je modifikovať priamo Adobe Flash knižnicu hry Stroj #257. Demonštrujme si však pomenovávanie objektov na niekoľkých príkladoch. 35

5. Implementácia Obr. 5.3: Umiestňovanie waypointov (hore) a ukážka pohybu postavy s obchádzaním prekážky priamo v hre (dole) Každá herná obrazovka nesie pomenovanie triedy s príslušným poradovým číslom, napríklad Class: Scene1. Tá dedí metódy z triedy popisujúcej všeobecné vlastnosti scény, teda Base class: Scene1. V nej sa nachádzajú inštancia objektu Movie Clip s názvom background, ktorá v sebe ukrýva character a jednotlivé vrstvy pozadia scene1_layer1, scene1_layer2 atď. O úroveň vyššie na scéne je okrem pozadia aj Movie Clip floor, ďalej postupne označenia waypointov wp1, wp2, wp3. Okrem týchto červených bodov usmerňujúcich navigáciu postavy, zadávame aj oranžové objekty s názvami štartovacích bodov wpas2, wpas3 a prislúchajúcich končiacich bodov wpae2, wpae3. Označujú miesta, kde kráča charakter pri prechode a prelínaní scén. V neposlednej rade sú na scéne aj interaktívne klikateľné plochy 36

5. Implementácia objektov object1, object2 a k nim prislúchajúce žlté waypointy wpobject1, wpobject2, aby charakter vedel, kam má k predmetu kráčať. Rovnako máme i plochy, pomocou ktorých sa scéna opúšťa, napr. exit1. K tomuto východu v prvom (a jedinom) snímku scény priradíme zápisom kódu v tvare const EXIT1:String = "wpas3" waypoint, ktorý spôsobí prechod na Scene3. Obr. 5.4: Ukážka zavedených konvencií a názvov, ktoré je nutné dodržať pri ďalšom použití herného jadra Charakter je schopný nachádzať sa v niekoľkých stavoch a prehrávať príslušné animácie, ktoré sú postupne na snímkoch Movie Clipu s popiskom stand, walk, take, maybe, no, yes. Animácie státia, chôdze a načiahnutia za predmetom sú vyrenderované v ôsmich sadách, pre každý smer, čomu zodpovedajú aj popisky na snímkoch vo vnútri týchto Movie Clipov kap. 4.3. Zvyšné tri animácie sú určené na komunikáciu charakteru s hráčom, preto sú len v smere front. Celá táto štruktúra je v objekte character vložená dvakrát, kvôli rozdvojovaniu obrazu pri práci so stereoskopiou, pomenovaná je characterviewleft a characterviewright. Dodržanie takejto štruktúry objektov zaručí správne zostavenie herných scén po vykompilovaní programom Adobe Flash. Vytvorenie riadiacej triedy Main.as si už pochopiteľne vyžaduje znalosti syntaxe ActionScript verzie 3.0. Potom je nutné pracovať so vzniknutými scénami, inicializovať ich, poprepájať a skriptovať konkrétne väzby objektov vyskytujúcich sa vo vlastnej hre. V tejto triede je tiež vhodné pridať uvádzacie intro či záverečný epilóg s titulkami. 37

Kapitola 6 Záver Bakalárska práca Stereo adventúra s využitím programu Adobe Flash implementuje hru s názvom Stroj #257. Ide o tradičnú hru zo žánru adventúra, ktorá má slúžiť na prezentáciu možností a technológií Laboratória interakcie človeka s počítačom sídliacom na Fakulte informatiky Masarykovej univerzity. Využíva preto stereoskopické zobrazenie a hráčovi ponúka možnosť interagovať s aplikáciou pomocou herného ovládača Wii Remote alebo prostredníctvom zariadenia na snímanie pohybu Kinect. Klasická point- nclick adventúra je spracovaná výhrade ako 2D aplikácia, no použitím stereoprojekcie simuluje trojdimenzionálny herný priestor. K vnímaniu hĺbky prispieva aj grafické spracovanie, ktoré využilo modelovanie, animovanie a vykresľovanie prvkov v hre pomocou programu na tvorbu trojrozmernej grafiky 3ds Max. Aplikácia je implementovaná s použitím nástroja Adobe Flash a jeho programovacieho jazyka ActionScript 3.0. Tento program je určený na tvorbu interaktívnych materiálov s multimediálnym obsahom. Oproti použitiu známych jazykov typu Java či C++ tvorbu podobnej aplikácie značne zjednodušuje a pre daný projekt bol vhodnou alternatívou. Primárne na tvorbu adventúr v súčasnosti existuje niekoľko herných enginov, no žiadny momentálne nedisponuje možnosťami vytvoriť stereoskopickú hru. Aj táto skutočnosť viedla k vypracovaniu bakalárskej práce, ktorá okrem samotnej hry časť tried implementuje všeobecne. Vyvinutý herný základ je ľahko použiteľný aj k rozšíreniu hry alebo vytvoreniu ďalších, vizuálne odlišných adventúr. Ako sa s daným programovým jadrom pracuje a aké názvy majú niesť konkrétne objekty je popísané v poslednej časti textu. Text tiež v teoretickej časti oboznamuje čitateľa so spomínaným herným žánrom a princípmi stereo obrazu vo virtuálnych prostrediach určených na interakciu s užívateľom. Druhá časť práce popisuje tvorbu grafiky a vybrané aspekty samotného programového riešenia hry. Funkčnosť výslednej aplikácie zahŕňa väčšinu typických prvkov používaných v adventúrach z pohľadu tretej osoby. Hľadanie cesty charakterom a obchádzanie prekážok v podobe naimplementovaného A* algoritmu spĺňa požadovanú funkcionalitu. Algoritmus bol úspešne testovaný aj na zložitej- 38

ších scénach, než na akých je demonštrované jeho použitie v hre. Ďalej zbieranie predmetov a práca s inventárom hlavného hrdinu zodpovedá štandardom vyskytujúcim sa v hrách tohto typu. Samozrejme doposiaľ implementované základy je vhodné doplniť o radu ďalších funkcií, napríklad svetelne korigovať postavu vzhľadom k svetelným podmienkam konkrétnej scény či deformovať postavu pomocou lineárnych transformácií za účelom zdôrazniť perspektívu scény. Tým by sa vyriešila aj optická nedokonalosť splynutia charakteru s pozadím, ktorá sa momentálne prejavuje miernym vznášaním sa postavy. Herné jadro je ľahko rozšíriteľné o mnoho vylepšení, ktoré však už nie je možné prezentovať v rozsahu stanovenom bakalárskou prácou. Adventúru je možné so všetkými náležitosťami hrať v spomínanom HCI laboratóriu. Ponúknuté stereo zobrazenie je na projekčnom plátne dobre pozorovateľné. Mierna technologická nepresnosť vyplývajúca zo spôsobu použitia oboch ovládacích zariadení sa snaží byť eliminovaná. Testovanie prototypu aplikácie však ukázalo i v tomto smere priaznivé výsledky, kedy si subjekt po krátkej dobe zvykol na vysokú senzitivitu ako ovládača Wii Remote, tak i zariadenia Kinect. Hra bola vyhotovená aj pre bežné použitie na počítači s klasickým ovládaním pomocou myši a klávesnice. Od pôvodného zámeru vytvoriť túto verziu s použitím anaglyfu bolo upustené, pretože veľký úbytok svetla a farieb pri tejto technológii by bol viac na škodu, ako k prospechu veci. Táto verzia preto od stereoskopického vnemu abstrahuje. 39

Literatúra [1] MAESTRI, George. Digital Character Animation 2, Volume 1: Essential Techniques. Indianapolis, USA: New Riders Publishing, 1999. 280 s. ISBN 1-56205-930-0. 22 [2] BOUSQUET, Michele., MCCARTHY, Michael. 3ds Max Animation with Biped. Berkeley, USA: New Riders, 2006. 304 s. ISBN 0-321-37572-6. 22 [3] Game programming gems. Edited by Mark A. DeLoura. Rockland, USA: Charlies River Media, 2000. 614 s. ISBN 1-58450-049-2. 31, 32, 34 [4] ŽÁRA, Jiří., BENEŠ, Bedřich., SOCHOR, Jiří., FELKEL, Petr. Moderní počítačová grafika. Brno, CZ: Computer Press, 2004. 612 s. ISBN 80-251-0454-0. 14, 15, 16, 20 [5] AUKSTAKALNIS, Steve., BLATNER, David. Reálně o virtuální realite. Brno, CZ: Jota, 1994. 290 s. ISBN 80-85617-41-2. 14 [6] GRADECKI, Joe. The Virtual Reality Programmer s Kit. New York, USA: John Wiley & Sons, 1994. 383 s. ISBN 0-471-05253-1. 15 [7] BURIÁNEK, Jan. 3D stereoskopická produkce. Pixel, 2010, č. 159 164. Praha, CZ: Atlantida Publishing. ISSN 1211-5401. 11, 12 [8] SOCHOR, Jiří. Študijné materiály k predmetu Human Computer Interaction. Interactive Tools and Techniques in Virtual Environment [online]. Brno, CZ: Masarykova univerzita, 2010 [cit. 1. mája 2011]. Dostupné po autentizácii na: <https://is.muni.cz/auth/el/1433/ podzim2010/pv182/?fakulta=1433;obdobi=5104;kod=pv182>. 16 [9] Fakulta informatiky. Human Computer Interaction Laboratory [online]. Brno, CZ: Masarykova univerzita, 2010 [cit. 1. mája 2011]. Dostupné na: <http://decibel.fi.muni.cz/>. 16 [10] Adobe Systems Incorporated. What is Flash Professional? Adobe Flash Professional CS5 [online]. San Jose, USA: Adobe Systems, 2010 [cit. 40

28. októbra 2010]. Dostupné na: <http://www.adobe.com/products/ flash/whatisflash/>. 18 [11] BRONSTRING, Marek. What are adventure games? Adventure Gamers [online]. 15. októbra 2002 [cit. 28. marca 2011]. Dostupné na: <http: //www.adventuregamers.com/article/id,149/>. 3, 5, 6, 43 [12] Wikipedia contributors. Adventure game. Wikipedia, the free encyclopedia [online]. [cit. 29. marca 2011]. Dostupné na: <http://en. wikipedia.org/wiki/adventure_game>. 4 [13] JERZ, Dennis. Playing, Studying and Writing Interactive Fiction (Text Adventure Games). Jerz s Literacy Weblog [online]. Greensburg, USA, 2000 [cit. 29. marca 2011]. Dostupné na: <http://jerz.setonhill. edu/if/>. 4, 44 [14] LAUBR, Daniel. Diplomová práce. Stereoskopická projekce [online]. Praha, CZ: České vysoké učení technické, 2006 [cit. 19. apríla 2011]. Dostupné na: <https://dip.felk.cvut.cz/browse/ pdfcache/laubrd1_2006dipl.pdf>. 8, 9, 10, 11, 13, 14 [15] DURAS, Tomáš. Bakalárska práca. Stereoskopia v počítačovej grafike [online]. Bratislava, SK: Univerzita Komenského, 2009 [cit. 20. apríla 2011]. Dostupné na: <http://stereoskopia.galadance.sk/>. 8, 11, 12, 13, 14 [16] OSIČKOVÁ, Lenka., SZALAYOVÁ, Angelika. Seminárna práca z predmetu Percepcia. Kľúče vnímania hĺbky a priestoru [online]. Bratislava, SK: Univerzita Komenského, 2002 [cit. 19. apríla 2011]. Dostupné na: <http://www.percepcia.szm.com/hlbka.htm>. 8, 10 [17] HOLLIMAN, Nick. Binocularity.org [online]. Durham, UK: Durham Visualization Laboratory [cit. 20. apríla 2011]. Dostupné na: <http: //www.binocularity.org/>. 11 [18] Wikipedia contributors. Autostereoscopy. Wikipedia, the free encyclopedia [online]. [cit. 23. apríla 2011]. Dostupné na: <http://en. wikipedia.org/wiki/autostereoscopy>. 14 [19] Autodesk Incorporated. Character Animation. 3ds Max Reference [online]. San Rafael, USA: Autodesk, 2011 [cit. 8. mája 2011]. Dostupné na: <http://download.autodesk.com/us/3dsmax/2012help/>. 22 41

[20] MARCOUX, Louis. Stereoscopy in 3ds Max with StereoCam Modifier. AREA, Digital Entertainment & Visualization Community [online]. San Rafael, USA: Autodesk, 2010 [cit. 2. novembra 2010]. Dostupné na: <http://area.autodesk.com/blogs/louis/ stereoscopy_in_3ds_max_with_stereocam_modifier/>. 9, 10, 11, 13, 24 [21] JAKOB, Michal. Umělá inteligence v počítačových hrách. Science World [online]. Praha, CZ: IDG, 21. júna 2004 [cit. 11. mája 2011]. Dostupné na: <http://scienceworld.cz/technologie/ umela-inteligence-v-pocitacovych-hrach-1-2333>. 31 [22] Wikipedia contributors. A* search algorithm. Wikipedia, the free encyclopedia [online]. [cit. 11. mája 2011]. Dostupné na: <http://en. wikipedia.org/wiki/a*_search_algorithm>. 31, 32 [23] BACZYNSKI, Michael. Data Structures. Polygonal [online]. Mannheim, DE, 2011 [cit. 11. mája 2011]. Dostupné na: <http://code.google. com/p/polygonal/wiki/datastructures>. 32 [24] KENNER, Carl. GlovePIE [online]. 2010 [cit. 16. mája 2011]. Dostupné na: <http://glovepie.org/glovepie.php>. 17 [25] Institute for Creative Technologies. Flexible Action and Articulated Skeleton Toolkit. MxR [online]. Los Angeles, USA: University of Southern California, 2011 [cit. 16. mája 2011]. Dostupné na: <http:// projects.ict.usc.edu/mxr/faast>. 17 42

Zoznam obrázkov 2.1 Ukážky z adventúr: a) Broken Sword 2, b) Runaway, c) Syberia 2, d) Posel Smrti 2 [11].................... 6 3.1 Vplyv psychologických vodítok na vnímanie hĺbky (lineárna perspektíva, gradient textúry, relatívna veľkosť, svetlo a tieň) 10 3.2 Konvergujúce (vľavo) a asynchrónne paralelné kamery (vpravo) 11 3.3 Znázornenie komfortných oblastí a predmetov s negatívnou (hore) i pozitívnou paralaxou (dole).............. 12 3.4 Princíp filtrovania farieb pri použití red-cyan anaglyfu.... 13 3.5 Schéma pasívnej stereoskopickej projekcie v HCI laboratóriu. 17 4.1 Proces tvorby charakteru od ručne kreslených skíc (hore) po výsledné rendre (dole)....................... 21 4.2 Animovanie charakteru pomocou bipedálnej kostry v 3ds Max (vľavo) a výsledný Movie Clip tvorený z vyrendrovaných snímkov v Adobe Flash (vpravo)................... 23 4.3 Tvorba scény, umiestňovanie svetla a kamery s použitím modifikátoru od Louisa Marcouxa................. 24 5.1 Neúplný diagram tried aplikácie Stroj #257 s vyznačenými typmi objektov a kardinalitami................. 27 5.2 Vývoj hľadania najkratšej cesty s použitím nástroja Adobe Flash a tvorba vstupného grafu algoritmu A*......... 34 5.3 Umiestňovanie waypointov (hore) a ukážka pohybu postavy s obchádzaním prekážky priamo v hre (dole)......... 36 5.4 Ukážka zavedených konvencií a názvov, ktoré je nutné dodržať pri ďalšom použití herného jadra................ 37 43

Zoznam zdrojových kódov 2.1 Ukážka pôvodných zdrojových kódov Colossal Cave Adventure v jazyku Fortran [13]....................... 4 5.1 Metóda prehrávania a simulácie priestorového zvuku..... 30 5.2 Vlastná implementácia A* algoritmu v jazyku ActionScript 3.0 32 44

Príloha A Spustenie a ovládanie hry HCI Laboratótium Kinect pripojiť zariadenie k počítaču spustiť program FAAST.exe a načítať konfiguračný skript Stereo- Adventura\controls\KinectStereo- Adventure.cfg stlačiť postupne tlačidlá Connect a Start Emulator zaujať kalibračnú pózu na zaregistovanie užívateľa spustiť hru StereoAdventura\Stroj257.exe Wii Remote pripojiť ovládač k počítaču pomocou Bluetooth zapnúť Sensor Bar vysielajúci infračervené lúče (nepovinné) spustiť program GlovePIE.exe a načítať konfiguračný skript StereoAdv- entura\controls\wiiremotestereo- Adventure.PIE stlačiť tlačidlo Run, na ovládači by mali začať striedavo preblikávať modré LED diódy spustiť hru StereoAdventura\Stroj257.exe Klasické ovládanie pomocou klávesnice a myši akcia kliknutia ľavé tlačidlo myši zobraziť/skryť nápovedu (klikateľné plochy, východy) medzerník ukončiť hru escape 45

Príloha B Propagačný plagát hry 46

Príloha C Obsah priloženého média Zdrojové súbory tejto práce v typografickom systéme L A TEX Výsledná práca vo formáte PDF Spustiteľný EXE súbor s hrou Stroj #257 zvlášť verzia určená pre pasívnu stereoprojekciu v HCI laboratóriu a zvlášť pre klasické PC Konfiguračné skripty do programov GlovePIE a FAAST slúžiacich na ovládanie herných zariadení Wii Remote a Kinect Zdrojové súbory v jazyku ActionScript 3.0 a hlavný súbor FLA s projektom v nástroji Adobe Flash CS4 Professional Doplňujúce materiály modely, obrázky, zvuky a iné 47