Na tomto míst bude ociální zadání va²í práce



Podobné dokumenty
Integrování jako opak derivování

Skalární sou in. Úvod. Denice skalárního sou inu

Vektor náhodných veli in - práce s více prom nnými

Vektory. Vektorové veli iny

Limity funkcí v nevlastních bodech. Obsah

P íklad 1 (Náhodná veli ina)

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

A. PODÍL JEDNOTLIVÝCH DRUHŮ DOPRAVY NA DĚLBĚ PŘEPRAVNÍ PRÁCE A VLIV DÉLKY VYKONANÉ CESTY NA POUŽITÍ DOPRAVNÍHO PROSTŘEDKU

Pr b h funkce I. Obsah. Maxima a minima funkce

T i hlavní v ty pravd podobnosti

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4

Kelvin v kapkový generátor

Konceptuální modelování

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

Inteligentní zastávky Ústí nad Labem

BOZP - akcepta ní testy

Základní praktikum laserové techniky

Binární operace. Úvod. Pomocný text

Po etní geometrie. Výpo et délky p epony: c 2 = a 2 + b 2 Výpo et délky odv sny: a 2 = c 2 b 2, b 2 = c 2 a 2

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash Vibrio

Algoritmizace a programování

Specifikace systému ESHOP

7. Stropní chlazení, Sálavé panely a pasy - 1. část

DeepBurner (testování UI)

účetních informací státu při přenosu účetního záznamu,

1. (18 bod ) Náhodná veli ina X je po et rub p i 400 nezávislých hodech mincí. a) Pomocí ƒeby²evovy nerovnosti odhadn te pravd podobnost

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120

Státní maturita 2010 Maturitní generálka 2010 Matematika: didaktický test - základní úrove obtíºnosti MAGZD10C0T01 e²ené p íklady

2C Tisk-ePROJEKTY

Uºivatelská p íru ka Octopus

1 Data. 2 Výsledky m ení velikostí. Statistika velikostí výtrus. Roman Ma ák

Semestrální práce z p edm tu URM (zadání), 2014/2015:

Preference v u ívání prost edk elektronické komunikace áky a studenty

Jak na KOTLÍKOVÉ DOTACE? JEDNODUCHÝ RÁDCE PRO ZÁKAZNÍKY

Prezentace. Ing. Petr V elák 6. b ezna 2009

Výzva pro předložení nabídek k veřejné zakázce malého rozsahu s názvem Výměna lina

ízení Tvorba kritéria 2. prosince 2014

Studijní opora. Název předmětu: Organizační chování. Zpracoval: Mgr. Jaromír Ďuriš

S M L O U V A O D Í L O. uzavřená podle ust a násl. zákona č. 89/2012 Sb., občanského zákoníku v platném znění II.

Uºivatelská p íru ka k programu SlaFoR verze 1.0

Android Elizabeth. Verze: 1.3

7. Domy a byty Charakteristika domovního fondu

Teorie her. Klasikace. Pomocný text

DAŇOVÉ AKTULITY Daň z přidané hodnoty

Zadání. Založení projektu

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

Marketing. Modul 5 Marketingový plán

Online komunikace a videokonference

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury

IP kamerový systém Catr - uºivatelský návod k obsluze

na za átku se denuje náhodná veli ina

Analýza oběžného kola

Seriál: Management projektů 7. rámcového programu

1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

Šicí stroje NX-400 NX-200

VÝZVA. Česká republika-ministerstvo školství, mládeže a tělovýchovy (dále jen zadavatel) se sídlem Karmelitská 7, Praha 1, IČ

Výzva k podání nabídek (zadávací dokumentace)

POKYNY BOZP a EMS pro DODAVATELE

Microsoft Office Project 2003 Úkoly projektu 1. Začátek práce na projektu 1.1 Nastavení data projektu Plánovat od Datum zahájení Datum dokončení

Statutární město Most Radniční 1 Most. Úsvit. Projekt partnerské spolupráce při zlepšování situace v sídlišti Chanov

Centrum digitální optiky

1. kolo soutěže probíhá: od :00:00 hod do :59:59 hod

Čl. I. Vyhláška č. 106/2001 Sb., o hygienických požadavcích na zotavovací akce pro děti, ve znění vyhlášky č. 148/2004 Sb.

PALETOVÉ REGÁLY SUPERBUILD NÁVOD NA MONTÁŽ

Obsah. Pouºité zna ení 1

1.7. Mechanické kmitání

I. Objemové tíhy, vlastní tíha a užitná zatížení pozemních staveb

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:

Základní praktikum laserové techniky

EDSTAVENÍ ZÁZNAMNÍKU MEg21

Novinky verzí SKLADNÍK 4.24 a 4.25

Rovnice a nerovnice. Posloupnosti.

ÚVOD DO GEOGRAFICKÝCH INFORMA NÍCH SYSTÉM

KAPITOLA 6.3 POŽADAVKY NA KONSTRUKCI A ZKOUŠENÍ OBALŮ PRO INFEKČNÍ LÁTKY KATEGORIE A TŘÍDY 6.2

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

Pokyn D Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Česká školní inspekce Středočeský inspektorát INSPEKČNÍ ZPRÁVA. Č. j. ČŠIS-2460/10-S. Želivského 805, Kolín IV

Věc: Výzva pro předložení nabídek k veřejné zakázce s názvem: VÚ a ŠJ PŠOV, Nákup nového osmimístného vozidla

e²ení 1. série Úvodní gulá² autor: Kolektiv org

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

doc. Dr. Ing. Elias TOMEH

Osvětlovací modely v počítačové grafice

Pracovní návrh. VYHLÁŠKA Ministerstva práce a sociálních věcí. ze dne o hygienických požadavcích na prostory a provoz dětské skupiny do 12 dětí

Zásady a podmínky pro poskytování dotací na program Podpora implementace Evropské charty regionálních či menšinových jazyků 2011

Česká školní inspekce Středočeský inspektorát INSPEKČNÍ ZPRÁVA. Čj.: ČŠIS-128/11-S. Mateřská škola Červený Újezd, okres Praha-západ

1. Informace o předmětu zakázky Stručný textový popis zakázky, technická specifikace

Úklidové služby v objektu polikliniky

ZADÁVACÍ DOKUMENTACE

Vážení klienti, Upozorníme i na praktické důsledky nesjednání pravidelného pracoviště při poskytování cestovních náhrad. TaxVision, s.r.o.

Evko - uºivatelská p íru ka verze 5.1.0

P íklady k prvnímu testu - Pravd podobnost

ZNAK ČERVENÉHO KŘÍŽE, JEHO OCHRANA A UŽÍVÁNÍ

Memoria Mundi Series Bohemica z trezoru na Internet

Všeobecné podmínky provozu sběrných míst kolektivního systému Eltma

Informace a návod k pouºití ablony pro BP student FZS v Plzni. Ing. Petr V elák 20. únor 2012

Transkript:

Na tomto míst bude ociální zadání va²í práce Toto zadání je podepsané d kanem a vedoucím katedry, musíte si ho vyzvednout na studiijním odd lení Katedry po íta na Karlov nám stí, v jedné odevzdané práci bude originál tohoto zadání (originál z stává po obhajob na kated e), ve druhé bude na stejném míst neov ená kopie tohoto dokumentu (tato se vám vrátí po obhajob ). i

ii

ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta ové graky a interakce Diplomová práce Simulace davu Bc. Mat j Varcl Vedoucí práce: Ing. Roman Berka, Ph.D. Studijní program: Otev ená informatika, strukturovaný, Navazující magisterský Obor: Po íta ová graka a interakce 1. ledna 2013

iv

v Pod kování Cht l bych pod kovat v²em, kte í m p i tvorb této práce jako i po dobu celého studia podporovali a motivovali k dal²í innosti.

vi

vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn a pouºil jsem pouze podklady uvedené v p iloºeném seznamu. Nemám závaºný d vod proti uºití tohoto ²kolního díla ve smyslu Ÿ60 Zákona. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm n n kterých zákon (autorský zákon). V Praze dne 2. 1. 2013.............................................................

viii

Abstract This work present two levels design of crowd simulation. The rst level is simulation and second level is visualization. The language for agent motion description is designed too. The simulation application is derived from social forces model. The eor it to reduce wrong abilities of this model and adapt output for motion description language. The visualization application interpret this language and display agents movement in 3D. Abstrakt Tato práce se zabývá vytvo ením dvouúrov ového konceptu simulace chování dav na úrovni jednotlivc. První úrovní je simulace tohoto chování a druhou úrovní je vizualizace. Také je navrºen jazyk, který slouºí k propojení t chto úrovní. Simula ní aplikace vychází z modelu vzájemného p sobení agent (social forces model) a dále ho roz²i uje. Snaha je odstranit nepat i né vlastnosti tohoto modelu a uzp sobit výstup pro pot eby jazyka pro záznam pohybu. Vizualiza ní aplikace interpretuje tento jazyk a zobrazuje pr b h simulace ve 3D. ix

x

Obsah 1 Úvod 1 2 Popis problému, specikace cíle 3 2.1 Existující práce.......................... 4 2.1.1 Simulace davu....................... 4 2.1.2 Jazyk pro záznam pohybu................ 5 2.1.3 Zobrazení animace.................... 5 2.2 Vymezení cíl práce........................ 5 3 Analýza a návrh e²ení 7 3.1 Jazyk pro záznam pohybu.................... 7 3.2 Kongura ní soubor....................... 9 3.3 Simula ní aplikace........................ 10 3.3.1 Pouºité technologie.................... 10 3.3.2 Návrh aplikace...................... 11 3.3.3 Simula ní model..................... 12 3.3.3.1 Síla p edcházení kolizí............. 15 3.3.3.2 Síla pro e²ení kolizí.............. 17 3.3.3.3 e²ení vibrací.................. 17 3.3.3.4 azení do p irozených front.......... 18 3.3.3.5 Roz²í ení o události.............. 18 3.4 Vizualiza ní aplikace....................... 20 3.4.1 Pouºité technologie.................... 20 3.4.2 Návrh aplikace...................... 22 4 Realizace 23 4.1 Kongura ní soubor....................... 23 4.2 Simula ní aplikace........................ 27 4.3 Jazyk pro záznam pohybu agent................ 30 4.4 Vizualiza ní aplikace....................... 32 5 Testování a výsledky 35 5.1 Metody testování......................... 35 5.2 Výsledky testování........................ 36 5.3 Interpretace výsledk....................... 37 xi

xii OBSAH 6 Záv r 39 A Slovní ek pojm z zkratek 43 B Podrobná denice jazyk 45 B.1 Kongura ní soubor....................... 45 B.2 Jazyk pro popis pohybu..................... 48 C Popis kongura ního souboru vizualiza ní aplikace 51 D Instala ní a uºivatelská p íru ka 53 D.1 Pouºívání alikací......................... 53 D.1.1 Simula ní aplikace.................... 53 D.1.2 Vizualiza ní aplikace................... 54 D.2 Kompilace ze zdrojových kód.................. 54 E Obsah p iloºeného CD 55

Seznam obrázk 3.1 Blokové schéma ástí práce.................... 8 3.2 Class diagram simula ní aplikace................ 13 3.3 Oblast zájmu ºlutého agenta................... 15 3.4 Výpo et sil pro vyhnutí agent................. 16 3.5 Detek ní oblast pro pravidlo ekání............... 19 4.1 P evod pozic na p ímo arý pohyb a orientaci.......... 28 xiii

xiv SEZNAM OBRÁZK

Kapitola 1 Úvod Simulace chování dav na úrovni jednotlivých lidí je oblast, ve které probíhá výzkum jiº od konce 80. let 20. století. Cílem je vytvo it model, kde se budou jednotliví ú astníci v davu (dále agenti) chovat dle svých cíl. Zam ení výzkumu je moºné rozd lit do t í základních skupin. První z nich je lm, druhým jsou po íta ové hry a t etím bezpe nostní simulace. Pro kaºdou z t chto kategorií jsou d leºit j²í jiné aspekty simulace. Pro pot eby lmu je nejd leºit j²í vzhled a výsledný dojem. Chování agent nemusí být úpln reálné, protoºe sta í, kdyº divák uv í tomu, ºe to tak m ºe být. Variabilita cíl jednotlivých agent je zpravidla malá. Také poºadavky na rychlost simulace a zobrazení nejsou moc d leºité (zpomalení simulace oproti reálnému asu m ºe být n kolikanásobné). Na rozdíl od toho u po íta ových her je d leºité, aby simulace probíhala v reálném ase, aby byla hra plynulá. Výsledné chování agent sta í uv itelné jako v p ípad lmu, ale variabilita cíl je zde zpravidla v t²í. Zárove je kladen d raz na vzhled a výsledný dojem. Navíc je zde je²t pot eba reagovat na chování hrá e. Oproti p edchozím je v poslední kategorii kladen d raz p edev²ím na reálnost chování agent, protoºe se na základ simulace d lají rozhodnutí, která v krizových situacích ovliv ují ²anci na p eºití lidí. Zobrazení sta í, aby bylo srozumitelné a jasn pochopitelné. Simulace m ºe probíhat zpomalen, ale pokud není obraz n kam zaznamenáván podobn jako u lmu, tak toto zpomalení nesmí být moc veliké. Navíc se od simulace o ekávají je²t n jaká dal²í souhrnná data (nap íklad kdy poslední z lidí opustil budovu, nebo kolik lidí bylo zran no). 1

2 KAPITOLA 1. ÚVOD

Kapitola 2 Popis problému, specikace cíle Simulace dav je docela obecné téma, ve kterém je pot eba e²it n kolik problém. V²echny tyto problémy vychází z r zných aspekt lidského chování. Hlavním cílem v této oblasti výzkumu je vytvo it model, který na základ malého mnoºství vstupních parametr provede realistickou simulaci chování v²ech lidí v davu. Nejzákladn j²í problém je e²ení reakce agent (jednotlivých lidí v davu) na své nejbliº²í okolí a interakce s ním (lokální plánování pohybu). Dal²ím problémem je samotné plánování pr chodu scénou na základ celkových informací o scén. Od toho je jen o kr ek dál rozhodovací mechanizmus pro jednotlivé agenty na základe jejich vlastností, znalostí a podn t z jejich blízkého i vzdáleného okolí. Také je pot eba zajistit dostate nou r znorodost agent. Mimo simulace chování samotných agent je nutné brát v potaz i dal²í objekty ve scén a to jak statické tak pohyblivé (výtah, dve e...). Dal²ím samostatným odv tvím je simulace dopravy (auta, tramvaje...). Mimo samotných problém simulace jsou zde je²t problémy s jejím zobrazením. Je nutné jednotlivé díl í stavy simulace vhodn p evád t na výslednou vizualizaci. Zde záleºí na ú elu provád ní simulace. Pro r zné bezpe nostní simulace není okolo zobrazení moc problém, protoºe sta í jen n jaké schématické, které ale musí být dob e srozumitelné. V ostatních oblastech, kde je kladen d raz na grackou podobu výstupu, je je²t u agent pot eba e²it mimo r znorodosti na základ jejich vlastností, znalostí a reakcí, ale i jejich vizuální jedine nost. Navíc v rohodná animace lidské postavy je také velice komplexní problém (tím se ale tato práce zabývat nebude). V²echny vý²e zmín né problémy s sebou nesou je²t jeden a tím je moºnost provád t celou simulaci (a zobrazení) v n jakém rozumném ase (hodn závisí na pouºití, t eba pro po íta ové hry je nutnost simulace v reálném ase), coº s sebou nese zna né poºadavky na rychlost výpo t. Tato práce problém náro nosti výpo t a zobrazení d lí na dva snaz²í rozd lením simulace a zobrazení na úpln odd lené ásti. To ale p iná²í nutnost záznamu simulace a p edání jejích výsledk a pr b hu pro následnou vizualizaci. Zde je 3

4 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE nutné vy e²it zp sob, jak efektivn zaznamenávat pohyb jednotlivých agent po scén. 2.1 Existující práce Na základ vý²e zmín ných problém je z ejmé, ºe bude pot eba hledat e²ení a tedy i vhodné materiály ve t ech r zných oblastech, které odpovídají jednotlivým ástem práce. První z nich je samotná simulace davu, kde byly vyhledávány informace o jiº existujících simula ních modelech a postupech. Druhou skupinou hledaných informací je popisný záznam pohybu lidí. T etí skupinou vyhledávaných informací byly informace o moºnostech a nástrojích pro 3D zobrazení a výhodách jejich pouºití v kontextu zobrazení scény. Jelikoº jsou tyto ásti rozli né, tak jsou popsány jednotliv v samostatných podkapitolách. 2.1.1 Simulace davu Výzkum v oblasti simulace dav stále probíhá v n kolika výzkumných skupinách. První z nich je CSG [2], která se zabývá p edev²ím simulací dopravy, coº není pro tuto práci relevantní. Dal²í výzkumnou skupinou je GA- MMA [3], jejíº lenové vytvo ili ORCA model [10]. Tento model je zaloºený na výpo tu nekolizních sm r pohybu v lokálním okolí agenta v závislosti na pohybu ostatních agent a dal²ích vlastností agenta. Tyto skupiny nejsou jediné, kde probíhá výzkum. Mimo prací t chto výzkumných skupin bylo publikováno n kolik dal²ích metod simulace. První z nich je metoda zaloºená na analýze reálného záznamu chování lidí [13]. Tato metoda spo ívá ve vytvo ení databáze situací v jakých se m ºe agent v pr b hu simulace vyskytnout na základ videa reálného davu. P i simulaci je pak tato databáze procházena a na základ podobnosti se ur í výsledná trajektorie agenta. Velice významnou metodou pro simulaci dav je metoda sociálních sil (Social Forces Model) [11], která pro simulaci vyuºívá vzájemného p sobení sil mezi jednotlivými agenty, p ekáºkami i zdmi. Z tohoto základního principu vychází model HiDAC [14], který p vodní model roz²i uje o adaptivnost chování agenta v závislosti na chování okolních agent. Cílem tohoto je odstran ní neºádoucích vlastností p vodního modelu (nap íklad do asné vibrování agenta mezi dv ma body) a roz²í ení moºností simulace. Dal²í metoda spo ívá v pouºití vzor chování [17], která d lí simulaci na dv úrovn. Na spodní úrovni je e²en samotný lokální pohyb agent (ch ze, gesta...) p edev²ím pomocí p edp ipravených animací. Horní vrstva slouºí k interakci s okolím a je e²ena pomocí stavového automatu. Také je zde popsána my²lenka rozd lení aplikace na dv nezávislé vrstvy tak, ºe první se stará o simulaci a druhá o zobrazení.

2.2. VYMEZENÍ CÍL PRÁCE 5 2.1.2 Jazyk pro záznam pohybu V t²ina prací ohledn jazyk pro ízení pohybu je zam ena na programování robot a ne na záznam pohybu. Dále existuje mnoºství prací, které se zabývají rozpoznáváním, klasikací a zaznamenáním pohybu na základ reálných vstupních dat (video, obrázky). P íkladem takové práce je [15]. Tato práce je zam ena na rozpoznávání pohyb z sekvence obrázk ve stupních ²edi. V této oblasti prací se pouºívají r zné struktury pro záznam pohybu, ale ty slouºí p edev²ím pro popis v obráceném sm ru a tak nejsou vhodné. Jedním z existujících projekt vyuºívajících jazyka pro popis pohybu je projekt EMBR [12], který na základ popisu ve vlastním jazyce vizualizuje gesta postav. V tomto projektu vytvo ili vlastní skriptovací jazyk a aplikaci pro jeho interpretaci. Samotná aplikace je e²ena jako vícevrstvá. První vrstva zpracuje skript na jednotlivé pohyby. Druhá slouºí jako plánova, který spou²tí a ukon uje provád ní pohyb. T etí poskládá v²echny pohyby ur ené pro jednu osobu a vytvo í výslednou polohu modelu. Poslední je 3D engine, který zobrazuje výsledek. 2.1.3 Zobrazení animace Moºností pro zobrazení 3D animací je mnoho. Dají se rozd lit do zhruba t í skupin. První z nich je vytvo it si vlastní aplikaci postavenou nad DirectX nebo OpenGL. K obojímu existuje mnoho tutoriál. Druhou moºností je vyu- ºít n jaký existující engine. P íkladem takových je OGRE [6] nebo Havok[4]. Poslední moºností je vyuºití zobrazovacích prvk aplikace p vodn ur ené pro modelování, jako je t eba Blender [1]. 2.2 Vymezení cíl práce Z vý²e zmín ného je patrné, ºe problém okolo simulace dav je dost. V t²ina z nich byla jiº n jakým zp sobem e²ena, ale zatím není ve ejn známé n jaké komplexní, obecn funk ní e²ení. Stejn tak není moºné se v novat v rámci této práce v²em aspekt m simulace a tak se zam íme jen na n které. Základní cíl této práce vyplývá p ímo ze zadání. Tím je odd lení výpo tu simulace a její zobrazení na dv samostatné ásti, jenº budou propojeny pomocí jazyka pro záznam pohybu. Proto je moºné i práci rozd lit na t i ásti. Nejobsáhlej²í ástí bude samotná simulace chování davu. Druhou ástí bude návrh jazyka pro záznam pohybu a t etí ástí bude vizualizace takto zaznamenaného pohybu. Hlavní ástí této práce je samotná simulace. Cílem je vytvo it obecný simula ní model chování dav s podporou jednoduchých lokálních událostí ovliv ujících chování agent. Zam ení tohoto modelu bude na mén rozsáhlé simulace, pro které jsou jiº p ed jejich za átkem známé v²echny faktory, které

6 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE tuto simulaci ovliv ují. Simulace se bude zam ovat na chování agent na základ podn t z jejich blízkého okolí. Proto tato práce nebude obsahovat ºádné mechanismy pro plánování pr chodu scénou na globální úrovni. Také se tato práce zam uje jen na simulaci lidí (ºádné dopravní prost edky). Dal²í ástí této práce je jazyk pro záznam pohybu jehoº cílem je uloºení výsledk simulace pro pozd j²í zobrazení jejího pr b hu. Cílem je vytvo it kompaktní záznam, který bude snadno interpretovatelný pro pot eby vizualizace. Poslední ástí práce je zobrazení pr b hu simulace na základ jiº zmín ného jazyka. Zde je cílem vytvo it jednoduchý postup pro zpracování tohoto jazyka a zobrazení 3D scény. Tato práce se ale nezabývá realisti ností samotných zobrazených model ani animací.

Kapitola 3 Analýza a návrh e²ení Ze specikace cíl vyplývá pot eba vytvo it dv aplikace (simula ní a vizualiza ní), jazyk pro záznam pohybu a jazyk pro kongura ní soubor simula ní aplikace. Celkový pr b h od denice scény po výsledné zobrazení je et zec n kolika krok. Na za átku et zce je kongura ní soubor slouºící pro denici scény. Tento soubor je vstupním bodem pro simula ní aplikaci a slouºí k denici simulace. Simula ní aplikace provede simulaci a její pr - b h uloºí v jazyce pro popis pohybu agent. Tento jazyk slouºí jako vstup pro vizualiza ní aplikaci a je tak spojujícím prvkem obou aplikací. Na konci et zce je vizualiza ní aplikace, která na základ informací v jazyce pro popis pohybu zobrazí výslednou animaci. Celý tento proces zachycuje blokové schéma na obrázku 3.1. Jelikoº je kaºdý z t chto blok samostatný, je jejich návrh popsán v samostatných podkapitolách. Nejprve jsou popsány oba jazyky. Jelikoº jsou na jazyk pro popis pohybu v t²í nároky, bude popsán jako první. Následovat bude popis kongura ního souboru a poté p ijde na adu simula ní aplikace. Nakonec bude popsán návrh vizualiza ní aplikace. 3.1 Jazyk pro záznam pohybu Ú elem jazyka pro záznam pohybu je zaznamenat pohyb agent ve scén, jehoº základem je zm na pozice v závislosti na ase. S tímto v domím byly zvaºovány ty i moºnosti, jak tento jazyk vytvo it. První z nich bylo vytvo ení n jakého vlastního skriptovacího jazyka jako u projektu EMBR [12]. Výhodou by bylo vytvo ení popisu p ímo na míru pot ebám. Díky tomu by bylo moºné dosáhnout intuitivní srozumitelnosti a pom rn minimalistického zápisu. Jazyk by um l jen to, co by bylo pot eba, a nic navíc. To by vedlo k moºnosti vytvo it opravdu efektivní parser. Toto by bylo vyváºeno nutností vytvo ení vlastního parseru pro daný jazyk. Dále pokud by n kdo cht l vytvo it animaci p ímo v tomto jazyce, musel by se nau it jeho specika (zde by bylo moºné syntakticky vycházet z existujících jazyk, a tak by to aº 7

8 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ Obrázek 3.1: Blokové schéma ástí práce takový problém nebyl). Zárove v p ípad jakékoliv budoucí úpravy by bylo nutné zasahovat do parseru a to by mohlo vést ke vzájemné nekompatibilit jednotlivých verzí nebo by se tím ztrácela výhoda parseru ²itého p ímo na míru konkrétnímu pom rn minimalistickému jazyku. Druhou moºností by bylo vyuºít n jakého existujícího skriptovacího jazyka. Díky tomu by odpadla nutnost psát vlastní parser a sta ilo by jen poskytnout vhodné api pro tento jazyk. P íkladem takového jazyka je Lua [5]. Tento jazyk dokáºe p istupovat k C++ objekt m, a tak by nastavení jednotlivých parametr pro pohyb agent mohlo probíhat p ímo ze skriptu. To by zna n usnadnilo jeho pouºití. P i tomto pouºití by v²ak bylo pot eba zajistit, ºe nejsou ze skriptu nastavovány nesmyslné hodnoty. Kv li tomu by bylo nutné stejn jednotlivé parametry nastavovat p es p ipravené funkce, a tak by zde oproti vlastnímu skriptovacímu jazyku nebyla aº tak veliká výhoda. Vzhledem k tomu, ºe je tvo en ist popisný jazyk, by bylo vyuºití b ºných schopností skriptovacího jazyka jako jsou podmínky nebo cykly minimální, pokud v bec. Kv li tomu by tato moºnost nem la oproti vlastnímu skriptovacímu jazyku podstatné výhody a tak od ní bylo upu²t no hned z po átku. T etí moºností bylo vyuºití XML. Hlavní výhodou je, ºe se jedná o standardizovaný zp sob záznamu dat. Z toho d vodu pro n j existuje mnoºství parser. Nevýhodou je, ºe pom r mezi mnoºstvím uloºené informace a velikostí, kterou zabírá, není moc dobrý. Obzvlá²t tehdy, kdy je zaznamenáváno velké mnoºství samostatných informací jako v tomto p ípad. Pouºití exis-

3.2. KONFIGURAƒNÍ SOUBOR 9 tujícího XML parseru navíc p iná²í oproti skriptovacím jazyk m moºnost jeho vyuºití i v simula ní aplikaci pro zápis v tomto jazyce. Z moºných XML parser byl zkoumán TinyXML-2 [8] a Xerces-C++ [9]. Druhý jmenovaný je komplexn j²í. Umoº uje pracovat s dokumentem v reºimu SAX i DOM. S tím p ichází i komplikovan j²í api. Naproti tomu se TinyXML-2 zam uje na co nejjednodu²²í a nejefektivn j²í práci s dokumentem. A to jak na úrovni výkonu samotného parseru tak i jeho pouºití. Pro práci s dokumentem vyuºívá pouze DOM reºim. To s sebou nese snaz²í pouºití. Poslední moºností by bylo vytvo ení binární formy jazyka. To by umoºnilo generování malých soubor i pro komplikovan j²í scény. Tyto soubory by v²ak bez pouºití dal²ích nástroj byly pro lov ka ne itelné a jejich editace by byla zna n komplikovaná. Navíc zde platí v t²ina nevýhod jako u moºnosti vytvo ení vlastního skriptovacího jazyka. Na základ vý²e zmín ných moºností, jejich výhod a nevýhod byl zvolen zápis v XML za pouºití TinyXML-2 parseru. Hlavním d vodem bylo, ºe toto e²í jak na tení souboru na stran vizualiza ní aplikace, tak i jeho uloºení na stran simula ní aplikace. Zápis v XML je pro lov ka itelný, a tak lze snadno kontrolovat a editovat (coº se projeví p edev²ím p i hledání chyb). Obsah tohoto jazyka p ímo vyplývá z jeho ur ení. Musí zaznamenávat ve²keré informace pot ebné pro zobrazení pr b hu simulace. Proto mimo samotného pohybu agent musí uchovávat i informace o scén, ve které simulace probíhá. Hlavní ástí je v²ak záznam pohybu agent. Tento pohyb se dá zjednodu²it na dv základní informace. První z jich je trajektorie pohybu (místa po kterých se agent pohybuje) a druhým je orientace agenta (jak je v daný moment agent nato ený). Pro pot eby záznamu je výsledná trajektorie kaºdého agenta rozd lena na díl í p ímo aré pohyby a tyto jsou teprve zaznamenány. Navíc je u kaºdého tohoto díl ího pohybu zaznamenáno i nato ení agenta pokud není ve sm ru pohybu. Jednotlivé p ímo aré pohyby jdou denovat pomocí ty parametr, kterými jsou poloha a as za átku pohybu a poloha a as konce pohybu. Jelikoº jednotlivé pohybu na sebe co se polohy tý e navazují, tak není nutné zaznamenávat po átek, protoºe je schodný s koncem minulého. Toto ale u asu neplatí, protoºe agent m ºe n jakou dobu jen stát na jednom míst. Z toho d vodu bude pohyb denován pomocí asu za átku a konce pohybu, kone nou polohou a je²t orientací agenta (orientace ur uje zda agent couvá, d lá úkroky a podobn ). 3.2 Kongura ní soubor Podobn jako jazyk pro záznam pohybu agent je i denice po áte ní kongurace scény jazykem ist popisným. Z tohoto d vodu jsou i pro zp - sob záznamu kongurace scény zvaºovány obdobné zp soby zápisu. Jediným v t²ím rozdílem je p edpoklad, ºe tento popis bude tvo it pln nebo alespo áste n p ímo lov k. Z toho d vodu nebyla ani uvaºována n jaké forma binárního zápisu a tak byly uvaºovány jen skriptovací jazyky (a uº vytvo ený

10 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ specicky pro tento ú el, tak i existující obecné) a XML. Výhody a nevýhody jednotlivých e²ení byli jiº podrobn popsány v p edchozí kapitole 3.1 a i pro toto ur ení z stávají platné beze zm n. Na základ vý²e zmín ného i s p ihlédnutím k faktu, ºe simulace je zam ena p edev²ím na mén rozsáhlé scény byl stejn jako u jazyka pro záznam pohybu agent zvolen zápis v podob XML. Vyuºití schodné technologie pro zápis obou jazyk p iná²í je²t jednu drobnou výhodu, kterou je nutnost integrace jen jedné technologie pro záznam a na tení dat, coº s sebou nese i v t²í p ehlednost. Obsah kongura ního souboru vychází p ímo z pot eb parametrizace simulace. Musí obsahovat denici scény, agent, událostí a také obecné nastavení simulace (bude-li t eba). Scéna bude denována pomocí pozic a rozm r zdí a jiných p ekáºek. Agenti budou denováni pomocí jejich po áte ní pozice, vlastností ovliv ujících simulaci a také seznamem cíl jejich cesty. Jednotlivé události ovliv ující simulaci budou denovány pomocí asu za átku a konce, druhu události a dal²ích díl ích parametr denujících její vliv na scénu. 3.3 Simula ní aplikace Návrh simula ní aplikace m ºeme rozd lit na 3 ásti. První je výb r technologií pro její realizaci (pouºité knihovny). Druhou ástí je navrºení vnit ní logiky této aplikace. Poslední a pro tuto práci nejd leºit j²í ástí je návrh samotného simula ního modelu, který bude tato aplikace realizovat. 3.3.1 Pouºité technologie Simula ní aplikace nemá na pouºití r zných stávajících prost edk p íli² velké poºadavky. P ímo v zadání je poºadavek na implementaci v C++ a tak není nutné zvaºovat ºádné jiné moºnosti a sta í jen vybrat dopl ující pro funkcionalitu, kterou neposkytují p ímo standardní knihovny. Pro pot eby simulace jako takové nebude pot eba ni eho speciálního a tak vyuºití standardních knihoven, ale i p i simulaci je nutné vykreslovat její pr b h. Zobrazení sta í pouze schématická, protoºe to není hlavní vizuální výstup této práce a slouºí p edev²ím pro kontrolu pr b hu simulace. Proto zde nemá cenu uvaºovat o n jakých komplexn j²ím e²ením a sta í sáhnout po n jakém základním. Dosta uje, kdyº bude umoº ovat vytvo it okno, ve kterém aplikace pob ºí, a umoºní základní ovládání a jednoduché zobrazení. Jednou z moºností je t eba GLUT [16], který je ur ený pro tvorbu OpenGL aplikací. Jedná se o jednoduchý multiplatformní okenní systém umoº ující obsluhu událostí jako stisknutí klávesy a podobn. Dal²í existující knihovnou, umoº ující vytvo ení okna, obsluhu událostí a jednoduchou práci s grakou, je SDL [7]. Tato knihovna obsahuje základní moºnosti pro práci s 2D grakou, nebo je moºné vyuºití OpenGL pro 3D graku. Navíc je²t obsahuje dal²í ásti pro

3.3. SIMULAƒNÍ APLIKACE 11 práci t eba se zvukem nebo se sítí. Stejn jako GLUT je multiplatformní. Ani jedna z t chto moºností nep iná²í ºádné zásadní výhody oproti té druhé v kontextu pot eb této práce. Nakonec dostal p ednost GLUT, protoºe jeho základní pouºití je o n co jednodu²²í. 3.3.2 Návrh aplikace Tato aplikace má za úkol na íst z kongura ního souboru iniciální stav scény, provést simulaci chování agent a uloºit její pr b h. P itom má v²e schématicky zobrazovat. Zde se p ímo nabízí vyuºití návrhového vzoru Modelview-controller. Tento vzor d lí aplikaci do t í modul (vrstev). Prvním je model, který reprezentuje data. Druhým je modul view, který obstarává zobrazení dat. T etím je controller, který se stará o aktualizaci dat. V nejb ºn j²ím uºití je aktualizace dat vyvolávána uºivatelem, ale zde bude probíhat automaticky v závislosti na ase. Nejjednodu²²ím z t chto modul je view. Ten pouze vykresluje 3D scénu na základ aktuálních dat. Také je jeho úkolem interakce s uºivatelem (pohyb po scén ). Model, nebo také datová vrstva, poskytuje ostatním modul m jistou abstrakci nad daty. T mito daty jsou údaje o scén (pozice a vlastnosti zdí, p ekáºek a agent ) a dosavadní pr b h animace. Tento modul se také bude starat o na tení dat z kongura ního souboru a uloºení pr b hu animace. Jelikoº je p edpoklad, ºe simulace se bude ú astnit v t²í mnoºství agent, je zde pot eba implementovat n jakou datovou strukturu, která bude urychlovat výpo ty jejich vzájemné interakce. Nejjednodu²²í takovou datovou strukturou je uniformní m íºka. Ta rovnom rn rozd lí prostor na jednotlivé bu ky (ve 2D tverce nebo obdelníky, ve 3D krychle i kvádry). Hlavní výhodou této datové struktury je snadné p i azení mezi bodem v prostoru a bu kou, ke které pat í. Jelikoº se nám data v pr b hu simulace m ní, je tato výhoda opravdu markantní, protoºe umoº uje snadnou adaptaci na zm nu dat. Nevýhodou je nutnost pamatovat si i prázdné bu ky. Dal²í moºností je vyuºití BVH (bounding volume hierarchy). Jedná se o strom obalových t les v jehoº listech jsou jednotlivé prvky scény. Vnit ní uzel je sjednocením obálek v²ech svých potomk. Ko enem tohoto stromu je obálka pro celou scénu. Výhodou této struktury je, ºe kaºdý prvek scény pat í vºdy jednozna n do jednoho uzlu na dané úrovni hierarchie. To usnad uje manipulaci s nimi. Nevýhodou je, ºe se obálky jednotlivých uzl na stejné úrovni hierarchie mohou p ekrývat, coº komplikuje vyhledávání. Díky snadné manipulaci s jednotlivými prvky není p estavba této struktury moc komplikovaná, ale m ºe zp sobovat postupné sniºování efektivity, a to aº do stavu, kdy je vhodn j²í celou strukturu zahodit a vystav t znovu. Poslední z moºností je vyuºití hierarchického d lení prostoru, jehoº p íkladem jsou KD-stromy. Tato struktura na kaºdé úrovni rozd lí prostor na dva podprostory pomocí ezu zarovnaného s n kterou z os. Výhodou tohoto p ístupu je, ºe se vnit ní uzly nijak nep ekrývají, coº zjednodu²uje vyhledávání. Nevýhodou je, ºe jeden prvek scény m ºe pat it do více uzl, coº komplikuje manipulaci s ním. P i práci s dynamickými

12 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ daty zde mohou být dva p ístupy. První je, ºe se aktualizují jen umíst ní jednotlivých prvk v rámci pevné struktury. Toto m ºe být výhodné v p ípad, ºe p edem známe chování dat. P i obecném chování tento p ístup nep iná²í ºádné zásadní výhody oproti uniformní m íºce. Druhou moºností je tuto strukturu adaptivn p estavovat podle zm n. Tento p ístup zaji² uje vºdy co moºná nejv t²í efektivitu pro vyhledávání, ale pokud je pom r mezi vyhledáváním a zm nami p íli² malý (málo vyhledávání mezi jednotlivými zm nami stromu), tak p estavování datové struktury zabere více asu neº kolik u²et í p i vyhledávání. Jelikoº v jednom simula ním kroku dojde k aktualizaci polohy prakticky v²ech agent, je schopnost efektivn pracovat s dynamickými daty klí ová. Po p ihlédnutí k tomuto faktu vychází nejlépe pouºití uniformní m íºky. Modul controller slouºící k aktualizaci dat obstarává samotnou simulaci. Simulace je rozd lena do jednotlivých krok. V kaºdém kroku dojde k aktualizaci sou asného stavu scény, který je následován jejím zobrazením. Toto probíhá ve smy ce, dokud uºivatel simulaci neukon í. P i simulaci p edpokládáme konstantní asovou prodlevu mezi jednotlivými jejími kroky. Výhodou toho je konstantní kvalita nezávislá na dostupném výpo etním výkonu, který se m ºe v pr b hu simulace m nit. Toto také zaji² uje opakovatelnost simulace. Nevýhodou tohoto p ístupu je, ºe tento asový úsek neodpovídá realit, a tak pob ºí zrychlen nebo zpomalen v závislosti na výkonu po íta e, kde je spu²t na. Jelikoº zobrazení pr b hu slouºí p edev²ím pro kontrolu, ºe probíhá správná simulace, a pro její ukon ení poté, co prob hne v²e podstatné, není toto n jakou zásadní nevýhodou. Výhodou vyuºití návrhového vzoru Model-view-controller je jistá míra abstrakce. Díky tomu m ºe být kaºdý modul nahrazen jiným, který bude poskytovat stejnou funkcionalitu. Z toho vyplývá, ºe jednotlivé moduly se nemusejí starat, jak vnit n fungují ty ostatní. Co do návrhu vnit ní funkcionality jsou moduly view a controller velice jednoduché. Oproti tomu model, který se stará o data, je mnohem zajímav j²í. Tento modul m ºeme rozd lit do n kolika základních t íd. Hlavní z nich je samotná datová vrstva, která se stará o udrºování dat v pam ti a poskytuje p ístup k nim. Pak tu máme samostatnou t ídu pro kaºdý druh dat (agent, p ekáºka, ze ). Jelikoº je pot eba ukládat dosavadní pr b h pohybu agenta, má kaºdý agent je²t odkaz na t ídu k tomu ur enou. Poslední t ídou je t ída pro akcelera ní strukturu, tedy uniformní m íºku. Sou ástí tohoto modulu je i balík tinyxml-2, který je vyuºíván pro na tení kongura ního souboru a uloºení souboru obsahujícího popis pr b hu simulace pro vizualiza ní aplikaci. Celkový class diagram je vid t na obrázku 3.2. 3.3.3 Simula ní model Úkolem simula ního modelu je algoritmicky popsat chování agent na základ jejich vlastností. P i vyhledávání existujících zdroj pro tuto práci byly

3.3. SIMULAƒNÍ APLIKACE 13 Obrázek 3.2: Class diagram simula ní aplikace nalezeny 3 r zná p ístupy (viz 2.1.1). Nejzajímav ji p sobí metoda zaloºená na analýze videí nato ených p i reálných situacích (popsána v [13]). P i vhodném zvolení zdrojových videí by m la poskytovat velice v rné výsledky, ale je zde riziko malé variability mezi jedotlivými agenty v podobných situacích a také jsme omezeni pouze na scény, pro které máme odpovídající zdrojové video. Dal²í nevýhodou je nutnost zpracování tohoto videa, kterou je velice komplikované n jak automatizovat. Druhý p ístup spo ívá v odhadování nekolizních sm r na základ lokálního okolí agenta a jeho dosavadního vývoje (popsán v [10]). Jeho výhodou je moºnost vysoké parametrizace agent a dobrá vzájená interakce v p ípad mén hustých dav. Ale v p ípad hustých dav nastává problém s ur ením vhodného sm ru pohybu agenta. T etí p ístup reprezentuje vzájemné p sobení v²ech objekt scény pomocí sil. Tento p ístup byl hodn rozvíjen a vzniknul z n ho model HiDAC (popsán v [14]. Hlavní výhodou tohoto modelu je jeho jednoduchost a p ímo arost. Kaºdý agent m ºe být snadno parametrizován, coº umoº uje rozmanité chování jednotlivých agent. Nevýhodou jsou p edev²ím n které parazitní vlivy z nihº se nejvýrazn ji projevují takzvané vybrace (krátkodobé zm ny pozice jen v okruhu jednoho bodu zpravidla jen v jednoum sm ru tam a zp t). Po zváºení výhod byl pro tuto práci jako výchozí vybrál HiDAC model a to p edev²ím díky jeho p ímo arosti. Tento model je iterativní a tak se simulace zkládá z mnoha krok, které reprezentují krátký asový úsek. Kaºdý krok aktualizuje celou scénu na základ výsledku p edchozího kroku. Mimo samotných agent, jejichº pohyb se snaºíme ur it, simulaci ovliv ují i statické objekty ve scén. Pro zjednodu²ení jsou tyto objekty rozd leny do dvou skupin. První z nich jsou zdi, které jsou

14 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ reprezentovány kvádrem, jehoº hrany jsou rovnob ºné vºdy s n jakou osou. Druhým druhem statických objekt jsou p ekáºky, které jsou aproximovány válcem, jehoº podstava je rovnob ºná s rovinou pohybu agent. Toto zjednodu²ení zna n usnad uje výpo ty a zárove nep iná²í veliké odchylky oproti reálným scénám (ºidle m ºe být aproximována válcem bez v t²í odchylky, p eváºná v t²ina st n v budovách mezi sebou svírá pravý úhel, a tak sta í jen vhodn nato it celou scénu). Stejn jako p ekáºky jsou i agenti aproximováni válcem. Dal²í zjednodu²ení vyplývá z toho, ºe lidé neum jí létat, ale pohybují se vºdy po n jakém podkladu. To nám jejich pohyb zjednodu²uje na 2D problém (p esto v²echny následující rovnice vyuºívají t írozm rných vektor ). Pohyb agent probíhá na rovin dané osami x a z. Samotná simulace v kaºdém simula ním kroku upraví pozici v²ech agent. Zm nu pozice agenta ovliv uje jeho aktivní pohyb a síla, kterou na n j p sobí objekty, ke kterým se moc p iblíºil. Síla reprezentující aktivní pohyb agenta i v kroku n (F to i [n]) závisí na sm ru k cíli, kam chce dojít (F at i ), p i emº se snaºí vyhnout v²em p ekáºkám o (F ob oi), zdem w (F wa wi ) a ostatním agent m j (F oa ji ). Zárove nechce m nit sv j sou asný sm r pohybu (F to i [n 1]). Kaºdou z t chto sil vynásobíme váhou (detailn ji popsány dále), která reprezentuje aktuální d leºitost této síly pro agenta. Nakonec tyto síly se teme dohromady a tak získáme výslednou sílu. F to i [n] = F to i [n 1] + F at i [n]w at i + w F wa wi [n]wi wa + o Podstatný je ale jen sm r síly, a tak ji normalizujeme. f to i = Fto i F to i F ob Následn výslednou pozici p i [n + 1] agenta i vypo ítáme: kde: oi[n]wi ob + j i F oa ji [n]w oa i (3.1) (3.2) p i [n + 1] + p i [n] + α i v i [n]f to i [n] + r i [n] (3.3) v i [n] odpovídá rychlosti agenta. Tato rychlost je pro v²echny agenty nastavena na 0.1. r i je výsledná síla e²ící kolize mezi agentem a objekty v jeho okolí, která je popsána v kapitole 3.3.3.2 α udává, zda se agent v tomto simula ním kroku hýbe, nebo ne. { 0 Pokud je uplatn no pravidlo pro zastavení nebo ekání α = 1 v ostatních p ípadech Pravidlo pro zastavení p edchází vibracím agenta a pravidlo pro ekání umoº uje azení agent do p irozených front. Tato pravidla budou vysv tlena v kapitolách 3.3.3.3 a 3.3.3.4.

3.3. SIMULAƒNÍ APLIKACE 15 Obrázek 3.3: Oblast zájmu ºlutého agenta Jednotlivé váhy ze vzorce 3.1 m ní význam jednotlivých sil na výsledný pohyb agenta. Tímto lze snadno dosáhnout rozdílnosti chování. Tohoto je vyuºito pro nastavení dvou vzor chování. Jeden reprezentuje normální chování a druhý panika ení. Toho je dosaºeno tak, ºe pro panika ícího agenta je w at nastaveno výrazn v t²í. Také je sníºena váha pro sílu pro p edcházení kolizí s ostatními agenty w oa. To zp sobí ºe panika ící agenti do sebe více strkají a snaºí se dostat nejp ím j²í cestou k cíli. 3.3.3.1 Síla p edcházení kolizí P i cest k cíli pohybu se musí agent vyhýbat pevným i pohyblivým objekt m. Ze v²ech dal²ích objekt ve scén se musí agent vyhnout jen t m, které má p ed sebou, a tudíº mu brání v cest. Pro zji²t ní, zda je p ekáºka relevantní, nebo ne, slouºí obdelník zájmu agenta ( árkovaný obdelník na obrázku 3.3. Pro v²echny zdi, p ekáºky a ostatní agenty zjistíme, zda leºí v oblasti zájmu daného agenta. V p ípad, ºe leºí, tak na základ vektoru mezi agentem a tímto objektem a sm ru, kterým se agent pohybuje, zjistíme sílu pro p edcházení kolizí (avoid force). Zde rozli²ujeme, jestli se jedná o pevný objekt (ze nebo p ekáºka) nebo pohyblivý (jiný agent). Pro nepohyblivé objekty je výsledná síla závislá jen na vý²e zmín ných parametrech. Vzorec 3.4 popisuje získání vektoru síly pro p edejití kolize mezi agentem a p ekáºkou. V p ípad zdí je vzorec obdobný (3.5). Význam jednotlivých prom nných je patrný z obrázku 3.3. Pokud ze nebo p ekáºka neleºí v oblasti zájmu agenta, jsou tyto síly nulové. F ob oi = d oi v i d oi d oi v i d oi (3.4)

16 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ Obrázek 3.4: Výpo et sil pro vyhnutí agent F wa wi = n wi v i n wi n wi v i n wi (3.5) Výpo et síly pro p edcházení kolizí s pohyblivými objekty (ostatní agenti) mimo vzájemné polohy závisí i na sm ru, kterým se pohybují. Navíc oproti statickým p ekáºkám zde hraje roli i vzdálenost, kterou u statických objekt nemusíme brát v úvahu, protoºe se nikam nep esunou a budou p ekáºet po- ád. V p ípad, ºe se agent ocitne v oblasti zájmu jiného agenta, je vypo ítán sm r te né síly (3.6) a poté se upraví jeho velikost podle vzdálenosti a orientace pohybu agent. Podle úhlu mezi sm rem pohybu agent ur íme, zda jdou ve shodném sm ru, nebo proti sob. Tento úhel je také pouºit pro simulaci lidského rozhodování, jak se vyhnout ostatním lidem. Toto spo ívá v tom, ºe kdyº jdou dva lidé proti sob, tak v t²ina má tendenci uhýbat doprava (ze svého pohledu). Proto v p ípad, ºe jsou vektory pohybu agent tém rovnob ºné, nastavíme te ný vektor tak, aby sm oval doprava. Na obrázku 3.4 je situace, kdy agent i detekoval ve své oblasti zájmu agenta j a k. Následn se spo ítají vektory vzdálenosti pro kaºdého z nich (d ji a d ki ). Agent j je vzdálen j²í neº agent k, ale na rozdíl od n j sm uje sm rem k agentovi i. Proto mu bude p i azena vy²²í priorita, a tak bude mít na výsledný sm r pohybu agenta i v t²í vliv. Sm r te né síly vypo ítáme dle následujícího vzorce: t ji = d ji v i d ji d ji v i d ji (3.6) Význam jednotlivých prom nných je patrný z obrázku 3.4. Abychom z tohoto dostali sílu, která ovliv uje pohyb agenta, musíme ji je²t vynásobit dv ma skalárními váhami F oa ji = t ji wjiw d ji o (3.7) kde wji d je váha pro vzdálenost agent. Její hodnota roste se sniºující se vzdáleností agent, protoºe ím jsou agenti k sob blíºe, tím je pot eba v t²í zm na trajektorie, aby se minuli. Tato váha se spo ítá podle vzorce: wji d = ( (d ji D i ) ) 2 (3.8) 8

3.3. SIMULAƒNÍ APLIKACE 17 Váha w o ji reprezentuje význam vzájemné orientace sm ru pohybu agent. Slouºí k rozli²ení, zda sm ují ve stejném sm ru, nebo proti sob. w o ji = { 1.2 kdyº vi v j > 0 1.4 v ostatních p ípadech (3.9) Parametr D i reprezentuje maximální vzdálenost mezi agenty, p i které m ºe jeden být v oblasti zájmu toho druhého. Tato hodnota je p ímo závislá na velikosti oblasti zájmu a polom ru agenta. Polom r agenta a ²í ka s y i oblasti zájmu (krat²í rozm r, kolmý na sm r pohybu) byly zvoleny jako 2+ε i. Délka oblasti zájmu s x i je 6. P esný výpo et by byl D i = s y2 i + s x i 2 + s y i, ale zde není pot eba, aby byl spo ítán úpln p esn, a sta í nám zhruba p ibliºná hodnota, tak je po ítáno takto D i = s y i + s x i + 0.3. ε i je malá konstanta, která je pro kaºdého agenta jiná, ímº je zaji²t na r znorodost a díky emuº nedochází k situacím, kdy by se agenti zasekli na jednom míst z d vodu rovnováhy sil. 3.3.3.2 Síla pro e²ení kolizí Síla e²ící kolize (repulsion force) p ijde ke slovu v p ípad, kdyº se agent dostane do blízkosti jiného objektu natolik, ºe dojde k jejich p ekrytí. Tuto sílu r i z rovnice 3.3 spo ítáme podle vzorce: r i [n] = w F R_wa wi [n] + o F R_ob oi [n] + F R_oa ji (3.10) j i kde F R_wa wi [n] je odpudivá síla od zdi w, F R_ob oi [n] je odpudivá síla od p ekáºky o a F R_oa ji [n] je odpudivá síla od jiného agenta j. Tyto síly spo ítáme takto: F R_wa wi [n] = n wi (s y i d wi [n]) (3.11) F R_ob oi [n] = (p i[n] p o )(s y i + r o d oi [n]) d oi [n] (3.12) F R_oa ji [n] = (p i[n] p j [n])(s y i + r j d ji [n]) (3.13) d ji kde p i je pozice agenta i, p j je pozice agenta j, p o je pozice p ekáºky o. n wi je jednotkový kolmý vektor od zdi k agentovi i a d wi je vzdálenost st edu agenta i od zdi w. s y i je polom r agenta i, r o polom r p ekáºky o, r j je základní polom r agenta j (r j = 2 + ε min = 1.95). d oi je vzdálenost st edu p ekáºky o od st edu agenta i. d ji je vzdálenost st ed agent j a i. 3.3.3.3 e²ení vibrací V pr b hu simulací, kdy se snaºí jedním úzkým místem projít v t²í mnoºství agent, se asto stává, ºe n kte í agenti vibrují mezi dv ma pozicemi.

18 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ To je z d vodu, ºe i po uplatn ní v²ech sil pro p edcházení kolizím dojde k posunu sm rem k n jakému agentovi a následn je zase odsunut zpátky. Toto chování je nep irozené, a tak je nutné jej eliminovat. K tomuto slouºí pravidlo pro zastavení agenta (stopping rules). V p ípad, ºe opakovan (víc neº 3x) je sm r sou tu v²ech odpudivých sil mezi agenty opa ný v i sm ru pohybu agenta a sou asn agent nepanika í, tak se toto pravidlo aktivuje. kdyº ((v i F R_oa i aktivuj pravidlo zastavení ) < 0.26) ( F R_oa > 0.4 ) ( panic) then Po aplikování pravidla zastavení je nastavena α z rovnice 3.3 na 0, coº znamená, ºe pozice agenta bude m n na jen na základ výsledné síly pro e²ení kolizí. Toto pravidlo se vºdy aplikuje na 3 aº 7 následujících simula ních krok. Pouºití tohoto pravidla je pro n které druhy simulací nevhodné (p edev²ím pro ídké davy ve scén, kde není ºádné úzké místo, kterým by se najednou snaºilo projít více agent ), a proto lze jeho uplatn ní zakázat (viz 4.1). i 3.3.3.4 azení do p irozených front V b ºné (nepanika ící) situaci lidé respektují po adí a ekají, neº odejde lov k p ed nimi. Tím vznikají p irozené fronty. Pro dosaºení podobného efektu je vyuºito pravidlo pro ekání. Toto pravidlo je podobné pravidlu pro zastavení. Kaºdý agent má p ed sebou detek ní oblast pro ekání (te kovaná kruºnice na obrázku 3.5 ). Pokud je n jaký jiný agent jdoucí stejným sm rem v této detek ní oblasti, aktivuje se pravidlo pro ekání. P i tom se spustí asova nastavený na n jakou náhodnou hodnotu (5 aº 44 simula ních krok ). Toto pravidlo p estane platit, kdyº uº v detek ní oblasti není ºádný agent jdoucí stejným sm rem, nebo kdyº íta dosáhne 0. Tento íta slouºí pouze k zamezení uváznutí simulace v mrtvém bod. kdyº ( agent j je v detek ní zón agenta i) ((v i v j ) > 0.996) ( panic) then aktivuj pravidlo ekání Stejn jako u pravidla zastavení je po aktivování pravidla ekání nastavena α z rovnice 3.3 na 0. 3.3.3.5 Roz²í ení o události Dosud popsaný model p edpokládal pr b h simulace, kterou v jejím pr - b hu jiº neovliv ují ºádné dal²í vlivy. Tato práce má v²ak za cíl vytvo it model podporující jednoduché události ovliv ující chování agent. R zných myslitelných událostí je nep eberné mnoºství, ale v t²ina z nich se dá zjednodu²it pomocí událostí dvou druh. První z nich je negativní, která na agenty p sobí odpodiv a druhá je pozitivní, která agenty p itahuje. Pomocí

3.3. SIMULAƒNÍ APLIKACE 19 Obrázek 3.5: Detek ní oblast pro pravidlo ekání t chto dvou princip lze denovat velké mnoºství událostí a v p ípad jejich kombinování p ibudou je²t dal²í (nap íklad rozbití výlohy obchodu lze simulovat sloºením krátké negativní události ihned následované dlouhotrvající pozitivní). Oba druhy událostí mají n které spole né atributy. T mito atributy jsou místo, kde k dané události do²lo a následn rádius který ovliv uje. Samoz ejm je denuje i as jejich za átku a p ípadn i konce. Negativní událost je pro realizaci jednoduºsí. Kdyº se po dobu trvání takové události agent ocitne v oblasi p sobení této události, tak se mu nejprve za ne m it krátký asový úsek reprezentující reak ní dobu agenta. Pokud se i po jeho uplynutí agent stále nachází v oblasti p sobení události, tak se mu zm ní vzor chování na paniku a do asn zm ní sm r, kterým se hodlá pohybovat sm rem od místa této události. P esn to popisune následující vzorec kde: F at i F at i = p i p e p i p e (3.14) je výsledná síla ur ující sm r, kterým se chce agent v tomto simula ním kroku pohybovat p i je aktuální poloha agenta p e je st edová pozice místa negativní události Doba na kterou bude mít agent zm n ný vzor chování a sm r, kterým se snaºí pohybovat je nahodn ur ena z asového intervalu, který je atributem této události. Pozitivní událost na agenty p sobí tak, ºe je p im je dojít se podívat k místu události, zde n jakou dobu stát a pozorovat a násldn pokra ovat za p vodním cílem své cesty. Stejn jako negativní událost ovliv uje pouze agenty ve své oblasti p sobnosti. Pro kaºdého takového agenta se nejprve ur í zda na n j bude tato událost p sobit nebo jestli ji bude trvale ignorovat. Pravd podobnost tohoto je ur ena na základ parametr události a vlastností

20 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ agenta. kde: kdyº (Rand(0..100) p ignore i ignoruj událost e Rand(0..100) je náhodné íslo od 0 do 100 p ignore i p ignore e je citlivost agenta na události ) < p ignore e then je základní proavd podobnost, ºe bude tato událost ignorována Pokud agent tuto událost ignoruje, tak se chová jako by ve scén v bec nebyla. V opa ném p ípad se agent ozna í, ºe je pod vlivem události a upraví se jeho sm r zamý²leného pohybu sm rem k události podle následujícího vzorce. kde: F at i F at i = p e p i p e p i (3.15) je výsledná síla ur ující sm r, kterým se chce agent v tomto simula ním kroku pohybovat p i je aktuální poloha agenta p e je st edová pozice místa negativní události V p ípad, ºe se takovýto agent dostane do p ímé blízkosti místa události (tato vzdálenost je atributem události), tak se mu na dobu v rozmezí intervalu ur eném v denici události aktivuje pravidlo zastavení a ozna í se jako ekající na tuto udáslos. Po vypr²ení tohoto asu se p sobící událost p idá mezi ignorované, aby ho uº nemohla znovu ovlivnit, agent se ozna í, ºe není pod vlivem a ºe ne eká na ºádnou událost a obnoví se mu jeho p vodní cíl cesty. Kdyº se jeden agent sm ující k události p iblíºí k druhému agentu, který je ozna en jako ekající na tuto událost, tak je první také ozna en jako ekající na tuto událost a za ne se mu m it as. Pokud tento as p ekro í limit po který je agent ochotný ekat v davu (vlastnost agenta z denice) neº se dostane k místu p sobení události, tak se tato událost p idá pro daného agenta mezi ignorované, agent se ozna í, ºe není pod vlivem ani ºe ne eká na ºádnou událost a obnoví se mu jeho p vodní cíl cesty. 3.4 Vizualiza ní aplikace 3.4.1 Pouºité technologie Ze t í základních sm r, jak dále pokra ovat, byla hned z po átku zavrºena moºnost vytvo it celou aplikaci od základu jen na základních gra- ckých knihovnách, jako jsou DirectX nebo OpenGL. Toto e²ení by m lo

3.4. VIZUALIZAƒNÍ APLIKACE 21 výhodu v naprosté kontrole nad chováním aplikace a moºností ji pln ovliv- ovat. Také by se samotnou aplikací bylo ²í eno jen nezbytné minimum, coº by m lo kladný vliv na mnoºství místa zabíraného na disku. Také by bylo moºné dosáhnout v t²í efektivity, protoºe by program byl p esn na míru pot ebám a neztrácel by se výkon na obecných voláních funkcí, které jsou ve výsledku nepot ebné. Nevýhodou by byla pracnost. Navíc by byla tvo ena spousta funkcionality, která uº v n jaké podob existuje a je dostupná voln k uºití. Tato negativa byla rozhodující, pro se touto cestou nevydat. Nehled na to, ºe n která pozitiva jsou jen teoretická, protoºe se dá o ekávat, ºe jiº existující e²ení, které je pouºíváno uº n kolik let a stále se vyvíjí, bude dob e optimalizované. Druhou variantou bylo vyuºít n jaký z program ur ených primárn pro modelování. V tomto sm ru byl zkoumán hlavn Blender a p edev²ím ást Blender game. Vyuºití tohoto konceptu by umoº ovalo vytvo ení prost edí pro simulaci p ímo v tomto editoru a jen jej exportovat v podob kongura ního souboru pro simula ní aplikaci. Výhodou by byla veliká variabilita scén a moºnost snadno ovlivnit výsledný gracký dojem. Aby vytvo ení scény nebylo moc komplikované, bylo by pot eba vytvo it základní stavební kameny (unikovaná ze, p ekáºka, agent), které by se jen poskládaly do výsledné scény. Ale stále by z stala moºnost tyto kameny nevyuºít a místo toho si vytvo it vlastní. Z nich by byly samoz ejm kladeny nejv t²í nároky na agenty, protoºe ti musejí být animovaní, takºe by museli vºdy obsahovat p edem danou kostru, na kterou by se animace uplat ovala. Nevýhodou tohoto sm ru je, ºe nau it se ovládat takovýto editor a dále pracovat se scénou pomocí skriptovacího api není nic lehkého i p es zna né mnoºství návod. Toto by bylo asov p íli² náro né, a tak i p es mnoho výhod tohoto konceptu od n j bylo upu²t no. Poslední variantou bylo pouºití n kterého z voln dostupných 3D engin. Základním poºadavkem bylo, aby umoº oval snadné nahrávání model, p ehrávání skeletálních animací a moºnost jejich ovliv ování. Prvním ze zkoumaných bylo OGRE. Jedná se o komplexní 3D engine s orientací na scénu. Poskytuje nadstavbu nad základním 3D api. Podporuje DirectX i OpenGL. Bez problém spl uje ve²keré poºadavky, které jsou na n j v rámci této práce kladeny. Hlavní výhodou je velké mnoºství tutoriál, které snadno seznámí s pouºitím tohoto enginu. Základní api pro ovládání je velice jednoduché, ale podporuje i pokro ilej²í funkce. Také je zde p ítomno mnoºství demo aplikací, které ukazují, co lze vytvo it a jsou sou ástí základního balíku ve form zdrojových kód. Pro pouºití model pouºívá vlastní formát, ale existují pluginy do v t²iny b ºných modelovacích nástroj na export do tohoto formátu. Dal²í výhodou je multiplatformnost. OGRE je ²í eno jako open source pod MIT (p esn ji X11) licencí. Z dal²ích engin byl zkoumán Havok. Tento engine je ve vlastnictví Intelu a je také aktivn vyvíjen. Stejn jako pro OGRE i pro Havok existuje spousta demo aplikací a návod. Na rozdíl od OGRE není ²í en jako open source a v n kterých p ípadech je jeho vyuºití limitováno. Také podporuje

22 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ jen Windows platformu. I kdyº tyto nevýhody nejsou pro tuto práci nijak zvlá² limitující, tak oproti OGRE nep iná²í ºádné podstatné výhody. Na základ tohoto se ukázalo OGRE jako nevhodn j²í volba. 3.4.2 Návrh aplikace Tato aplikace je co do návrhu vnit ní struktury zna n jednodu²²í neº simula ní aplikace. To vyplývá z toho, ºe jejím cílem je jen p evést záznam v jazyce pro popis pohybu agent ve scén a zobrazit výslednou animaci. K tomu v²emu bude vyuºívat jiº existující moºnosti OGRE. Funkcionalitu aplikace tak lze rozd lit do dvou vrstev. První z nich je p e tení jazyka a jeho zpracování do podoby pot ebné pro kontrolu pr b hu výsledného zobrazení. Druhou je zobrazovací ást, která bude na základ na tených dat aktualizovat práv zobrazenou scénu v závislosti na ase.

Kapitola 4 Realizace Jak bylo zmín no jiº v návrhu, skládá se celá práce ze ty blok (znázorn no na obrázku 3.1). Kaºdý z t chto blok je samostatným prvkem. Tyto prvky na sebe navazují, a tak se vzájemn ovliv ují. Nejprve bude popsána struktura kongura ního souboru, který je na za átku tohoto et zce. Poté bude popsáno fungování simula ní aplikace a zp sob zaznamenání pohybu agent. Na to následuje popis jazyka pro záznam pohybu agent. Nakonec bude popsána vizualiza ní aplikace. 4.1 Kongura ní soubor Kongura ní soubor slouºí pouze k po áte nímu nastavení scény a vlastností agent. Jak bylo zmín no v návrhu, tak jde o XML soubor. Také v²e co obsahuje vychází z p ímo z poºadavk navrºeného modelu. Ve²keré denice jsou rozd leny do skupin dle druhu denice. První skupinou jsou globální nastavení simulace. Zde je moºnost nastavit po áte ní hodnotu generátoru pseudonáhodných ísel (element randomset obsahující tuto hodnotu). To je z d vodu, ºe simulace by m la být opakovatelná. Tento element je nepovinný. V p ípad, ºe nebude p ítomen, je po áte ní hodnota generátoru náhodných ísel nastavena na p edem neodhadnutelnou hodnotu (a dal²í b h dle shodného kongura ního souboru m ºe probíhat odli²n ). Dal²í globální vlastností simulace je povolení aplikování pravidla pro zastavení. K tomu slouºí element stoprule, jenº o ekává 0 pro zakázání, 1 pro povolení. Tento element je také nepovinný a v p ípad jeho absence je pravidlo pro zastavení povoleno. Druhou skupinou je po áte ní nastavení statických prvk scény. Nejprve jsou popsány zdi. Jelikoº ve scén nemusí být ºádná ze, je celá tato skupina nepovinná. Na ukázce 4.1 je vzorové denování jedné zdi. Element walls je souhrnný element pro tuto skupinu. Jeho obsahem musí být jeden nebo 23

24 KAPITOLA 4. REALIZACE více element wall, které denují jednotlivé zdi. Samotná ze je denována pomocí sou adnic dvou bod v prostoru (vrcholy na t lesové úhlop í ce). Pro zápis jejich sou adnic slouºí elementy x1, y1, z1, x2, y2, z2. Pro simulaci jsou podstatné jen hodnoty sou adnic x a z. Sou adnice v ose y ur ují vý²ku zdi a projeví se pouze ve výsledné vizualizaci. <walls > <wall> <x1> 30</x1> <y1>0</y1> <z1> 31</z1> <x2>30</x2> <y2>5</y2> <z2> 30</z2> </wall> <walls > ukázka 4.1: denice zdí Dále jsou zde nastaveny parametry p ekáºek. P ekáºky stejn jako zdi nemusí ve scén být, a tak je i tato skupina nepovinná. P íklad denování p ekáºky je na ukázce 4.2. obstacles je souhrnným elementem pro v²echny p ekáºky. Samotnou p ekáºku reprezentuje element obstacle. Kaºdá p ekáºka je denována pozicí st edu (elementy x a z) a polom rem (element r). Pozice v ose y není pot eba, protoºe simulace probíhá na rovin dané osami x a z a tudíº vý²ka p ekáºky není podstatná. <obstacles > <obstacle > <x>4</x> <z>9</z> <r>3</r> </obstacle > </obstacles > ukázka 4.2: denice p ekáºek T etí skupinou kongura ních dat je denice agent. Ta jako jediná musí být vºdy p ítomna. To je z d vodu, ºe pokud by ve scén nebyl ºádný agent, nebylo by co simulovat. Na ukázce 4.3 je zobrazeno, jak by vypadala denice s jedním agentem. Element agent zaznamenává v²echny kongura ní údaje o agentovi. Jeho poloha je ur ena elementem pos a po áte ní nato ení elementem ori. Oba tyto elementy obsahují (povinn ) elementy x a z, jejichº

4.1. KONFIGURAƒNÍ SOUBOR 25 hodnota reprezentuje pozici / orientaci. Tyto elementy jsou povinné. Velikost agenta lze ovlivnit pouºitím nepovinného elementu Dsize. Obsah tohoto elementu odpovídá hodnot ε. Pokud tento element není pouºit, je tato hodnota nastavená náhodn v intervalu ±0.05. Proto je doporu eno hodnotu tohoto elementu nastavovat také v tomto intervalu. Dále je moºné nastavit po áte ní druh chování agenta. K tomu slouºí element behavior. Jeho hodnoty mohou být GO nebo PANIC. Dal²í vlastností agenta je koecient, kterým je násobena ²ance, ºe ignoruje pozitivní událost. Tento koecient je obsahem nepovinného elementu ignorekoeficient. Pokud není denován je tento koecient nastaven náhodn v rozmezí od 0.9 do 1.1. Poslední element targets je povinný a obsahuje seznam bod, kterými má agent projít (cíle pohybu). Kaºdý bod je dán elementem target, který obsahuje sou adnice tohoto bodu (elementy x a z) a druhou mocninu vzdálenosti, na kterou se tento bod povaºuje za dosaºený (element dist2topass). Tento element je nepovinný a v p ípad jeho absence je tato hodnota nastavena na 0.8. Jednotlivé cíle pohybu bude agent dosahovat v po adí, jak jsou zde uvedeny. <agents> <agent> <pos> </pos> <ori > <x>0</x> <z>30</z> <x>0</x> <z> 1</z> </ori > <Dsize >0.02</ Dsize> <behavior>go</behavior> <targets > <target > <x>0</x> <z> 60</z> <dist2topass >0.8</ dist2topass> </target > </targets > </agent> </agents> ukázka 4.3: denice agent Poslední skupinou pro konguraci je popis událostí. Ty jsou popsány v elementu events a jelikoº ve scén nemusí být ºádný denován je tento element nepovinný. Jednotlivé události jsou denovány pomocí elementu eventgroup,

26 KAPITOLA 4. REALIZACE který obsahuje jednu nebo více díl ích událostí. Pro v²echny tyto díl í události jsou nejprve denovány jejich spole né atributy, kterými jsou pozice (element pos obsahující elementy x a z), oblast p sobení denovaná polom rem (element seedist) a plocha, kterou tato událost p ímo zabírá (element size). V²echny tyto elementy jsou povinné. Samotné díl í události jsou de- nované elementem event (m ºe být jednou nebo vícekrát), který obsahuje samostatné nastavení pro tyto díl í události. T mi jsou druh události (element type - 0 pro negativní, 1 pro pozitivní), doba za átku p sobení události (element start), doba trvání události (element duration), asový interval po jakou bude ovliv ovat daného agenta (elementy mininteresttime a maxinteresttime). Význam tohoto intervalu je pro oba druhy událostí odli²ný a je popsán v návrhu 3.3.3.5. Pro pozitivní událost je zde pot eba je²t denovat vzdálenost ve které se agenti zastaví (denováno elementem lookdist) a základní ²anci, ºe tato událost bude ignorována (element ignorechance - ur uje ²anci v procentech). Na ukázce 4.4 je vid t vzorová denice sloºené události. <events > <eventgroup> <pos> <x>20</x> <z>1</z> </pos> <seedist >60</seeDist > <size >3.5</ size > <event> <type >0</type> <start >9</start > <duration >1.5</ duration > <mininteresttime >1.866</ mininteresttime> <maxinteresttime >3</maxInterestTime> </event> <event> <type >1</type> <start >10.5</ start > <duration >100</duration > <lookdist >6</lookDist > <ignorechance >15</ignoreChance> <mininteresttime >6</minInterestTime> <maxinteresttime >10</maxInterestTime> </event> </eventgroup> </events > ukázka 4.4: denice událostí

4.2. SIMULAƒNÍ APLIKACE 27 Kompletní seznam v²ech element a jejich popis shrnuje tabulka v p íloze B.1. 4.2 Simula ní aplikace Simula ní aplikace nejprve na te vý²e zmín ný kongura ní soubor a podle n ho vytvo í prost edí simulace. Samotná simulace probíhá p esn podle modelu popsaného v návrhu. Tato simulace probíhá cyklicky dokud není simulace ukon ena uºivatelem. Pr b h jednoho kroku simulace je vid t na ukázce 4.5 obsahující pseudokód tohoto kroku. Po ukon ení simulace je záznam pohybu a stejn tak i popis scény uloºen. Z d vodu naprosté opakovatelnosti simulace a také pro udrºení shodné kvality bez závislosti na dostupném výpo etním výkonu simulace p edpokládá b h t iceti simula ních krok na jednu vte inu reálného asu. Pro vsechny agenty ( a ) { zpracujudalostiovlivnujici ( a ) ; vypoctisilyvucizdemvokoli ( a ) ; vypoctisilyvuciprekazkamvokoli ( a ) ; vypoctisilyvuciagentuvokoli ( a ) ; uplatnipravidlazastaveniacekanipro ( a ) ; upravvysledoupolohu ( a ) ; aktualizujzaznampohybu ( a ) ; } ukázka 4.5: simula ní krok Ze v²ech ástí pr b hu simulace jediný záznam nevychází p ímo z modelu. P i n m je pot eba e²it n kolik díl ích problém. Prvním z nich je samotné rozd lení pohybu na jednotlivé p ímo aré ásti, které se budou zaznamenávat. Dále je pot eba je²t ur it orientaci agenta pro kaºdou ást pohybu. Nakonec je je²t pot eba provést ltrování p íli² asté zm ny sm ru pohybu, coº je zp sobeno parazitními "vibracemi". Jelikoº je celý proces simulace iterativní, tak i záznam pohybu agent funguje iterativn. Samotné zaznamenávání probíhá pomocí fronty, do které se zaznamenávají kompletní ásti p ímo arého pohybu. K zaznamenání jedné ásti slouºí struktura obsahující po áte ní a koncový as, po áte ní a koncovou pozici a sm r pohybu. V kaºdém kroku se zjistí úhel, který svírá vektor zm ny polohy od posledního kroku s vektorem orientace aktuáln zaznamenávaného pohybu. Pokud je odchylka men²í neº 10, povaºuje se pohyb za p ímo arý a jen se aktualizuje koncový as a pozice aktuálního pohybu (ale neaktualizuje se sm r). V opa ném p ípad je aktuální pohyb povaºován

28 KAPITOLA 4. REALIZACE Obrázek 4.1: P evod pozic na p ímo arý pohyb a orientaci za ukon ený. Následn je jako aktuální pohyb vytvo en pohyb nový, který má po áte ní pozici a as shodnou s koncovou pozicí a asem ukon eného pohybu. Kone ná pozice a as je nastavena sou asnými hodnotami a sm r pohybu odpovídá zm n pozice za poslední simula ní krok. V p ípad, ºe aktuáln ukon ený pohyb trval pouze jeden simula ní krok se je²t zkontroluje odchylka sm ru minulého a nov vytvá eného pohybu. Pokud je tato odchylka men²í neº 10, nastaví se orientace uzavíraného pohybu stejn jako je orientace minulého pohybu (názorn patrné z obrázku 4.1, kde jsou v horní ásti jednotlivé pozice a ve spodní jejich p evedení na pohyb a ²ipkou znázorn na orientace). Toto vede k zna né redukci p íli²ného otá ení agent v pr b hu pohybu. Následn je práv uzav ený pohyb vloºen do fronty. Celý tento proces je patrný z pseudokódu ukázky 4.6