Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
Virtuální prohlídka budovy v jazyce VRML Bakalářská práce
Vedoucí práce: Ing. Mgr. Jana Andrýsková, Ph.D.
Brno 2009
Lenka Janigová
Děkuji Ing. Mgr. Janě Andrýskové, Ph.D. za cenné rady a připomínky při zpracování této práce. Dále bych ráda poděkovala panu RNDr. Ing. Milanu Šormovi, Ph.D. za upravení zobrazovací aplikace rozvrhů v UIS.
Prohlašuji, že jsem tuto bakalářskou práci vytvořila samostatně podle pokynů vedoucího bakalářské práce s využitím odborné a jiné literatury uvedené v seznamu.
V Brně dne 24. května 2009
....................................................
4
Abstract Janigová, L. The virtual view of building in VRML language. Bachelor’s final project. Brno, 2009. Bachelor’s final project treats of a method to creation three-dimensional virtual scenes in the language of VRML. In theoretically part is described language of VRML, development tools and appllication to viewing virtual worlds. Practically part documenting procedure of creation the virtual world containing building of Faculty of Business and Economics Mendel University of Agriculture and Forestry in Brno.
Abstrakt Janigová, L. Virtuální prohlídka budovy v jazyce VRML. Bakalářská práce. Brno, 2009 Bakalářská práce pojednává o způsobu tvorby trojrozměrných virtuálních scén v jazyce VRML. V teoretické části je popsán jazyk VRML, vývojové nástroje a aplikace sloužící k prohlížení virtuálních světů. Praktická část dokumentuje postup vytváření virtuálního světa obsahujícího budovu Provozně ekonomické fakulty Mendelovy zemědělské a lesnické univerzity v Brně.
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod do problematiky . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Teoretická část 2.1 Druhy aplikací virtuální reality . 2.2 Úvod do jazyka VRML . . . . . . 2.3 Popis VRML scény . . . . . . . . 2.3.1 Statické uzly . . . . . . . . 2.3.2 Dynamické uzly . . . . . . 2.3.3 Datové typy . . . . . . . . 2.3.4 Prototypy . . . . . . . . . 2.3.5 Routing . . . . . . . . . . 2.4 Softwarové prostředky . . . . . . 2.4.1 Vývojová prostředí . . . . 2.4.2 Prohlížeče VRML souborů
. . . . . . . . . . .
. . . . . . . . . . .
3 Praktická část 3.1 Modelování prostorů budovy Q . . . 3.2 Nastavení vlastností objektů a scény 3.2.1 Práce s barvami ve scéně . . . 3.2.2 Texturování objektů . . . . . 3.2.3 Osvětlování scény . . . . . . . 3.3 Tvorba dynamického světa . . . . . . 3.3.1 Otevírání dveří . . . . . . . . 3.3.2 Tvorba virtuálního průvodce . 3.3.3 Zobrazení rozvrhů . . . . . . . 3.3.4 Optimalizace modelu . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
6 6 6
. . . . . . . . . . .
8 8 10 11 12 16 17 18 18 18 18 19
. . . . . . . . . .
21 21 24 24 25 26 26 26 28 30 32
4 Diskuze a závěr
33
5 Literatura
34
Přílohy
35
A Vývojová prostředí
36
B Budova Q
38
1
ÚVOD A CÍL PRÁCE
1 1.1
6
Úvod a cíl práce Úvod do problematiky
Jak již název této práce prozrazuje, je tato práce spjata s virtuálním světem a virtuální realitou (VR). Pojem virtuální realita dnes již však nepatří jen do vědeckofantastických filmů. Před několika lety bylo nutné pro návštěvu virtuální reality vlastnit speciální příslušenství jako jsou helmy se zabudovanými displeji, hmatová zařízení, snímače polohy v prostoru, 3D navigační pomůcky či speciální obleky pro snímání polohy těla. Vývoj však postoupil, a tak v dnešní době může běžný uživatel navštívit virtuální svět prostřednictvím obrazovky svého počítače a pohybovat se v tomto světě jen pomocí klávesnice a myši. Přesto však použití speciálních zařízení přinese každému jejich uživateli nevšední zážitky. Žára (Žára, 2000) popisuje virtuální světy (scény, prostředí) jako aplikace, které se vyznačují následujícími rysy: • veškeré děje se provádějí v reálném čase, tedy pokud možno s okamžitou odezvou na vstupní aktivitu uživatele, • umělý svět a objekty v něm mají trojrozměrný charakter nebo alespoň vytvářejí jeho iluzi, • uživatel neprohlíží virtuální svět pouze zvenčí, ale vstupuje do něj a pohybuje se v něm po rozličných drahách (chodí, létá, skáče a mžikem se přesouvá, nebo-li se teleportuje), • svět není statický, uživatel může s jeho částmi manipulovat, virtuální tělesa často působí jako samostatné bytosti – pohybují se po animačních křivkách, komunikují s uživatelem i působí na sebe navzájem. Největší důraz je kladen zejména na první z těchto charakteristik. Zobrazení umělého (virtuálního) světa v reálném čase je natolik klíčové, že je mu podřizována často i kvalita zobrazení. Tuto vlastnost lze přirovnat k televiznímu vysílání – lidé raději přijmou horší kvalitu obrazu než-li trhavý a přerušovaný děj.
1.2
Cíl práce
Cílem této práce je vytvořit virtuální svět obsahující budovu Provozně ekonomické fakulty Mendelovy zemědělské a lesnické univerzity v Brně, která je umístěna v univerzitním kampusu v Brně – Černých Polích. Tento virtuální svět by měl být přístupný zejména prostřednictvím Internetu, zájemci by však měli mít možnost spustit tento model také z lokálního počítače. V praktické části práce bude třeba realizovat zejména VRML model budovy Q, složený ze stavební části budovy (místnosti, chodby, schodiště) bez detailního vnitřního vybavení. Celá budova je velmi rozsáhlá, a proto i její model bude obsahovat značný počet kanceláří, učeben, poslucháren a dalších místností. V rámci praktické části proto musí být vyhledány podobné celky v rámci budovy, aby bylo možné takto rozsáhlý a časově náročný model budovy realizovat.
1.2
Cíl práce
7
Vzniklá virtuální scéna umožní uživateli prohlédnout si prostory fakulty z libovolného místa na světě. Uživatel tak může procházet budovou stejně, jako by v ní byl ve skutečnosti – vzhledem k plánovaným interaktivním částem budovy může otevírat dveře do všech místností, prohlížet aktuální rozvrhy učeben apod. Teoretická část práce pak rozebere zvolené nástroje a jazyk VRML, který bude pro realizaci virtuálního světa použit. Textová praktická část dále vysvětlí použití těchto nástrojů na jednotlivých částech modelu, a bude dokumentovat postup práce při tvorbě virtuální scény, což může být později výhodně využito dalšími studenty. V rámci řešení práce bude nutné: • seznámit se s jazykem VRML, jeho syntaxí a sémantikou, • zvolit vhodný nástroj pro modelování virtuálního světa, • získat potřebné podkladové údaje o modelované budově; zejména rozměry zdí, oken, dveří, schodů, jejich poziční umístění v prostoru, barvy a textury jednotlivých povrchů aj., • vytvořit nejen statický model budovy, ale také doplnit vytvořený model pomocí vhodných interakcí tak, aby byl umocněn vzniklý dojem pohybu ve virtuálním světě a současně model poskytoval aktuální informace (např. rozvrhy učeben).
2
TEORETICKÁ ČÁST
2 2.1
8
Teoretická část Druhy aplikací virtuální reality
Pro vysvětlení současných možností v oblasti virtuální reality si nejprve představíme několik druhů aplikací pracující s VR, budeme vycházet z rozdělení a charakteristik podle Žáry (Žára a kol., 2005). Pohlcující virtuální realita (immersive VR) Je vždy spjata se speciálními technickými zařízeními, která mají v co největší míře oprostit (odříznout) uživatele od vjemů skutečného světa a dodat mu zdání, že je zcela ponořen do světa virtuálního. Mezi typická periferní zařízení patří helma se stereoskopickými brýlemi a sluchátky, snímače detekující prostorovou polohu uživatele nebo datová rukavice nahrazující jednodušší vstupní zařízení. Často je uživatel umístěn v simulátoru – kabině, která se naklání a vyvolává pocit pádu či odstředivé síly. Mezi zajímavé technické součásti patří dotyková (tactile, force feedback) zařízení, která jsou schopna měnit odpor či tlak vyvíjený proti ruce uživatele, který tak fyzicky pociťuje mechanické vlastnosti virtuálního materiálu. Pohlcující VR nachází uplatnění nejen v herních centrech a rozličných trenažérech, ale i jako prostředek terapeutický. Známé je například úspěšné léčení různých fobií – z výšek, volného prostoru, uzavřeného prostoru nebo také z pavouků. Rozšiřující virtuální realita (augmented VR) Informace ze skutečného okolního světa jsou kombinovány s doplněnými prvky virtuální reality. Součástí systému bývá kamera, jejíž pozice a orientace je synchronizována s pohybem uživatele. Uživatelovy aktivity jsou snímány různými senzory. Příkladem je použití ve vojenských letadlech a vozidlech, kde je venkovní obraz snímaný kamerou přenášen na obrazovku a okamžitě doplněn výraznými symboly pro nepřátelské a spřátelené objekty. Z civilní oblasti uveďme použití rozšiřující VR při instalaci elektrických rozvodů o celkové délce mnoha desítek kilometrů v letadlech Boeing. Dělníci mají nasazeny brýle, skrze které normálně vidí, ale do nichž jsou jim současně promítány doplňující značky jednoznačně určující místa propojení či rozdělení kabelů podle toho, kam se dělník brýlemi dívá. V oblasti kultury se objevují projekty, při nichž uživatel prochází historicky zajímavými místy (Pompeje , hrad v Heidelbergu) a skrze speciální brýle vidí počítačem doplněné stavby, předměty, ba dokonce i postavy z minulosti, které mu převádějí scény z dané historie a se kterými může rozmlouvat. Jednoduchá virtuální realita (desktop VR, low-end VR) Do této skupiny řadíme aplikace, které nevyužívají speciální technické zařízení. K iluzi práce nebo pohybu ve virtuálním světě poslouží obyčejná obrazovka, předsta-
2.1
Druhy aplikací virtuální reality
9
vující „kukátkoÿ do jiného prostoru. Stereofonní reproduktory dodají zdání prostorového zvuku, myš nahradí složité ukazovací a uchopovací zařízení. Aplikace jednoduché VR lze provozovat na většině běžných počítačů, a proto je jejich škála skutečně rozmanitá – od zábavy (počítačové hry) přes vzdělávání (např. simulace pohybu planet ve vesmíru) až po profesionální aplikace (výzkum, trénink, simulace). K vytvoření virtuální procházky bude zvolen právě tento typ virtuální aplikace, protože umožní velmi snadno komukoliv vstoupit do takovéhoto světa. Víceuživatelské prostředí Další způsob jak můžeme nahlížet na aplikace VR, je z hlediska počtu uživatelů současně přítomných ve virtuálním prostředí. Jednouživatelské aplikace lze snadno zpřístupnit více uživatelům, kteří společně sledují zobrazovací zařízení nebo sdílejí stejný prostor, např. kabinu simulátoru. Ve většině případů jsou však jen v pozici diváků a interaktivní akce VR provádí pouze jeden z nich. Teprve takovou aplikace VR, jenž umožňuje všem uživatelům aktivně se zúčastnit dění ve virtuálním prostředí, můžeme označit jako víceuživatelskou virtuální realitu (multi-user VR). Uživatelé v takovýchto systémech mohou být fyzicky vzdáleni, iluze společného pohybu ve VR je zajištěna propojením jejich počítačů do sítě. VR se tak stává prostředkem pro komunikaci mezi lidmi. Je možné hrát hry ve virtuálním světě se spoluhráči sedícími v danou chvíli na opačných koncích planety, stejně tak je možno posuzovat v distribuovaném lékařském týmu např. nádor reprezentovaný virtuálním modelem získaným z naměřených dat pacienta. Existuje již několik virtuálních měst, kde lidé stavějí své virtuální domy z prefabrikovaných dílů, vyvěšují billboardy zvoucí k návštěvě a s pomocí mikrofonu či dokonce kamery připojené k počítači si povídají s dalšími uživateli. Není to nic jiného než setkávání známé pod názvem chat. Původně textová komunikace se vyvinula přes tzv. internetovou telefonii a video konference až po kontakty v počítačovém trojrozměrném prostředí. Systémy pro víceuživatelskou VR mohou být postaveny nad libovolnou z výše uvedených aplikací (pohlcující, rozšiřující, jednoduchou). Jsou nadstavbou, která především zajišťuje synchronizaci aktivit uživatelů. S těmito aplikacemi se můžeme setkat i pod názvem distribuovaná virtuální realita (distributed VR). QuickTime VR Je zajímavý přístup k popisu virtuální reality. Filosofie formátu QuicTime VR vychází z představy, že virtuální prostředí si uživatel chce především prohlížet, a to z různých stran a z různých vzdáleností. Zaznamenáme-li možné panoramatické pohledy na virtuální svět do jednoho souboru, získáme zvláštní videozáznam, který lze uživateli přehrávat dopředu a dozadu, případně obraz zvětšovat a zmenšovat. Směr přehrávání odpovídá otáčení avatarovy hlavy doprava a doleva, změna velikosti obrazu koresponduje s tím, jak avatar postupuje dopředu či dozadu. Virtuální svět je ve formátu QuickTime VR představován soustavou válcových ploch, na nichž jsou naneseny panoramatické záběry. Stojí-li avatar uvnitř virtuální
2.2
Úvod do jazyka VRML
10
místnosti, stojí ve skutečnosti v pomyslném válci. Virtuální tělesa, která si avatar prohlíží, jsou opět představována sérií panoramatických pohledů, tentokrát promítáním zvenčí na pomyslné válce nebo pomyslnou kouli obklopující těleso. Formát QuickTime VR má menší možnosti interakcí a dynamických akcí. Uživatel si může pouze ze všech stran prohlížet umělá tělesa nebo dotykem vyvolat vstup do další oblasti.
2.2
Úvod do jazyka VRML
VRML (Virtual Reality Modelling Language) je jazyk navržený pro popis statických i dynamických trojrozměrných scén. Umožňuje tvořit vlastní virtuální místnosti, budovy, města, planety a jiné objekty a scény, které si tvůrce virtuálního světa s pomocí své fantazie vymyslí(Ames a kol., 1997). Počátky vzniku jazyka VRML sahají do 80. let 20. století, kde jako nadstavba grafické knihovny GL vznikla knihovna Invertor. Později byla vyvinuta nová grafická knihovna OpenGL a s ní nová knihovna OpenInvertor, která se stala základem jazyka VRML. V roce 1997 byl tento jazyk přijat mezinárodní organizací ISO1 za standard s označením ISO/IEC 14772-1:1997. Norma definuje jazyk pro popis virtuálních světů a současně formát souborů, v nichž se tyto světy ukládají a přenášejí po síti (Wikipedie, 2009). Mezi zakladatele této normy patří prof. Ing. Jiří Žára, CSc., který napsal několik publikací s touto problematikou. Jazyk VRML nyní postupně nahrazuje nový formát X3D2 . Virtuální světy, popsané pomocí jazyka VRML, se ukládají v textovém formátu s kódováním znaků UTF-8. Soubory mají příponu wrl (z anglického slova world). Tuto příponu mají i v případě, že jejich obsah byl nejprve zkomprimován programem gzip. Prohlížeče jsou schopny podle obsahu souboru rozpoznat, zda jde o textový či komprimovaný tvar (Žára, 2000). Velikost výsledného souboru lze snížit i jinými způsoby, tyto způsoby budou popsány v praktické části práce. VRML soubory se skládají z následujících komponent: hlavičky, úvodních informací o světě, popisu těles s jejich vlastnostmi (viz kapitola Statické a dynamické uzly) a propojení statických a dynamických prvků (viz kapitola Routing). #VRML V2.0 utf8 WorldInfo {...} ViewPoint {...} Navigation {...} Transform Group 1
{...} {...}
International Organization for Standardization Extensible 3D – jazyk zalozeny na jazyku XML (Extensible Markup Language); možnost využití křivek a ploch typu NURBS; objekty jsou členěny do logických tříd a komponent (FDIS 19775, 2003) 2
2.3
Popis VRML scény
11
PositionInterpolator {...} ROUTE ... TO ...
2.3
Popis VRML scény
VRML scény jsou tvořeny hierarchickými stromovými strukturami statických a dynamických uzlů (objektů). Hierarchické struktury umožňují měnit vlastnosti (transformace, barvy, textury apod.) pro každou větev stromu zvlášť. Zvláště výhodná je tato reprezentace při transformacích objektů skládajících se z více částí nebo při interaktivní změně některých parametrů. Každý uzel stromu je definován klíčovým slovem (např. Transform, Shape, Cylinder) a množinou parametrů (pro uzel Transform jsou parametry translation, rotation, scale, children) (Ames a kol., 1997). Parametr uzlu nabývá hodnot z množiny přípustných hodnot určených datovým typem parametru. Parametr má předdefinovanou implicitní hodnotu specifikovanou normou ISO. Při vytváření vlastních uzlů by se nemělo opomenout také předdefinovat takovouto implicitní hodnotu. Není nutné potom vkládat hodnoty parametru, které odpovídající hodnotám implicitním, takové parametry se mohou vynechat.
Obr. 1: Model stolu s jeho stromem objektů Na obrázku 1 vidíme hierarchický strom stolu, který se skládá z 5 částí (deska + 4 nohy). Uzavřením těchto částí do jednoho rodičovského uzlu Stůl a změ-
2.3
12
Popis VRML scény
nou jediného parametru u tohoto uzlu lze jednoduše posunout celý stůl o 2 metry doprava. 2.3.1
Statické uzly
Uzly VRML je možné podle své funkce rozdělit do dvou hlavních skupin, na statické (popisují tvar, vzhled, světla, textury, zvuky) a dynamické. Statické uzly lze dále dělit na: • geometrické – popis geometrických parametrů – tvaru a velikosti objektů ( Box, Cone, Cylinder, ElevationGrid, Extrusion, FontStyle, IndexedFaceSet, IndexedLineSet, PointSet, Spere, Text), • vlastností – definice vlastností objektů – normály, souřadnice (Color, Coordinate, Normal), • vzhledu – popis povrchu objektů – materiály, textury (Appearance, ImageTexture, Material, MovieTexture, PixelTexture, TextureCoordinate, TextureTransform), • světlo a zvuk – definice různých druhů světel a zvuků (AudioClip, DirectionalLight, PointLight, Sound, SpoitLight), • speciální – popisují uzly pro zvláštní použití – odkaz, úroveň detailu atd. (Anchor, Background, Fog, Inline, LOD, NavigationInfo, Script, ViewPoint, WorldInfo), • skupinové – uzly sdružující jiné uzly do skupin (Billboard, Group, Switch, Transform), V následující části této kapitoly si blíže představíme některé základní geometrické objetky, které jsou definovány v mezinárodní normě ISO 14472-1. Použité obrázky v této kapitole jsou také použity právě z této normy (ISO/IEC 14772-1, 1997). Krychle Box { size }
2 2 2
# SFVec3f
(0, infty)
Uzel Box reprezentuje krychli umístěnou do středu soustavy souřadnic (0, 0, 0) v lokálním souřadném systému, její hrany jsou rovnoběžné s osami. Implicitní velikost hran je 2 v každém rozměru, od -1 do 1. Krychle může být zevnitř neviditelná, to záleží na kontrétním prohlížeči. Není tedy vhodné umísťovat pozorovatele dovnitř krychle. Jestliže chcete, aby pozorovatel viděl povrch krychle zevnitř, použijte uzel IndexedFaceSet s polem solid nastaveným na FALSE.
2.3
13
Popis VRML scény
Obr. 2: Uzel krychle Kužel Cone { bottomRadius height side bottom }
1 2 TRUE TRUE
# # # #
SFFloat (0,infty) SFFloat (0,infty) SFBool SFBool
Uzel Cone popisuje jednoduchý kužel, jehož osa je rovnoběžná s osou y. Střed kužele je v bodě (0, 0, 0) a ve všech třech rozměrech má implicitní velikost od -1 do 1. Kužel může být zevnitř neviditelný, to záleží na prohlížeči, není tedy vhodné umísťovat pozorovatele dovnitř kužele. Jestliže chcete, aby pozorovatel viděl povrch kužele zevnitř, použijte uzel IndexedFaceSet s polem solid nastaveným na FALSE.
Obr. 3: Uzel kužel
2.3
14
Popis VRML scény
Válec Cylinder { radius height side top bottom
1 2 TRUE TRUE TRUE
# # # # #
SFFloat (0,infty) SFFloat (0,infty) SFBool SFBool SFBool
} Uzel Cylinder reprezentuje jednoduchý válec s podstavami, jehož osa je rovnoběžná s osou y. Implicitně je nakreslen se středem v bodě (0, 0, 0) a má implicitní velikosti od -1 do 1 ve všech třech rozměrech. Válec může být zevnitř neviditelný, to záleží na prohlížeči. Není tedy vhodné umísťovat pozorovatele dovnitř válce. Jestliže chcete, aby pozorovatel viděl povrch válce zevnitř, použijte IndexedFaceSet s polem solid nastaveným na FALSE.
Obr. 4: Uzel válec
Elevationgrid Uzel ElevationGrid vytvoří tzv. výškovou mapu (pravidelnou čtvercovou mřížku, kde každý bod mřížky má jinou výšku). Je vhodný zejména při modelování terénu. Mapa je definována seznamem hodnot, které definují výšku nad každým bodem mřížky. Extrusion Uzel Extrusion poskytuje aparát pro popis těles, které vzniknou tažením profilu po nějaké křivce v prostoru. V poli crossSection je popsán profil, který je tažen po křivce popsané v poli spine, obě křivky jsou z rovinných úseků. Profil může být v každém řídícím uzlu křivky, po které je tahán, zvětšen či zmenšen v nějakém měřítku nebo rotován podle hodnot scale a orientation.
2.3
15
Popis VRML scény
Jsou-li zadány hodnoty TRUE v polích beginCap, a nebo endCap je vytažené těleso na koncích uzavřeno polygony odpovídajícími profilu. Normály jsou pro tažené těleso generovány automaticky. Indexfaset IndexedFaceSet { coord coordIndex texCoord texCoordIndex color colorIndex colorPerVertex normal normalIndex normalPerVertex ccw solid convex creaseAngle } eventIn MFInt32 eventIn MFInt32 eventIn MFInt32 eventIn MFInt32
NULL [ ] NULL [ ] NULL [ ] TRUE NULL [ ] TRUE TRUE TRUE TRUE 0
# # # # # # # # # # # # # #
exposed MFInt32 exposed MFInt32 exposed MFInt32 SFBool exposed MFInt32 SFBool SFBool SFBool SFBool SFFloat
field SFNode [-1,infty) field SFNode [-1,infty) field SFNode [-1,infty) field SFNode [-1,infty)
[0,infty)
set_colorIndex set_coordIndex set_normalIndex set_texCoordIndex
Uzel IndexedFaceSet reprezentuje plochu v prostoru složenou z polygonů, které jsou definovány vrcholy v poli coord. Vrcholy polygonů jsou určeny seznamem indexů do pole vrcholů, tento seznam je uložen v poli coordIndex. Oddělovačem v tomto poli je -1, její výskyt znamená, že skončila definice jednoho polygonu a začíná definice dalšího. Tento uzel se může vyskytovat pouze v poli geometry uzlu Shape. Indexedlineset IndexedLineSet { coord coordIndex color colorIndex colorPerVertex }
NULL [ ] NULL [ ] TRUE
# # # # #
exposed MFInt32 exposed MFInt32 SFBool
field SFNode [-1,infty) field SFNode [-1,infty)
2.3
16
Popis VRML scény
eventIn eventIn
MFInt32 MFInt32
set_colorIndex set_coordIndex
Uzel IndexedLineSet popisuje množinu lomených čar v prostoru, vrcholy jsou definovány v poli coord a jednotlivé segmenty lomených čar jsou určeny seznamem indexů do pole vrcholů, tento seznam je uložen v poli coordIndex. Oddělovačem v tomto poli je -1, její výskyt znamená, že skončila definice jednoho segmentu a začíná definice dalšího. Tento uzel se může vyskytovat pouze v poli geometry uzlu Shape. Lomené čáry nemohou být otexturovány a nejsou ovlivněny svítícím světlem. Nejsou testovány na kolize. Sphere Sphere { radius }
1
# SFFloat (0,infty)
Uzel Sphere reprezentuje kouli se středem v počátku soustavy souřadnic, implicitně má poloměr 1. Pro kouli jsou vygenerovány vlastní normály. Koule může být zevnitř neviditelná, to záleží na prohlížeči, není tedy vhodné umísťovat pozorovatele dovnitř koule. Jestliže chcete, aby pozorovatel viděl povrch koule zevnitř, použijte IndexedFaceSet s polem solid nastaveným na FALSE.
Obr. 5: Uzel koule
2.3.2
Dynamické uzly
Dynamické uzly se vyznačují tím, že jsou schopny generovat takové události, které lze buď přímo, nebo zprostředkovaně použít ke změně stavu ostatních uzlů (Černohorský, 2007)
2.3
Popis VRML scény
17
Tento typ uzlů lze zhruba rozdělit do tří skupin na: • interpolátory – jsou uzly, které převádějí vstupní hodnotu, kterou je reálné číslo (typ SFFloat), na hodnotu jiného typu, podle průběhu nadefinované lineární funkce (ColorInterpolator, CoordinatelInterpolator, NormalInterpolator, OrientatonInterpolator, PositionInpolator, ScalarInterpolator), • manipulátory – umožňují jednoduše převádět posuvný pohyb myši na pohyb geometrického objektu (CylinderSensor, PlaneSensor, SpereSensor), • senzory – generují výstupní události jako reakci na specifické situace, které jsou důsledkem činnosti avatara (Collision, ProximiSensor, TimeSensor, TouchSensor, VisibilitySensor). 2.3.3
Datové typy
Každý programovací jazyk má své datové typy. Protože i VRML je svým způsobem programovací jazyk, najdeme různé datové typy i zde. Některé můžeme najít i u jiných programovacích jazyků, jiné jsou pouze ve VRML. Hlavní odlišností od klasického chápání datových typů je to, že ve VRML se jménem odlišují datové typy, které mohou obsahovat jednu hodnotu od těch , které mohou obsahovat hodnot více. Ty první mají ve svém názvu na začátku dvojici písmen SF jako single field, ty druhé začínají na MF jako multiple field. Při zápisu atributů objektů (3D modelů, světel, kamery apod.) nebo celých skupin objektů se používá několik datových typů. Ve VRML 2.0 je možné pracovat celkem se šestnácti datovými typy, přičemž každý typ atributu vyžaduje jiný datový typ; například nemá smysl popisovat rotaci booleovskou hodnotou nebo jednoduchý atribut, zda válec obsahuje podstavu, zapisovat místo booleovské hodnoty maticí či vektorem. Základní datové typy podporované ve VRML jsou vypsány v následující tabulce (Ťišnovský, 2007). 2.3.4
Prototypy
Prototypy dovolují definovat nové, vlastní uzly a stromové struktury, vytvářet knihovny specializovaných objektů. Pomocí konstrukce PROTO je možné vytvořit to, co nám v jazyce VRML chybí, přičemž výsledný uzel bude vypadat stejně, jako kterýkoliv standardní VRML uzel. Prototyp představuje vzor uzlu, který můžeme vkládat do stromové struktury VRML a modifikovat nastavením jeho parametrů (Žára, 2000). Příkaz PROTO se skládá z klíčového slova PROTO, jména prototypu, seznamu deklarací parametru a definice prototypu. Syntaxe má následující podobu: PROTO <jméno> [ <seznam deklarací parametrů> ] { <stromová struktura uzlů > } Definice prototypů mohou být zahrnuty v souboru, ve kterém jsou používány nebo definovány externě (vznikají tzv. knihovny).
2.3
18
Popis VRML scény
Tab. 1: Základní datové typy (Ťišnovský, 2007)
Označení SFBitMask SFBool SFColor SFEnum SFFloat SFImage SFLong SFMatrix SFRotationrotace SFString SFVec2f SFVec3f MFColor MFLong MFVec2f MFVec3f 2.3.5
Poznámka pouze hodnoty 0 a 1 hodnoty true a false zápis barvy ve formátu RGB interně se jedná o celé číslo IEEE float pixmapa celočíselná hodnota matice vtinoutransf orman zadaná čtyřmi hodnotami většinou UTF8 2D vektor 3D vektor vektor více barev vektor více celočíselných hodnot vektor 2D vektorů vektor 3D vektorů
Routing
VRML uzly mohou generovat události v závislosti na změně prostředí nebo interakce uživatele (Bell a kol., 1997). Událost je základním prostředním, který umožňuje „rozhýbáníÿ statických světů. Je možno si ji představit jako datový záznam, který je předáván mezi uzly v okamžiku, kdy z nějakého důvodu dojde ke změně hodnoty parametru uzlu. O uzlu, v němž událost na základě takovéhoto podnětu vznikne, říkáme, že vyslal událost. Podobně uzel, k němuž byla data o události dopravena k dalšímu zpracování, událost přijal a přijatá data uložil do svého parametru (Žára, 2000). Mechanismus, který vytváří spojení mezi jednotlivými uzly, se nazývá ROUTE. Informace předávané mezi vstupní a výstupní událostí musí být stejného typu. Například je nepřípustné nadefinovat spojení z SFFloat do SFInt32 nebo z SFFloat do MFFloat. Cesta smí být vytvořena pouze z výstupní události (eventOut) nebo z pole typu exposedField do vstupní události (eventIn) nebo do pole typu exposedField. Nadbytečná a opakující se spojení jsou ignorována (Černohorský, 2007). Syntaxe má následující podobu: ROUTE
. TO .
2.4
Softwarové prostředky
2.4 2.4.1
19
Softwarové prostředky Vývojová prostředí
Vývojová prostředí k tvorbě VRML scén je možno rozdělit do několika základních skupin: Textové editory (VrmlPad, NotePad, Gedit, Vim) Výhody • lze použít běžně dostupné textové editory, • ruční zápis VRML kódu umožňuje přístup ke všem prvkům jazyka VRML, • možnost vytvoření vlastních knihoven prototypů barev a objektů, • optimalizace redundantních dat. Nevýhody • komplikovaná tvorba složitých objektů, • náročnost na prostorovou představivost, • ruční zápis vyžaduje velmi dobré znalosti syntaxe VRML. VRML 3D modelovací nástroje (CosmoWorlds, Internet space builder) Výhody • jednoduché 3D navrhovací uživatelské rozhraní, • minimální znalost syntaxe VRML, • některé nástroje mají předpřipravené objekty (např. židle, dveře, budovy. . . ). Nevýhody • nejsou podporovány všechny možnosti jazyka VRML. Obecné 3D modelovací nástroje (Rhinoceros, Cinema, 3ds Max) Výhody • velmi výkonné modelovací 3D nástroje, obsahují mnoho užitečných funkcí usnadňující modelování, • umožňuje modelovat složité objekty do nejmenších detailů. Nevýhody • nejsou navržené přímo pro VRML (nutný export), • často jednostranná cesta z 3D nástroje do VRML, • nepřehlednost vyexportovaného kódu, • scény bývají popsány zbytečně mnoha plochami (polygony). 2.4.2
Prohlížeče VRML souborů
Hlavním smyslem jazyka VRML je umožnit prohlížení 3D scén v síti Internet, k tomu však nestačí pouhý webový prohlížeč. Je nutné do webového prohlížeče stáhnout
2.4
Softwarové prostředky
20
vhodný plugin 3 , tento plugin se nainstaluje do všech prohlížečů. Mezi nejpoužívanější pluginy patří Cortona3D Viewer od společnosti ParallelGraphics 4 , Cosmo Player od CosmoWorlds nebo BS Contact od konsorcia web3d5 . VRML soubory, uložené na lokálním disku, je možno zobrazovat i bez použití webového prohlížeče a to za použití speciálního programu pro zobrazování VRML scén. Zástupcem takovýchto programů jsou např. InstantPlayer, OpenVRML, FreeWRL.
Obr. 6: Ukázka virtuální scény v prohlížeči Cortona3D Pro názorné přiblížení ovládání byl vybrán klient Cortona3D. Ovládání je velmi podobné i u ostatních prohlížečů. VRML scéna se ovládá pomocí myši nebo pomocí klávesnice. Ve scéně se dá pohybovat třemi základními způsoby. Prvním způsobem pohybu je WALK (chůze), představuje pohyb Avatara po zemi. Působí na něj také gravitace (může propadnout otvorem v podlaze). FLY (let) umožňuje pohybovat se zcela volně v prostoru (nepůsobí gravitace). Poslední typ STUDY (prostuduj) slouží ke zkoumání objektů, nepůsobí na Avatara gravitace a je možno procházet skrz objekty (je vypnut detektor kolizí).
3
Plugin neboli zásuvný modul je software, který nepracuje samostatně, ale jako doplňkový modul jiné aplikace a rozšiřuje tak její funkčnost (Wikipedie, 2009) 4 http://www.parallelgraphics.com/ 5 http://www.web3d.org
3
PRAKTICKÁ ČÁST
3
21
Praktická část
Po nastudování teorie jazyka VRML a seznámení se se softwarovými nástroji pro práci s virtuálními světy, nastala chvíle pro samotnou „virtualizaciÿ budovy. Hlavním podkladem pro práci se staly stavební plány budovy Q ve formátu DWG6 , jednalo se zejména o půdorysy všech podlaží. Dalším zdrojem informací byly vlastní nákresy, fotografie a vlastní měření budovy. Pro získání rozvrhů jsem využila aplikaci na zobrazování rozvrhů pro UIS.
3.1
Modelování prostorů budovy Q
Ještě před samotným modelováním je potřeba zmínit několik skutečností. Všechny vytvořené objekty budou zobrazovány zejména na síti Internet, jenž je omezena rychlostí připojení (linky) – musí tedy být kladen důraz na snížení objemu přenášených dat. Při vykreslování scény dochází k velkým matematickým výpočtům (rozklad všech ploch na jednotlivé polygony, výpočet dopadu světelných paprsků. . . ), což zatěžuje výpočetní výkon počítače – řešením je omezení množství vykreslovaných ploch (nevykreslovat plochy, které pozorovatel scény vůbec nemůže běžně vidět). Zejména při vytváření rozsáhlejších scén by měla být brána na zřetel tato omezení.
Obr. 7: Letecká fotografie budovy Zdroj: avc.mendelu.cz Areál Provozně ekonomické fakulty se skládá z komplexu 4 navzájem propojených budov, kde největší budova má 6 nadzemích podlaží a 2 podzemní. Nachází se zde velké množství výukových prostorů (učeben, poslucháren a laboratoří), kanceláří a mnoho dalších místností. Je zřejmé, že výsledná scéna bude značně rozsáhlá a její zobrazení bude znatelně zatěžovat výpočetní výkon. Proto jako hlavní vývojový nástroj byl zvolen textový 6
DWG je nativním formátem souborů (výkresů) programu AutoCAD (Wikipedie, 2009)
3.1
22
Modelování prostorů budovy Q
editor VrmlPad, jenž umožňuje přímou práci se zdrojovým kódem, díky čemuž lze znatelně ovlivnit (omezit) množství přenášených a vykreslovaných dat. Model budovy se skládá z několika dílčích vzájemně propojených scén, v nichž jednotlivá podlaží tvoří samostatné scény. Pro každé podlaží byl vytvořen samostatný soubor obsahující jejich definici. Pomocí uzlu Inline jsou v souboru budovaQ.wrl propojeny jednotlivé dílčí scény v jedinou. Toto rozdělení zpřehlední zdrojový kód a umožní také postupné načítání celého modelu – „současné načítání více souborů bývá rychlejší než jejich postupné zpracováníÿ (Žára, 2000). Inline Inline Inline Inline Inline Inline
{ { { { { {
url url url url url url
"podlaziN1.wrl" "podlaziN2.wrl" "podlaziN3.wrl" "podlaziN4.wrl" "podlaziN5.wrl" "podlaziN6.wrl"
} } } } } }
Soubor budovaQ.wrl řídí celou scénu, obsahuje nejen připojení jednotlivých modelů podlaží, ale také popisuje její vlastnosti – typy osvětlení, vzhled pozadí, pohyb avatara ve scéně a několik výchozích pohledů (těmto vlastnostem bude věnována samostatná kapitola). Modely podlaží tvoří hierarchické struktury mnoha objektů (zdí, oken, dveří, schodů a pilířů). Vzhledem k tomu, že se mnoho objektů opakuje, bylo vytvořeno několik knihoven s těmito objekty, čímž došlo k diametrálnímu snížení velikosti výsledného souboru. Byly vytvořeny knihovny pro dveře, okna a schody. V knihovnách se nachází definice jednotlivých objektů (prototypů). Nejdříve je zde definován vzhled dílů, ze kterých se tyto objekty skládají (prototypy rámů, skel a schodů). Pomocí uzlu Transform jsou poté umístěny na danou pozici v objektu. Seznam jednotlivých dílů s pozičním umístěním je na závěr spojen do jednoho prototypu (např. oknoP80). PROTO oknoP80 [ ]{ ... Transform { children translation } Transform { children translation } Transform { children
Ram_vodorovny70 {} 0 8.75 0
Ram_vodorovny70{} 0 -8.75 0
Ram_svisly {}
3.1
23
Modelování prostorů budovy Q
translation
3.5 0 0
} Transform { children Ram_svisly {} translation -3.5 0 0 } Transform { children sklo60 {} translation 0 0 0 } ... Poté jsou objekty z těchto knihoven vkládány do vytvářené scény. Příkazem EXTERNPROTO je vytvořeno propojení mezi knihovnou (okno.wrl) a zdrojovým souborem konkrétní scény, ve které má být objekt použit. EXTERNPROTO oknoP80 [ ] "okno.wrl#oknoP8"
# připojení prototypu
Po připojení se s těmito objekty pracuje stejně jako s běžnými geometrickými uzly. Následující ukázka zdrojového textu ukazuje použití takto vytvořeného okna. Transform { children oknoP80 {} translation -57.49 0 7.5 rotation
0 1 0
1.5708
# umístění na konkrétní pozici v budově # otočení o 90
} K vytvoření místností jsou používány dva typy uzlů – uzel Box, který je využíván pro příčky mezi místnostmi a uzel IndexFaceSet, kterým byly tvořeny ostatní stěny (obvodové zdi a stěny se dveřmi). Souřadnice umístění stěn a jejich rozměry byly odvozeny ze stavebních plánů budovy. Jazyk VRML nemá žádný nástroj (funkci) umožňující do ploch vytvořit otvory (v Rhinu se pro tyto účely většinou používá nástroj Stříhej), proto prostory pro okna a dveře musely být vytvořeny ručním zadáním souřadnic vrcholů otvorů. Každá stěna byla pojmenována příkazem DEF. Na toto označení bylo odkazováno příkazem USE, v případech, kdy se objevily dva objekty se stejnými rozměry. Postup modelování poslucháren Vzhledem k jejímu asymetrickému tvaru bohužel nebylo možné zjistit konkrétní hodnoty důležité pro popis objektu této budovy. Řešením toho problému bylo použití
3.2
24
Nastavení vlastností objektů a scény
3D modelovacího nástroje Rhinoceros, kde jako podkladový obrázek modelovací plochy byla vložena fotografie, podle níž byl zachycen obrys, z něhož byly následně vymodelovány prostory pro posluchárny.
Obr. 8: Modelování prostorů pro posluchárny v programu Rhinoceros
3.2
Nastavení vlastností objektů a scény
Každý objekt je definován svým rozměrem a vzhledem. Vzhled celého objektu nebo jeho části lze ovlivnit v uzlu Appearance, jenž má dva parametry, parametr material (popisující barvu) a parametr texture (popisující mapování textury). 3.2.1
Práce s barvami ve scéně
Ve scéně se velmi často vyskytovaly objekty se stejnými povrchovými vlastnostmi, čehož bylo využito k vytvoření prototypů často se objevujících barev. Tím se usnadnila práce s barvami povrchů objektů v celé scéně. Změnou hodnot několika málo parametrů v definici prototypu, bylo možné řídit vzhled několika objektů současně. Následující příklad ilustruje definici vlastností povrchu všech skel ve scéně, a poté přiřazení těchto vlastností konkrétnímu objektu. # definice vzhledu skel PROTO SkloAPP [ ] { Appearance { material Material { ambientIntensity 0 diffuseColor
0.36 0.36 0.36
# barva povrchu zesvětlovaná jasem prostoru # základní složení barvy
3.2
25
Nastavení vlastností objektů a scény
specularColor emissiveColor shininess transparency
0.94 0.94 0.94 0 0.36 0.27 0.23 0.68
# # # #
jakou barvu povrch odráží barva vyzařovaného světla svítivost barvy průhlednost objektu
} } } # konkrétní užití předdefinovaného vzhledu pro skla Shape { appearance SkloAPP {} geometry Box { size 6 9 0.1} } 3.2.2
Texturování objektů
Potažením povrchu objektů texturou lze docílit realističtějšího vzhledu objektů. Pro nanesení textur byl zvolen PEP Texture Applicator programu CosmoWorld, jenž rozkladem objektů na množiny ploch (IndexFaceSet) umožňuje lépe řídit mapování textur a odstranit tak deformování nanášené textury. CosmoWorld má několik předdefinovaných textur, ale pro modelovanou scénu nebyly však vhodné. Nové textury byly vloženy přetažením jejich souborů z adresáře do okna s paletami textur. Pomocí vlastních textur byl definován vzhled dřevěných dveří a mramorových sloupů. Textur bylo využito i pro vytvoření označení učeben a cedulek s rozvrhem. VRML má sice implementován uzel Text, kterýmž by se mohl vložit potřebný textový řetězec pro označení učebny, ale „každé vytvořené písmenko je při prohlížení scény převedeno na mnoho velmi malých trojúhelníkůÿ (Žára), což značně ovlivní pracnost vykreslování celé scény.
Obr. 9: Ukázka textury použité i na označení učebny
3.3
Tvorba dynamického světa
3.2.3
26
Osvětlování scény
Trojrozměrný prostor, vytvořený v paměti počítače, by byl jen směsicí nevýrazných objektů, kdybychom do něj nevložili světlo a neumožnili povrchu objektů reagovat s ním, tj. odrážet je (Žára, 2000). Nicméně vytvoření realistického osvětlení v celé virtuální budově je poměrně komplikovaná záležitost a mohla by se stát tématem pro nějakou druhou práci. Proto osvětlování bylo řešeno jen pomocí uzlu DirectionalLight. Ze všech stran bylo kolmo ke scéně namířeno jedno přímé směrové světlo. Implicitně je nastavena intenzita světelných paprsků na hodnotu 1, což je maximální hodnota. Při této konstantní intenzitě všech světelných zdrojů byl docílen nepříjemný efekt. Hrany objektů se stejnými vlastnostmi povrchu začaly splývat, proto musely být nastaveny intenzity sousedních zdrojů odlišně.
3.3
Tvorba dynamického světa
Samotný model budovy sice již umožňuje prohlédnout si prostory fakulty, ale aby se tato prohlídka více přiblížila skutečné procházce budovou, je třeba zakomponovat do modelu další prvek, a tím je interakce. Byly zvoleny 3 typy interakcí – otevření dveří na pokyn pozorovatele scény, navigace pomocí navigační mapky a zobrazování rozvrhů u každé učebny. 3.3.1
Otevírání dveří
Při návrhu otvíracích dveří bylo zejména myšleno na to, aby tato schopnost (akce) byla snadno aplikovatelná na jakýkoliv typ dveří, byla univerzální. Byl vytvořen prototyp OtviraciDvere, který je aplikovatelný na všechny druhy dveří. Toto je docíleno díky předávání parametrů při volání tohoto prototypu. Parametrem se předává míra posunutí kliky od středu dveří, posunutí bodu, kolem kterého se budou dveře otáčet. Třetí parametr slouží pro přiřazení konkrétního typu dveří. Poslední parametr pohyb se vztahuje k otevírání dveří, pomocí něhož se předávají hodnoty udávající směr a úhel otevření dveří. Implicitní nastavení hodnot je pro dveře o šířce 80 cm. PROTO OtviraciDvere [ field SFVec3f posunutiKliky 7 0 0 # šířka dveří - 1 field SFVec3f posunutiDveri 4 0 0 # polovička šířky dveří field MFNode children [ ] field MFRotation Pohyb [0 1 0 0, 0 1 0 0 ,0 1 0 1.57, 0 1 0 1.57, 0 1 0 0] ] Celý prototyp pracuje na tom, že kliknutím na dveře se zmáčkne klika (otočení kliky o 30 kolem osy z), a potom se začnou otáčet dveře o 90, po několika sekundách se opět zavřou.
3.3
Tvorba dynamického světa
27
DEF DvereOT Transform { children [ Transform { children IS children # libovolné dveře translation IS posunutiDveri } # kliknutí na dveře odstartuje animaci DEF kliknuti TouchSensor {} # délka celého cyklu je 12 sekund DEF Doba TimeSensor { cycleInterval 12.0 } # rozložení délky cyklu na jednotlivé dílčí pohyby dveří DEF PohybOtevreni OrientationInterpolator { key [ 0, 0.15, 0.35,0.7,1.0 ] keyValue IS Pohyb } DEF kliky Transform { children[ Transform { children klika {} # přední klika translation -0.5 0 -0.7 } Transform { children klika {} # zadní klika translation -0.5 0 0.7 rotation 1 0 0 3.1416 } DEF PohybKlika OrientationInterpolator { key [ 0, .1, .7, 1.0 ] keyValue [ 0 0 1 0, 0 0 1 0.5, 0 0 1 0.5, 0 0 1 0 ] } ] translation IS posunutiKliky } ] } Pomocí konstrukce ROUTE . . . TO . . . jsou předávány jednotlivé události mezi uzly. Nejprve aktivací TouchSenzoru se vyšle impulz, který odstartuje celý 12 sekundový cyklus. Postupně je převáděna doba celého cyklu na jednotlivé dílčí akce. Bě-
3.3
Tvorba dynamického světa
28
hem plynutí času jsou aktivovány jednotlivé nastavené animace – otáčení kliky a pohyb otevření dveří. ROUTE ROUTE ROUTE ROUTE ROUTE
kliknuti.touchTime TO Doba.startTime Doba.fraction_changed TO PohybOtevreni.set_fraction PohybOtevreni.value_changed TO DvereOT.rotation Doba.fraction_changed TO PohybKlika.set_fraction PohybKlika.value_changed TO kliky.rotation
Následující část kódu ilustruje, jak byla statickému uzlu Mojedvere80 přidána událost pro otvírání dveří. Parametrům prototypu OtviraciDvere byly předány konkrétní hodnoty. OtviraciDvere { children Mojedvere80 {barvaDveri ramyAPPdrevo {}} posunutiDveri 4 10.49 0 posunutiKliky 7 10.49 0 Pohyb [0 1 0 0, 0 1 0 0 ,0 1 0 -1.57,0 1 0 -1.57, 0 1 0 0] }
3.3.2
Tvorba virtuálního průvodce
Jak ve skutečné tak i ve virtuální budově je třeba si uvědomit, že ne každý návštěvník se orientuje snadno v budově, aby se neztratil nebo aby našel snadno místa, které chce navštívit, jsou v budovách umisťovány různé navigační prvky, jenž mu usnadní hledání správné cesty k cíly. Výhodou virtuálních budov je, že je možné nejen umístit do virtuálních scén navigační prvky, ale tvůrce scény může zkoncipovat (vytvořit) virtuálního průvodce, který provede návštěvníka celou trasou. V našem modelu se průvodci nachází pod navigační mapkou učeben. Průvodce je přivolán kliknutím na označení požadované učebny. Průvodce po tomto pokynu provede návštěvníka předpřipravenou trasou až před dveře dané učebny. Jazyk VRML má prvek Anchor, jenž dokáže teleportovat návštěvníka z jednoho místa do druhého tím, že při aktivování tohoto uzlu jsou současné souřadnice pozice nahrazeny souřadnicemi definovanými v parametrech uzlu ViewPoint, jenž je potomkem uzlu Anchor. Nevýhodou tohoto řešení spočívá v tom, že nelze nijak měnit trasu, kterou bude návštěvník procházet. Prohlížeč sám určí nejkratší cestu k cíli (i skrz jakékoliv překážky). Vlastní virtuální průvodce byl zkoncipován na základě určení výchozí a cílové pozice. Mezi tyto pozice jsou ještě vkládány souřadnice zlomových míst, ve kterých návštěvník bude měnit směr pohybu, na určité pozici zahne, otočí se doprava (popř. doleva). Celou trasu řídí poziční a orientační interpolátory, které během plynutí času vypočítávají pohyb návštěvníka. Výchozí pozice návštěvníka a jeho úhel otočení se
3.3
29
Tvorba dynamického světa
Obr. 10: Výchozí pozice avatara, avatar se rozhoduje, kam jít musí vždy shodovat s hodnotami nastavenými v parametru pohledu mapka, ostatní hodnoty parametrů v interpolátorech jsou měněny podle vybraného cílového místa, pro každou učebnu je vytvořen skript, který právě tyto hodnoty přepíše. DEF mapka Viewpoint { position -15.2 5.85 48.38 orientation 0 1 0 1.57 } DEF CASOVAC TimeSensor { cycleInterval DEF pozice PositionInterpolator { key [0, 1]
4 }
# souřadnice výchozí a cílové pozice keyValue [-15.2 5.85 48.38, -15.2 5.85 50.2] } DEF otoceni OrientationInterpolator { key [0.0, 0.2, 0.6, 1.0] # jednotlivé úhly otočení kolem osy y keyValue [0 1 0 1.57, 0 1 0 3.14, 0 1 0 3.14, 0 1 0 1.57] } Cíl je vybrán kliknutím na označení požadované učebny v navigační mapě. Pod každým označením učebny je skryt TouchSenzor, jenž po své aktivaci zavolá funkci, která přepíše hodnoty v interpolátorech a případně také změní délku celé prohlídky (celého cyklu). TouchSenzor také odstartuje ČASOVAČ, ten postupně vyšle několik událostí.
3.3
30
Tvorba dynamického světa
Obr. 11: Cílová pozice, avatar stojí před hledanou učebnou Nejdříve přesune na vrchol zásobníku s Viewpointy pohled MAPKA. Poté jsou již vyslány události pro interpolátory pozice a otočení, které započnou řízenou procházku k požadované učebně. # Událost pro přepis hodnot v interpolátorech pro Q11 ROUTE klik1.isActive TO SKRIPT.ts_active # Odstartování časovače ROUTE klik1.touchTime TO
CASOVAC.startTime
# přesunutí ViewPointu na vrchol zásobníku - předává se jen hodnota TRUE ROUTE CASOVAC.isActive TO SKRIPT.isactive ROUTE SKRIPT.activated TO mapka.set_bind 3.3.3
Zobrazení rozvrhů
Vedle dveří do učeben je umístěn také rozvrh hodin pro danou učebnu. Informace v rozvrhu se mění velice často (učitelé vkládají např. nové rezervace místností pro zkoušky), bylo tedy třeba vymyslet systém zobrazování aktuálního rozvrhu ve virtuální scéně. Aktuální rozvrh je vždy uchováván v Univerzitním informačním systému, který je dostupný prostřednictvím počítačové sítě. Aplikace pro zobrazování
3.3
31
Tvorba dynamického světa
rozvrhu v UIS je však závislá nejen na zvolené místnosti, ale také volbě časového období, za které si přejeme rozvrh zobrazit. Aby bylo možné zobrazovat aktuální rozvrh u dveří učebny, bylo nutné zajistit úpravu UIS, po které by bylo umožněno zobrazování rozvrhu bez specifikace časového období (aplikace bude zobrazovat rozvrh pro aktuální týden). Vývojové pracoviště pro UIS mi na základě mého podnětu připravilo rozhraní (API), které umožní právě takovýto týdenní pohled na všechny rezervace a plánované rozvrhy v dané učebně. Nově vytvořené URL je http://is.mendelu.cz/api/rozvrh.pl?room=XXX, kde XXX představuje označení místnosti, jejíž rozvrh chceme zobrazit. Vlastní zobrazení rozvrhu je možné realizovat pomocí uzlu Anchor, který vytvoří ve virtuálním světě tlačítko, po jehož aktivaci je zobrazen aktuální rozvrh místnosti v novém okně prohlížeče. Anchor { children DEF rozvrhQ06 Transform { ... # definice tlačítka } parameter "target=_blank" # zobrazení url v novém okně description "zobraz rozvrh Q06" # popisek pro prohlížeč url "http://is.mendelu.cz/api/rozvrh.pl?room=Q06" }
Obr. 12: Rozvrh získaný z UIS Nedostatkem takto zobrazených rozvrhů je pouze absence rezervačních údajů Ústavu informatiky PEF, který jako jediný na univerzitě nepoužívá rezervační systém UIS
3.3
Tvorba dynamického světa
32
a tak údaje o rezervacích jeho učeben nejsou k dispozici (rozvrhové údaje k dispozici jsou, neboť rozvrhy jsou řešeny na úrovni celých fakult). Jedná se o učebny Q04-Q09 a posluchárnu Q16. Pro ostatní učebny jsou údaje vždy aktuální. 3.3.4
Optimalizace modelu
Jak již bylo řečeno dříve, virtuální model PEF bude přístupný na síti Internet a z toho plyne požadavek na optimalizaci modelu jak po stránce množství přenášených dat, tak po stránce náročnosti na vykreslování scény. Již samotný návrh modelu se snažil co nejvíce přispět k optimalizování. K odstranění redundantních zápisů parametrů některých uzlů, byly vytvořeny knihovny prototypů a také při vzniku totožných větví v hierarchické struktuře objektů celé scény bylo využíváno konstrukce DEF a USE. Při tvorbě popisků učeben bylo docíleno také zlepšení modelu, díky použití textur s nízkým rozlišením oproti použití uzlu TEXT. To však není jediný způsob pro snížení nároků na zobrazování scény. Nástroj CosmoWorld má pro tyto účely implementovanou funkci Publishing, jenž pomocí několika kroků, provede různými možnostmi pro optimalizaci modelu. Nejúčinnější byla asi možnost odstranit všechny hodnoty parametrů shodné s implicitním nastavením. Dále bylo možné odstranit všechny „bíléÿ znaky a komentáře, ale to mělo za nepříjemný efekt špatnou čitelnost zdrojového kódu. Nicméně pro uživatele scény je nepodstatné formátování zdrojového textu, a proto na síti internetu bude přístupná verze bez „bílýchÿ znaků. Poslední krok k optimalizaci je komprese výsledného souboru pomocí gzipu. Čímž se značně snížila velikost všech zdrojových souborů, ale na pracnost vykreslování scény to nemělo žádný efekt. . .
4
4
DISKUZE A ZÁVĚR
33
Diskuze a závěr
V rámci bakalářské práce byla vytvořena virtuální prohlídka budovy Provozně ekonomické fakulty Mendelovy zemědělské a lesnické univerzity v Brně, jejíž aktuální verze je dostupná na Internetu. V teoretické části práce jsou přiblíženy současné možnosti v oblasti virtuální reality a pravidla popisu virtuálních scén v jazyce VRML. Jsou zde rozebrány také typy nástrojů pro tvorbu a prohlížení virtuálních světů. Na základě získaných poznatků popisuje praktická část postup vzniku virtuálního modelu budovy a principy tvorby interaktivních prvků. Tato prohlídka je reprezentována jako VRML model budovy Q (model pouze stavebních částí budovy bez detailního vnitřního vybavení), ve kterém je možno se pohybovat jako ve skutečné (reálné) budově, čili otevírat dveře, vstupovat do místností a běhat po schodech. Model je vyvinut tak, aby byl neustále aktuální. Všechny rozvrhy učeben a poslucháren, umístěné vedle dveří, jsou získávány pomocí propojení modelu s Univerzitním informačním systémem a tím je zajištěna aktuálnost těchto informací. Model budovy pro virtuální prohlídku trpí několika nedostatky.I když byla projevena snaha dbát na omezení při vytváření virtuálního světa, která jsou dána technickými požadavky na zobrazení virtuálních scén, přesto načtení výsledné scény trvá několik sekund (u pomalejšího internetového připojení i několik minut), a model po vykreslení zabírá značnou část operační paměti počítače. Bylo by vhodné navázat na tuto bakalářskou práci prací diplomovou, ve které by byly hledány efektivnější metody optimalizace takto rozsáhlých virtuálních scén. Další vývoj této práce by mohl být zaměřen na vytvoření centrálního navigačního systému v budově Q.V rámci této práce byl vytvořen pouze virtuální průvodce, který dovede po zvolení učebny na navigační mapce provést návštěvníka od místa, kde je mapka umístěna až ke dveřím učebny. Přínos práce se jeví zejména v návrhu řešení, jak vytvořit virtuální interaktivní model budovy, jímž se mohou studenti a další zájemci, kteří se touto problematikou zabývají, inspirovat při vlastní tvorbě virtuálních světů, a také mohou využít vytvořené knihovny objektů z této práce (například univerzální funkci na otevírání dveří ve scéně). Univerzita také získá další nástroj k reprezentaci. Získá trojrozměrný model budovy, který může sloužit novým studentům nebo zájemcům o studium na PEF MZLU v Brně k prohlídce prostorů, ve kterých budou trávit studium.
5
5
LITERATURA
34
Literatura
Ames, A. a kol.The VRML 2.0 sourcebook 2. vyd. New York: Wiley, 1997. 654 s. ISBN 0-471-16507-7. Bell, R a kol.The annotated VRML 2.0 reference manual 2. vyd. The United States: Addison Wesley Longman, 1997. ISBN 0-201-41974-2. Černohorský, D. a kol.Výukové pásmo VRML [online]. 2007. [cit. 2009-05-07]. Dostupné na internetu: http://www.cgg.cvut.cz/members/zara/vyuka/vrml/tutorial/pasmo/. ISO/IEC 14772-1 Information Technology – Virtual Reality Modelling Language (VRML) International standard ISO/IEC, 1997. ISO/IEC 19775 Information Technology – Extensible 3d (X3D) Draft international standard ISO/IEC, 2003. Tišnovský, P.VRML: jazyk pro popis virtuální reality [online]. 2007. [cit. 2009-0504]. Dostupné na internetu: http://www.root.cz/clanky/vrml-jazyk-pro-popisvirtualni-reality/. Wikipedie – Otevřená encyklopedie [online] [cit. 2009-05-07] Dostupné na internetu: http://www.wikipedia.cz/. Žára, J.VRML 97 Laskavý průvodce virtuálními světy 1. vyd. Brno: Computer Press, 2000. 250 s. ISBN 80-722-6143-6. Žára, J. a kol.Moderní počítačová grafika 2. vyd. Brno: Computer Press, 2005. 612 s. ISBN 80-251-0454-0. Žára, J.Přednášky k předmětu Virtual Reality [online]. 2007. [cit. 2009-05-07]. Dostupné na internetu: http://www.cgg.cvut.cz/members/zara/PGR012/.
Přílohy
A
A
36
VÝVOJOVÁ PROSTŘEDÍ
Vývojová prostředí
Obr. 13: VrmlPad
A
37
VÝVOJOVÁ PROSTŘEDÍ
Obr. 14: CosmoWorld
Obr. 15: Rhinoceros
B
B
38
BUDOVA Q
Budova Q
Obr. 16: Pohled 1
Obr. 17: Pohled 2
B
39
BUDOVA Q
Obr. 18: Pohled 3
Obr. 19: Pohled 4