České vysoké učení technické v Praze Fakulta elektrotechnická
Bakalářská práce
Interaktivní model laboratoře RDC Martin Svatek
Vedoucí práce: Mgr. Jiří Danihelka Studijní program: Softwarové technologie a management Obor: Web a multimédia 2010
Poděkování Na tomto místě bych rád poděkoval vedoucímu bakalářské práce Mgr. Jiřímu Danihelkovi, za užitečné informace a pomoc při vypracování bakalářské práce.
Prohlášení Prohlašuji, že jsem svou bakalářskou práci napsal samostatně s použitím citovaných pramenů. Souhlasím se zapůjčováním práce a jejím zveřejňováním.
V Praze dne 28. 5. 2010
….............................................
Abstrakt Práce se zabývá modelováním virtuálního 3D modelu laboratoře RDC. První část práce obsahuje rychlé seznámení s vytvářením modelů ve VRML a úrovně detailu(LOD). Druhou částí práce je seznámení s modelem RDC laboratoře. Včetně jednotlivých projektů, které se v této laboratoři vytvořily. Další část popisuje LOD a skriptování. Cílem práce je především vytvořit interaktivní model, který by uživatele seznámil s zařízením a projekty RDC laboratoře.
Abstract This bachelor’s thesis deals with the virtual 3D model’s simulation of the laboratory RDC. The first part of the thesis involves a brief familiarization with the creation of the model in VRML and the levels of the detail (LOD). The second part presents the model of the RDC laboratory including the individual projects having been created there. The next part describes LOD and the script. The aim of the thesis is to create an interactive model, which would familiarize users with the equipment and projects of the RDC laboratory.
Obsah 1. Úvod..............................................................................................................................1 2. Úvod do VRML.............................................................................................................5 2.1 Struktura VRML souboru.........................................................................................5 2.2 Shape Node.............................................................................................................5 2.3 Geometry Nodes.....................................................................................................6 2.3.1 Box...................................................................................................................7 2.3.2 Sphere..............................................................................................................7 2.3.3 Cone.................................................................................................................7 2.3.4 Cylinder............................................................................................................8 2.3.5 PointSet............................................................................................................8 2.3.6 IndexedLineSet................................................................................................9 2.3.7 Text...................................................................................................................9 2.4 Appearance.............................................................................................................9 2.4.1 Materiál...........................................................................................................10 2.4.2 Image Texture.................................................................................................11 2.5 Světla.....................................................................................................................13 2.5.1 Odrazy světla.................................................................................................14 2.5.2 Stíny ..............................................................................................................14 2.5.3 Directional Light.............................................................................................15 2.5.4 Point Light......................................................................................................15 2.5.5 Spot Light.......................................................................................................17 2.6 Hierarchické struktury............................................................................................18 2.6.1 Group.............................................................................................................19 2.6.2 Transform.......................................................................................................20 2.6.3 Switch.............................................................................................................21 2.7 Importování souborů.............................................................................................21 2.8. Definovací a instanční uzly...................................................................................22 2.9 LOD.......................................................................................................................23 3. Laboratoř RDC...........................................................................................................27 3.1 Místnosti................................................................................................................27 3.2 LOD.......................................................................................................................28 3.3 Projekty RDC laboratoře.......................................................................................28 3.3.1 SS7Tracker....................................................................................................28 3.3.2 Voice2Web.....................................................................................................29 3.3.3 3D mobile internet..........................................................................................29 3.3.4 WiMate...........................................................................................................29 3.4 Interaktivnost RDC laboratoře...............................................................................30 4. Závěr...........................................................................................................................31 4.1 Přínos práce..........................................................................................................31 4.2 Budoucí využití práce............................................................................................31 4.3 Ukázky práce.........................................................................................................31 4.3 Posouzení splnění zadání práce...........................................................................34 4.5 Snímková rychlost modelu....................................................................................35 5. Obsah přiloženého CD..............................................................................................37 6. Literatura....................................................................................................................39
1. Úvod Tato práce navazuje na již vzniklou práci v minulých letech. Důvodem vzniku této práce byl nápad o rozšíření a upravení existujícího modelu RDC laboratoře. Stávající model byl celý vytvořen v programu 3D Max a následně vyexportován do VRML formátu, aby se mohl použít pro webové rozhraní. Prvotní cíl této práce bylo upravit stávající kód. Bylo ho potřeba rozdělit do více souborů, aby došlo k oddělení vymodelovaných místností. Toto bylo nutné udělat pro jednodušší implementaci skriptů, které zajistí rychlejší chod aplikace. Hlavním bodem této práce bylo doplnit existující 3D model o nové místnosti. Dalším úkolem bylo doplnit svět interaktivními ukázkami a informacemi o projektech RDC laboratoře. Existující model obsahoval učebnu, velkou a malou servrovnu. Na následujících obrázcích je zobrazena RDC laboratoř v prvotní fázi práce.
Obr. 1.1 – Učebna
1
Obr. 1.2 – Malá servrovna
Obr. 1.3 – Velká servrovna
Existující model obsahoval mnoho chyb. Chyběly textury na dveřích, některé zdi problikávaly skrz jiné a některé použité textury byly špatně viditelné. Hlavní problém byl, že RDC laboratoř se změnila a model musel být tedy upraven tak, aby odpovídal skutečnosti. V následujících obrázcích jsou vidět chyby, které bylo nutno opravit.
Obr. 1.4 – Pravá strana dveří proniká zdí
2
Obr. 1.5. - Ukázka špatné textury
Nový model bude obsahovat, kromě již existujících, tří nové místnosti. Jedná se o ředitelnu, místnost doktorandů a chodbu. Dále bude obohacen o úrovně detailu(LOD). LOD má na starost vykreslování modelů poblíž avatara, tzn. že okolní místnosti které jsou za zdí se nevykreslí. Tím by se měl zrychlit průběh samostatné aplikace. Model bude doplněn i interaktivními ukázkami jednotlivých projektů, které zde byly vytvořeny. V první kapitole je stručný úvod do VRML, ve kterém jsou vysvětleny jednotlivé uzly(shape, transform, geometry, light), které byly v práci použity. Obsahuje také ukázky syntaxe jednotlivých uzlů. Základem další kapitoly je vysvětlení postupů, při vytváření a upravě 3D modelu. Součástí jsou i obrázky popsaných místností a vzdálenosti LOD. V této části se nachází také ukázka skriptování, která byla použita při tvorbě interaktivnosti v modelu.
3
4
2. Úvod do VRML VRML (Virtual Reality Modeling Language) je grafický formát založený na deklarativním programovacím jazyce, který byl navržen především pro popis trojrozměrných scén obsahujících aktivní i pasivní objekty, použité například v aplikacích virtuální reality. Nejedná se o jediný formát (či jazyk) této kategorie, dnes se například poměrně razantním způsobem prosazuje formát X3D, který lze chápat jako ideového nástupce VRML a v minulosti si prakticky každá firma vytvářející 3D aplikace navrhla vlastní formát, ovšem doposud se z grafických formátů a deklarativních jazyků určených pro popis virtuální reality nejvíce rozšířil právě jazyk VRML. Zvýrazněný text byl převzat z [4].
2.1 Struktura VRML souboru VRML soubor začíná vždy hlavičkou „#VRML V2.0 utf8“. Identifikátor utf8, který je v hlavičce, umožňuje používání mezinárodních znaků ve VRML modelech. Poznámky začínají #. Všechny znaky v tomto řádku budou ignorovány. Po hlavičce následuje už samotný kód modelu.
2.2 Shape Node Všechny viditelné objekty jsou definovány uvnitř uzlu Shape. Tato část má dvě pole. První je apperance a druhé je geometry. Apperance specifikuje barvu a textury, které se použijí. Geometry udává jaky tvar bude vykreslen. Pole apperance je dobrovolné. Když se nechá prázdné tak se použijí předdefinované hodnoty. Syntaxe: Shape { apperance NULL geometry NULL }
5
2.3 Geometry Nodes Jsou definovány do dvou kategorií. První je primitive shapes a druhá advanced shapes. Primitive shapes definují běžné grafické objekty a specifikující jejich geometrické vlastnosti. Advanced shapes definují grafické objekty skládajících se z ploch, čar nebo bodů. Tyto uzly jsou součástí vymodelovaných objektů. Spojením několika uzlů nebo vytvarováním jednoho nebo více uzlů, mohou vzniknout složitější objekty. Na obrázku jsou uvedeny modely, které byly použity při tvorbě laboratoře a vycházejí z uvedených geometrických uzlů.
Obr. 2.1 – Místnost doktorandů
Obr. 2.2 – Rohový stůl
6
2.3.1 Box Box definuje rovnoběžný hranol, který umožňuje specifikovat jeho šířku, výšku a hloubku. Obsahuje pole zvané size, které má 3 hodnoty. Předdefinované hodnoty jsou použity, pokud toto pole zůstane prázdné. Syntaxe: Box { size 2.0 2.0 2.0 }
Střed hranolu je v bodu (0,0,0) lokálního souřadnicového systému.
2.3.2 Sphere Obsahuje jedno pole, které umožňuje specifikovat poloměr. Toto pole je dobrovolné, pokud zůstane prázdné, použijí se předdefinované hodnoty. Syntaxe: Sphere { radius 1.0 }
Střed kruhu je v bodu (0,0,0) lokálního souřadnicového systému.
2.3.3 Cone Zde se specifikuje nejen výška a poloměr, ale i část kterou chcete vykreslit. Obsahuje čtyři pole: bottomRadius, height, side, bottom. BottomRadius a height definují geometrické vlastnosti kužele. Tyto hodnoty musí být větší jak nula. Side a bottom specifikují části kužele, které se vykreslí. Tyto dvě pole používají boolean hodnoty. Všechny hodnoty polí jsou dobrovolné. Předdefinované hodnoty se použijí, pokud pole nejsou specifikována. Střed kužele je v bodu (0,0,0) lokálního souřadnicového systému.
7
Syntaxe: Cone{ bottomRadius 1.0 height 2.0 side TRUE bottom TRUE }
2.3.4 Cylinder Má
podobné
vlastnosti
jako
kužel(Cone).
Používá
se
tu
pět
polí.
Radius, height, side, bottom a top. Radius a height definují geometrické vlastnosti válce. Hodnoty musí být větší jak nula. Side, bottom a top specifikují, která část válce bude vykreslena. Tyto tři pole používají boolean hodnoty. Všechny hodnoty polí jsou dobrovolné. Použijí se přednastavené hodnoty. Střed válce je v bodě (0,0,0) lokálního souřadnicového systému.
Syntaxe: Cylinder { radius 1.0 height 2.0 side FALSE bottom TRUE top FALSE }
2.3.5 PointSet PointSet specifikuje nastavení 3D bodů v lokálním souřadnicovém systému a přiřazuje jim barvy. Jsou zde dvě pole. První je color a druhé coord. Color definuje barvu a coord pole specifikuje souřadnice. Pole color je dobrovolné. Doplní se předdefinované hodnoty pokud není nastaveno. Přednastavená hodnota vyzařující barvy a pozadí je černá. Takže pokud nebude definována barva a bude použita předdefinovaná barva tak nebudou vidět body. 8
2.3.6 IndexedLineSet IndexedLine specifikuje nastavení tak zvaných polylines v lokálním souřadnicovém systému a přiřazuje jim barvu. Obsahuje 5 polí. Coord, coordIndex, color, colorIndex a colorPerVertex. Pole coord specifikuje souřadnice. Pole color definuje barvu. CoordIndex specifikuje list indexů souřadnic definující vykreslení polylines. K rozdělení jednotlivých indexů polyline se používá mezera. K rozdělení indexů přilehlých dvou polyline se používá ukazatel -1. Index -1 značí konec aktuální polyline a začátek další. ColorIndex je naprosto podobný jako coordIndex, akorát se jedná o barvy. ColorPerVertex je boolean pole, které definuje jak se barvy použijí.
2.3.7 Text Text umožňuje zobrazení řetězce znaků ve světě VRML. Používá tyto pole: •
String obsahuje text, který bude zobrazen. Toto pole umožňuje jednu nebo více řádků textu.
•
FontStyle specifikuje, jak je text reprezentován.
•
Length specifikuje délku řetězce znaků ve VRML.
•
MaxLenght
2.4 Appearance Definuje jak bude vypadat geometrie. Může být definován jen uvnitř Shape. Pole, které se používají jsou: material, texture a textureTransform. Všechny pole jsou dobrovolné (jsou přednastaveny hodnoty). Pole material obsahuje materiály. Specifikuje se tu barva přiřazené geometrie a také, jak se bude odrážet světlo. Pole texture obsahuje jednu z textur. Většinou se jedná o ImageTexture, MovieTexture nebo PixelTexture. Jestliže toto pole není definováno nebo chybí, nepřipojí se žádné textury. TextureTransform specifikuje jak se textura aplikuje na geometrii.
9
Syntaxe: Shape { appearance Appearance { material NULL texture NULL textureTransform NULL } }
2.4.1 Materiál Materiál určuje barvu, odraz světla a transparentnost. Tento uzel může být definován pouze uvnitř uzlu Apperance. Obsahuje šest polí: diffuseColor, emissiveColor, ambientIntensity, shininess, specularColor a transparency. •
DiffuseColor pole definuje barvu geometrie. Toto pole je ignorováno při použití barevných textur.
•
EmissiveColor se používá k definování zářících objektů.
•
AmbientIntensity pole určuje množství světla odraženého od geometrie.
•
SpecularColor pole definuje lesklé barvy bodů geometrie.
•
Shininess kontroluje intenzitu záře pro lesklé body.
•
Transparency kontroluje transparentnost spojené geometrie.
Syntaxe: { diffuseColor 0.8 0.8 0.8 ambientIntensity 0.2 emissiveColor 0.0 0.0 0.0 specularColor 0.0 0.0 0.0 shininess 0.2 transparency 0.0 }
10
2.4.2 Image Texture Definuje umístění obrázku, který má být použit pro texturování modelu. Specifikují se tu i vlastnosti textur. V tomto uzlu jsou přítomny následující pole: •
URL, které určuje umístění obrázku. Platný formáty obrázků jsou JPEG, GIF a PNG.
•
RepeatS určuje, zda se obrázek opakuje vertikálně.
•
RepeatT určuje, zda se obrázek opakuje horizontálně.
Všechna pole jsou nepovinná, výchozí hodnoty jsou použity v případě, že pole není zadáno. Syntaxe: ImageTexture { url [ ] repeatS TRUE repeatT TRUE }
ImageTexture byla použita pro vytváření plakátů, dřevěného povrchu stolů a elektroniky. Na obrázcích jsou ukázky modelů s texturou, které byly vytvořeny v průběhu práce.
Obr. 2.3 – Plakáty
11
Obr. 2.4. - Skříně
Obr. 2.5. - Chodba
12
2.5 Světla Světlo je vytvořeno v prohlížeči a je připojeno k současnému pohledu. Toto světlo vždy ukazuje na místo, které si prohlížíte. Je to jako, kdyby jste měli světlo připojeno k hlavě. Toto světlo je možné zapnout nebo vypnout pomocí prohlížeče nebo pomocí NavigationInfo. VRML podporuje tři další typy osvětlení. Jsou to: •
Directional Light
•
Point Light
•
Spot Light
Při použití Directional Light světelné paprsky jsou rovnoběžné. Toto světlo nemá žádné vymezené místo, pouze směr. Je to, jako by světlo bylo daleko od svého světa. Point Light je světlo, které rozjasní všechno kolem sebe, světelné paprsky jdou ve všech směrech. Spot Light vytváří kužel světla. V této práci byly použity Point Light. Každá místnost má minimálně jedno světlo. Na prvním obrázku je vidět osvětlená laboratoř světlem s malou intenzitou. Na druhém obrázku je laboratoř při plném osvětlení.
Obr. 2.6 – Světlo s malou intenzitou
13
Obr. 2.7 – Plné osvětlení
2.5.1 Odrazy světla Objekt může odrážet paprsky světla v závislosti na jeho barvě nebo barvě světla. Odraz světla závisí na vlastnostech osvětleného objektu. Nicméně vypočtení odrazu světla je tvrdá práce. Proto se ve VRML nepoužívají odražená světla. K dispozici je jen přímé světlo. To znamená, že pokud objekt není v cestě světelných paprsků z některého světla umístěného ve vašem světě, zůstane neosvětlen. Náhrada za světelné odrazy světla jsou ve VRML světla, která mají pole ambientIntensity. Toto pole určuje, jak moc světlo přispívá k celkovému osvětlení. Čím větší hodnotu toto pole bude mít, tím svět bude jasnější.
2.5.2 Stíny Stíny neexistují ve VRML. Výpočetní zátěž pro výpočet stínů je příliš těžká pro zobrazení 3D grafiky za chodu. Mohou se vytvořit ručně, nicméně tento přístup není realistický.
14
2.5.3 Directional Light Přímá světla definují zdroj světla, který je umístěn velmi daleko od vašeho světa. Světelné paprsky jsou rovnoběžné s daným směrem. Pole direction určuje vektor v 3D, podle kterého jsou světelné paprsky rovnoběžné. Toto světlo by mělo ovlivnit pouze uzly, které jsou definovány v rámci stejné skupiny, tj. objekty umístěné mimo skupinu, kde je definován direction light, se nerozsvítí. Následující pole jsou přítomny v tomto uzlu: •
on určuje, zda je světlo aktivní. Je to boolean pole.
•
intensity má hodnoty mezi 0,0 a 1,0. Vyšší hodnoty specifikují silnější světla.
•
ambientIntensity určuje, jak moc světlo přispívá k celkovému osvětlení. Hodnoty musí být mezi 0,0 a 1,0.
•
color je pole RGB, které specifikuje barvu světla.
•
direction určuje vektor v 3D. Světelné paprsky jsou rovnoběžné s tímto vektorem.
Syntaxe: DirectionalLight { on TRUE intensity 1 ambientIntensity 0 color 1 1 1 direction 0 0 -1 }
2.5.4 Point Light Bodová světla definují zdroj světla na specifickém místě. Světelné paprsky z tohoto typu světla se šíří ve všech směrech. To znamená, že, na rozdíl od směrových světel, bodová světla mají pole location, ale ne pole direction. Toto světlo osvítí všechny uzly bez ohledu na jejich pozici v souboru. Existuje však způsob, jak omezit objem, který se osvítí tímto světlem. Lze určit poloměr, který určuje 15
maximální vzdálenost šíření paprsků. Objekty, které jsou dál od zdroje světla, než je poloměr nejsou osvětleny světelným zdrojem. Existuje ještě jiný způsob, jak kontrolovat útlum v oblasti vymezené poloměrem. Použitím pole attenuation lze určit, jak se intenzita světla sníží s rostoucí vzdáleností, v oblasti vymezené poloměrem. Následující pole jsou přítomny v tomto uzlu: •
on určuje, zda je světlo aktivní. Je to boolean pole.
•
intensity má hodnoty mezi 0,0 a 1,0. Vyšší hodnoty specifikují silnější světla.
•
ambientIntensity určuje, jak moc světlo přispívá k celkovému osvětlení. Hodnoty musí být mezi 0,0 a 1,0.
•
color je pole RGB, které specifikuje barvu světla.
•
location určuje vektor v 3D, který definuje souřadnice světla ve světě.
•
attenuation je 3D vektor, který určuje, jak světla ztrácí svou intenzitu se vzrůstající vzdáleností od zdroje světla. Všechny hodnoty vektoru musí být větší nebo rovna nule.
•
radius určuje maximální vzdálenost cesty světelných paprsků. Musí být větší nebo rovna nule.
Syntaxe: PointLight { on TRUE intensity 1 ambientIntensity 0 color 1 1 1 location 0 0 0 attenuation 1 0 0 radius 100 }
16
2.5.5 Spot Light Spot light definuje zdroj světla na specifickém místě osvětlující svět v konkrétním směru. Světelné paprsky z tohoto typu světla jsou omezeny na vnitřek kužele, kužel se na vrcholu shoduje s umístěním světla. Kužel světla je definován dvěma poli: cutOffAngle a beamWidth. CutOffAngle definuje úhel kužele v radiánech. BeamWidth definuje úhel vnitřního kužele, ve kterém je intenzita světla konstantní. Světelné paprsky, které spadají mezi vnitřní a vnější kužel, mají klesající intenzitu světla z vnitřního do vnějšího kužele. Pokud beamWidth je větší než cutOffAngle pak světlo má konstantní intenzitu uvnitř kužele. Spot Light osvětluje všechny uzly bez ohledu na jejich pozici v souboru. Existuje však způsob, jak omezit objem, kterým je scéna osvětlena. Také lze určit vzdálenost paprsků pomocí poloměru, který určuje maximální vzdálenost dopadajících paprsků. Objekty, které jsou dál od zdroje světla, než poloměr, nebo leží mimo vnější kužel nejsou osvětleny světelným zdrojem. Existuje ještě jiný způsob, jak kontrolovat útlum v oblasti vymezené poloměrem. Použitím pole attenuation lze určit, jak se intenzita světla sníží s rostoucí vzdáleností, v oblasti vymezené poloměrem. Následující pole jsou přítomny v tomto uzlu: •
on určuje, zda je světlo aktivní. Je to boolean pole.
•
intensity má hodnoty mezi 0,0 a 1,0. Vyšší hodnoty specifikují silnější světla.
•
ambientIntensity určuje, jak moc světlo přispívá k celkovému osvětlení. Hodnoty musí být mezi 0,0 a 1,0.
•
color je pole RGB, které specifikuje barvu světla.
•
location určuje vektor v 3D, který definuje souřadnice světla ve světě.
•
direction určuje vektor v 3D definující směr paprsků.
•
attenuation je 3D vektor, který určuje, jak světla ztrácí svou intenzitu se vzrůstající vzdáleností od zdroje světla. Všechny hodnoty vektoru musí být větší nebo rovna nule.
•
radius určuje maximální vzdálenost cesty světelných paprsků. Musí být větší nebo rovna nule.
•
CutOffAngle určuje kužel, ve kterém jsou omezeny světelné paprsky. Musí být větší nebo roven nule, a menší nebo roven 180°. 17
•
BeamWidth specifikuje vnitřní kužel, ve kterém světelné paprsky mají jednotnou intenzitu. Musí být větší nebo roven nule, a menší nebo roven 180°.
Syntaxe: SpotLight { on TRUE intensity 1 ambientIntensity 0 color 1 1 1 location 0 0 0 direction 0 0 0 radius 100 cutOffAngle 0.78 beamWidth 1.57 }
2.6 Hierarchické struktury Sada uzlů může být definována jako skupina ve VRML. Následující seskupení jsou k dispozici ve VRML: •
Anchor definuje složitý tvar, postavený s použitím sady tvarů, jako hypertextový odkaz na jiný svět VRML, na stránku HTML, nebo jakékoli jiné údaje, které váš prohlížeč umí číst.
•
Billboard upřesňuje soubor uzlů, které jsou vždy natočeny k vám bez ohledu na pozici.
•
Collision definuje množiny uzlů, na které by měl být prohlížeč upozorněn při kolizi.
•
Group definuje nový uzel složený z množiny uzlů, takže se může znovu použít později bez opakování sady uzlů.
•
Switch definuje množiny uzlů, ve kterých je nanejvýše jeden z uzlů vykreslen.
•
Transform definuje nový souřadný systém tak, že objekty mohou být umístěny na jiném místě. 18
2.6.1 Group Group umožňuje brát více uzlů jako jednu entitu. Používají se následující pole: •
children obsahuje všechny uzly zahrnuté ve skupině.
•
BboxCenter určuje střed pole, které obklopuje uzly ve skupině. Hodnota v tomto poli je 3D bod.
•
BboxSize určuje, kdy je velikost pole, které obklopuje uzly ve skupině. Ve výchozím nastavení toto pole má hodnotu -1 -1 -1, což znamená, že žádný box není definován. Hodnoty pro toto pole musí být větší nebo rovny nule.
Poslední dvě pole jsou nepovinná. Mohou být použity v prohlížeči pro optimalizační účely. Syntaxe: Group{ children [] bboxCenter 0 0 0 bboxSize -1 -1 -1 }
Následující hierarchická struktura souboru VRML ilustruje scoping se skupinou uzlu: Group g1 { Shape A Directional Light 1 Group g2 { DirectionalLight 2 Shape B } }
Směrové světlo ve skupině 1 bude osvětlovat tvary A i B, protože směrové světlo osvětluje všechny uzly ve stejné skupině a podskupinách. Nicméně, směrové světlo ve skupině 2 bude osvětlovat pouze tvar B, protože tvar A je mimo skupinu.
19
2.6.2 Transform Transform je uzel seskupení. Může být použit pro definování sad uzlů jako jeden objekt. Nicméně to není hlavním účelem tohoto uzlu. Tento uzel umožňuje definovat nový lokální souřadnicový systém pro uzly v rámci skupiny. Tento uzel lze použít k provedení následujících geometrických transformací: •
Scale
•
Rotation
•
Translation
Všechny uzly v rámci skupiny jsou ovlivněny těmito transformacemi, tj. všechny souřadnice jsou vypočteny v místním souřadnicovém systému. Transformace skupiny uvnitř
skupiny hromadí transformace
uvedené
v každé
transformaci. Vnitřní
transformace skupiny definují lokální souřadný systém založený na systému souřadnic ve vnější skupině. Používají se následující pole: •
children obsahují všechny uzly zahrnuté ve skupině.
•
scale určuje 3D škálování transformace.
•
ScaleOrientation definuje rotace os pro škálování.
•
center definuje střed škálování.
•
rotation definuje rotace po libovolné ose.
•
translation definuje původ místního souřadnicového systému.
•
BboxCenter určuje střed pole, které obklopuje uzly ve skupině. Hodnota v tomto poli je 3D bod.
•
BboxSize určuje velikost pole, které obklopuje uzly ve skupině. Ve výchozím nastavení toto pole má hodnotu -1 -1 -1, což znamená, že žádný box není definován. Hodnoty pro toto pole musí být větší nebo rovny nule.
20
Syntaxe: Transform { scale 1 1 1 scaleOrientation 0 0 1 0 center 0 0 0 rotation 0 0 1 0 translation 0 0 0 bboxCenter 0 0 0 bboxSize -1 -1 -1 children [] }
2.6.3 Switch Uzel Switch je vlastně sdružení uzlů s rozdílem. WhichChoice pole určuje index dítěte, které je třeba. Pokud whichChoice je -1 pak děti budou ignorovány. Jedním z možných využití tohoto uzlu je, že můžeme mít různé verze daného tvaru uvnitř uzlu Switch. Nastavení whichChoice poskytuje rychlý způsob, jak měnit objekty. Dalším
dobrým
použitím
tohoto
uzlu
je
nastavení
definice
tak
aby
nic
nevybrala, whichChoice nastavena na -1. Syntaxe: Switch { whichChoice -1 choice [ ] }
2.7 Importování souborů Ve VRML můžete rozdělit váš svět do více souborů. Zjednoduší to strukturu kódu a umožňuje opětovné použití částí kódů uložených v jiném souboru. Například můžete mít soubor okno.wrl, ve kterém máte vymodelované okno. A pak tento soubor použít v jiném souboru. Uzel Inline vám umožní zadat adresu URL, kde lze data získat. URL musí 21
obsahovat platné a kompletní jméno VRML souboru včetně hlavičky. Používají se následující pole: •
URL umožňuje určit umístění souboru, který má být použit. Můžete zadat více míst, pak bude prohlížeč hledat data v těchto lokalitách v sestupném pořadí podle preference.
•
BboxCenter určuje středu pole, které obklopuje uzly v inline souboru. Hodnota v tomto poli je 3D bod.
•
BboxSize určuje velikost pole, které obklopuje uzly v inline souboru. Ve výchozím nastavení toto pole má hodnotu -1 -1 -1, což znamená, že žádný box není definován. Hodnoty pro toto pole musí být větší nebo rovny nule.
Poslední dvě pole jsou nepovinná. Mohou být použity v prohlížeči pro optimalizační účely. Syntaxe: Inline { url [] bboxCenter 0 0 0 bboxSize -1 -1 -1 }
2.8. Definovací a instanční uzly VRML umožňuje definovat sadu uzlů, nebo uzel z určité oblasti hodnot, jako nový uzel. Předpokládejme, že chcete navrhnout soubor tvarů, které mají stejný vzhled. Existují dva způsoby. Prvním je opakováním uzlu Appearance pro každý tvar. Druhý způsob je, že se nadefinuje společný vzhled jako nový uzel. Druhý přístup je snazší, protože nemusíme přepisovat definovaný uzel znovu a znovu, ale také zaručuje, že tvary mají stejný vzhled. Hlavní výhoda je, že pokud budete chtít změnit tento uzel. Stačí upravit jen uzel, který byl nadefinován a změna se provede pro všechny ostatní. Používají se dvě klíčová slova jsou: DEF a USE.
22
Syntaxe: { DEF jméno uzlu }
Kde uzel je některý z uzlů VRML, a jméno je identifikátor nového uzlu. Syntaxe: { DEF jméno uzlu }
Kde jméno je identifikátor, který byl již dříve definován pomocí DEF.
2.9 LOD LOD je zkratka pro úroveň podrobnosti. Tento uzel umožňuje zadat alternativní reprezentace grafických objektů, a vzdálenosti použití jednotlivých zastoupení. Používají se následující pole: •
level specifikuje soubor alternativních reprezentací grafických objektů.
•
center určuje 3D bod, od kterého je vzdálenost počítána.
•
range
specifikuje
soubor
vzdáleností.
Musí
mít
stanovených
N
vzdáleností, jestliže má specifikovaných N+1 úrovní. Tento uzel může mít zásadní vliv na výkon prohlížeče, proto se jeho role nepodceňuje. Uzel LOD může být použit v následujícím způsobem: •
V případě, že se uživatel nachází v blízkosti objektu vykreslí nejdetailnější objekt.
•
Když uživatel není blízko, ale ještě ne daleko. Vykreslí se méně detailní objekt.
•
Když je uživatel velmi daleko. Vykreslí pouze hrubou verzi objektu.
Volbou vhodné úrovně detailu se zrychlí chod dané aplikace. Když je objekt daleko 23
od uživatele tak nevnímáme skoro žádný rozdíl mezi detailním a hrubým modelem. Můžeme zadat libovolný počet úrovní detailu, jak potřebujete. Uživatel by se měl hlavně pokusit, aby se změna jednotlivých úrovní detailu neprojevila na rychlosti aplikace. LOD
lze
také
použít,
neviditelné, například
v
aby
jiné
se
zabránilo
místnosti.
V
vykreslení
tomto
objekt, například tvar bez geometrie. Příklad: LOD { range [20,40] level [ #full detail 16 sided cone Shape{ appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0 } } geometry Extrusion{ crossSection [ -1 0, 0 0, -1 -2 -1 0] spine [1 0 0 , 0.866 0 0.5, 0.5 0 0.866, 0 0 1 , -0.5 0 0.866, -0.866 0 0.5, -1 0 0, -0.866 0 -0.5, -0.5 0 -0.866, 0 0 -1 , 0.5 0 -0.866, 0.866 0 -0.5, 1 0 0 ] } } #intermediate detail 8 sided cone Shape{ appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0 } } geometry Extrusion{ crossSection [ -1 0, 0 0, -1 -2 -1 0] spine [1 0 0 , 0.707 0 0.707 ,
24
případě
objektů, lze
které
určit
jsou
prázdný
0 0 1 , -0.707 0 0.707, -1 0 0,-0.707 0 -0.707, 0 0 -1 , 0.707 0 -0.707, 1 0 0 ] } } #low detail 4 sided cone Shape{ appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0 } } geometry Extrusion{ crossSection [ -1 0, 0 0, -1 -2 -1 0] spine [1 0 0 , 0 0 1, -1 0 0, 0 0 -1 , 1 0 0 ] } } ] }
25
26
3. Laboratoř RDC Vodafone společně s dvěma dalšími společnostmi (Ericsson a České vysoké učení technické v Praze) založil v únoru 2001 Výzkumné a vývojové centrum (Research & Development Center) - RDC. Vodafone vybavil centrum GSM technologií od společnosti Ericsson, ČVUT poskytlo své prostory, a vzniku "4. GSM operátora" tak již nic nebránilo. Tato laboratoř poskytuje kvalitní výzkumné, vývojové a vzdělávací činnosti v oblasti bezdrátových služeb. Výzkumné a vývojové centrum nabízí standardizované interní procesy pro tvorbu, vývoj, testování a hodnocení produktů a služeb. Cílem centra je vytvořit, udržovat a rozvíjet komunitu lidí se společným technickým zájmem, která získá možnost dalšího vzdělávání a zapojí se do národních a mezinárodních projektů a aktivit. Pro realizaci projektů a grantů v rámci Centra je k dispozici plně funkční síť GSM. Díky ní mohou v centru probíhat zajímavé analýzy a testy, v poslední době například unikátní projekt zabývající se signalizací sítě GSM. Zvýrazněný text byl převzat z [5].
3.1 Místnosti RDC
laboratoř
je
rozdělena
do
dvou
částí.
V
první
části
je
učebna, ředitelna, servrovny. Druhá část se skládá z chodby a místnosti doktorandů. V mé práci jsem upravil první část a vymodeloval chodbu, kancelář v druhé části. Na obrázku níže je vidět, kde se jednotlivé vymodelované místnosti nacházejí.
Obr. 3.1 – RDC místnosti
27
3.2 LOD 3D model je vybaven LOD, aby se zbytečně nevykreslovaly místnosti, ve kterých uživatel není. Každá místnost má nastavenou vzdálenost, do které se ještě zobrazí. Následující obrázek zobrazuje vzdálenosti jednotlivých místností. Jednotlivé šipky znázorňují kam až sahají vzdálenosti LOD od 3D bodu.
Obr. 3.2 – LOD vzdálenosti
3.3 Projekty RDC laboratoře
3.3.1 SS7Tracker Projekt SS7Tracker vznikl jako projekt vývoje aktivní monitorovací platformy na straně sítě za účelem zlepšení roamingového provozu v síti GSM. Modulární architektura klient-server využívá SS7 signalizace pro zjišťování asociované buňky účastníka v reálném čase. To slouží ke statistické analýze výkonu a pokrytí GSM sítě. Rozšiřitelnost a modularita platformy inspiruje navazující projekty z oblastí Location Based Services, marketingu založeném na geografické poloze příjemců reklamy, a řady dalších. Také vzrůstající zájem o časové a prostorové informace pohybu účastníků pro urbanistické a sociologické účely motivuje další vývoj této platformy. Zvýrazněný text byl převzat z [2]. 28
3.3.2 Voice2Web Projekt Voice2Web zkoumá hlasovou interakci mezi člověkem, počítačem a webem. Součástí výzkumu je vývoj hlasových aplikací s využitím nejnovějších standardů v oblasti telekomunikací (VoiceXML, CCXML). Mezi dosavadní úspěchy patří vývoj hlasových aplikací poskytující informace o aktuálním stavu počasí v Evropských destinacích (viz níže), informace o institucích (ČVUT a RDC) a další aplikace poskytující různé služby, například Virtuální Mexická Restaurace. Zvýrazněný text byl převzat z [2].
3.3.3 3D mobile internet Projekt se skládá z rozličných témat z mobilní počítačové grafiky a virtuální reality. Cílem je vytvořit technologie pro uživatelsky přívětivé 3D světy na Internetu, které půjdou prohlížet na všech zařízeních. V současné době se vytváří mluvící hlava na mobilním telefonu. Pomocí syntézy a rozpoznání hlasu bude hlava schopná vést přirozený dialog s uživatelem. Zvýrazněný text byl převzat z [2].
3.3.4 WiMate Cílem projektu WiMATE (Wireless Mobile Applications TEstbed) je návrh testovací sítě pro vývoj bezdrátových mobilních aplikací, se zvláštním zaměřením na mobilitu účastníků. Projekt je zaměřen na vytvoření sítě založené na 3GPP LTE či Mobile WiMAX, která pokryje areál ČVUT. Dalším cílem je připojení se k evropskému projektu OneLab, který umožní výzkumné aktivity v celosvětovém měřítku. Vytvořená síť se bude skládat z desítek základnových stanic pracujících v pásmu 2.4–2.6GHz a vlastního CSN. Zvýrazněný text byl převzat z [2].
29
3.4 Interaktivnost RDC laboratoře Laboratoř je vybavena ukázkami jednotlivých projektů. Po celé laboratoři jsou rozmístěny plakáty, které při kliknutí zobrazí anotaci a odkaz na webové stránky s dalšími podrobnostmi o daném projektu. Toto bylo vytvořeno pomocí Head-up displaye(HUD) a javascriptem. Head-up display má za úkol vytvořit čtverec, který je umístěn dole uprostřed okna prohlížeče. Na tomto čtverci se zobrazuje text a odkaz na dané webové stránky. Celá tato funkce je založena na přidáváním a mazáním jednotlivých potomků pomocí skriptu. Syntaxe skriptu: DEF GenHUD Script { eventIn SFBool isActive eventOut MFNode child field MFNode node USE RedBox url ["javascript: function isActive(value) { if(value) child = node; }
"]}
Jsou zde vytvořeny dvě transformace, jedna je ve switch s whichchoice -1 a druhá je mimo switch. Důvod je takový, že právě druhé transformaci se bude přiřazovat potomek první transformace při zobrazování anotace a naopak při zavírání anotace. Na obrázku dole je vidět HUD s textem a odkazem na webové stránky.
Obr. 3.3 – Head-up Display
30
4. Závěr Existující model byl rozšířen a byla doplněna interaktivnost. Součástí modelu jsou i jednotlivé ukázky projektů, které byly v laboratoři vytvořeny. Model byl rozšířen o úrovně detailu(LOD – level of details), čímž se značně zrychlilo vykreslování jednotlivých scén a průběh samotné aplikace.
4.1 Přínos práce Přínos této práce lze spatřovat v umožnění prezentace jednotlivých projektů a zařízení laboratoře RDC, které nejsou běžně veřejně přístupné, zejména z důvodu umístění drahých elektronických zařízení v jednotlivých místnostech.
4.2 Budoucí využití práce V budoucnu lze model doplnit o další dvě dosud nevymodelované místnosti nebo o plakáty obsahující informace o nově vytvořených projektech. Dále je možnost využít skriptování místo LOD, tím by se práce poměrně zrychlila. Tuto práci lze použít i v existujícím 3D modelu ČVUT.
4.3 Ukázky práce V této části jsou uvedeny obrázky jednotlivých místností. Na prvních snímcích jsou vidět nově vytvořené místnosti laboratoře RDC. Další obrázky zobrazují změny, které byly provedeny v již zhotoveném modelu. Například v malé servrovně nebyly funkční posuvné dveře, za kterými byl umístěn argonit(obr. 4.6).
31
Obr. 4.1 – Chodba
Obr. 4.2 – Místnost doktorandů
Obr. 4.3 – Místnost doktorandů
32
Obr. 4.4 – Učebna před úpravou
Obr. 4.5 – Učebna po úpravě
Obr. 4.6. - Malá servrovna před úpravou
33
Obr. 4.6 – Malá servrovna po úpravě
4.3 Posouzení splnění zadání práce Zadání práce: „Doplňte existující model laboratoře RDC o dosud nevymodelované místnosti. Vytvořte virtuální model laboratoře RDC, který návštěvníky seznámí s principem fungování laboratoře a ukáže i nepřístupná místa s drahým telekomunikačním vybavením. Vymodelujte místnost, interiér a vybavení podle skutečnosti a doplňte svět interaktivními ukázkami a informacemi jak vybavení pracuje.“
Splněné požadavky: •
Přidání nových místností.
•
Vymodelování interiéru a vybavení.
•
Interaktivní ukázky projektů, vytvořených v laboratoři RDC.
Nad rámec požadavků byl model rozšířen: •
LOD
•
Vykreslování místností pomocí skriptů.
34
4.5 Snímková rychlost modelu Hardware: •
Toshiba Qosmio F50 – 108
•
Procesor: Core2Duo 2,26MHz
•
RAM: 3 072MB (DDR2 RAM – 800MHz)
•
Grafická karta: NVIDIA GeForce 9700M GTS
Místnost
FPS - pohyb
FPS – klidový stav
FPS – načítání místností
Chodba
56 – 70 fps
83 fps
30 – 40 fps
Místnost doktorandů
49 – 53 fps
83 fps
30 – 40 fps
Učebna
40 – 57 fps
83 fps
30 – 40 fps
Servrovna 1
46 – 50 fps
83 fps
38 – 40 fps
Servrovna 2
32 – 45 fps
83 fps
32 fps
Ředitelna
54 – 58 fps
83 fps
46 – 50 fps
35
36
5. Obsah přiloženého CD Na přiloženém CD je kromě tohoto dokumentu i vlastní model RDC laboratoře. Popis jednotlivých adresářů a některých souborů: • / (kořenový adresář) – Nova VirtualRDC_LOD – Model s LOD – Nova VirtualRDC_Script – Model s LOD a skriptováním – VirtualRDC – Dříve vytvořený model – Text • / Nova VirtualRDC_* – /audio – obsahuje zvuk otevírání dveří – /import – soubory potřebné k chodu aplikace – /single – jednotlivé soubory vymodelovaných částí práce – /maps – textury použité v modelu – VirtualRDC – hlavní VRML soubor • / VirtualRDC – /audio – obsahuje zvuk otevírání dveří – /original – obrázky místností zobrazovány přes webové rozhraní – /thumb – obrázky jednotlivých místností – /maps – textury použité v modelu – RDCcentrum* – verze modelu laboratoře • / Text – BP.pdf – tato bakalářská práce ve formátu PDF
37
38
6. Literatura [1] VRML tutorials [online]. 2001-04-21 [cit. 2010-05-15]. VRML Interactive Tutorial. Dostupné z WWW:
. [2] RDC Projekty [online]. 2003 [cit. 2010-05-21]. RDC. Dostupné z WWW:
. [3] Vymodelovaný 3D model RDC laboratoře. [4] Encyklopedie Wikipedia: VRML (Virtual Reality Modeling Language) (26.5.2010) http://cs.wikipedia.org/wiki/VRML [5] RDC [online]. 2003 [cit. 2010-05-21]. RDC. Dostupné z WWW:
.
39