Zadání
ii
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Diplomová práce
Müllerova vila - interaktivní procházka
Bc. Josef Suchý
Vedoucí práce: Prof. Ing. Žára Jiří, CSc.
Studijní program: Výpočetní technika - magisterský strukturovaný
Obor: Počítačová grafika
Květen 2011 iii
iv
Prohlášení Prohlašují, že jsem práci vypravoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 13.5.2011
…………………………
v
vi
Abstract The goal of this paper is to model the rough construction of the Müller Villa, focusing on the dynamic loading of different rooms according to the movement of the avatar and a guide for modeling structures of similar type.
Abstrakt Cílem práce je vymodelování hrubé stavby Müllerovy vily se zaměřením na dynamické načítání jednotlivých místností podle pohybu avatara a vytvoření návodu pro modelování staveb podobného typu.
vii
viii
Obsah 1.
Úvod ............................................................................................................. 1
2.
Cíl práce........................................................................................................ 1
3.
Historie Müllerovi vily ................................................................................. 3
4.
Analýza problému......................................................................................... 5
5.
6.
7.
4.1
VRML/X3D.......................................................................................... 5
4.2
Modelovací nástroje ............................................................................. 6
4.2.1.
Blender............................................................................................. 7
4.2.2.
3ds Max ........................................................................................... 8
4.2.3.
Maya ................................................................................................ 8
4.2.4.
VRML Pad....................................................................................... 9
4.2.5.
Chisel ............................................................................................. 10
4.2.6.
Shrnutí............................................................................................ 10
Návod pro modelování ............................................................................... 11 5.1
Stavební plány .................................................................................... 11
5.2
Fotografování ..................................................................................... 11
5.3
Vytváření textur v programu Photoshop ............................................ 13
5.3.1.
Odstranění lesklých ploch.............................................................. 13
5.3.2.
Zrcadlení ........................................................................................ 14
5.4
Modelování místností v programu Maya ........................................... 15
5.5
Texturování......................................................................................... 19
5.6
Export a následná úprava dat.............................................................. 19
5.7
Návrh prototypu.................................................................................. 20
5.8
Složení celého objektu........................................................................ 21
Realizace modelování Müllerovi vily ........................................................ 23 6.1
Plány ................................................................................................... 23
6.2
Rozdělení objektu na místnosti........................................................... 24
6.3
Textury ............................................................................................... 25
6.4
Modelování místností a texturování ................................................... 27
6.5
Export, úprava a skládání celku.......................................................... 33
6.6
Časová náročnost modelování ............................................................ 34
Dynamické načítání .................................................................................... 35 7.1
Datová struktura pro dynamické načítání........................................... 35 ix
7.2
Script dynamického načítání .............................................................. 38
7.3
Vytvoření tabulky 7.1 ......................................................................... 40
8.
Procházka.................................................................................................... 43
9.
Testování .................................................................................................... 47
10.
Závěr....................................................................................................... 51
11.
Literatura ................................................................................................ 53
Příloha A – Uživatelská příručka........................................................................ 55 Příloha B – Obsah přiloženého DVD ................................................................. 57 Příloha C – Mapy vily a rozdělení místností ...................................................... 59 Příloha D – Celá tabulka pro dynamické načítání .............................................. 65 Příloha E – Porovnání modelu a fotografií ......................................................... 69
x
Seznam obrázků Obrázek 3.1 – Müllerova vila po stavbě ............................................................... 3 Obrázek 5.1 – Fotografie dlaždičky a pomocná vodítka (modré čáry) .............. 13 Obrázek 5.2 – Fotografie dlaždičky po úpravě perspektivy,
po oříznutí a odstranění odrazu
........ 14
Obrázek 5.3 – Fotografie části podlahy .............................................................. 14 Obrázek 5.4 – Fotografie podlahy po zrcadlení.................................................. 15 Obrázek 5.5 – První stěna modelu místnosti ...................................................... 15 Obrázek 5.6 – Model po prvním kroku nástroje „extrude“, vymodelované všechny stěny místnosti 16 Obrázek 5.7 – Označený polygon pro okno (vlevo) výsledek po rozdělení (vpravo) 17 Obrázek 5.8 – Vytažení okna.............................................................................. 17 Obrázek 5.9 – Označení polygonu pro dveře (vlevo) výsledek po rozdělení (vpravo)........ 18 Obrázek 5.10 – Výsledný model po vytvoření dveří .......................................... 18 Obrázek 5.11 – Výsledný model místnosti......................................................... 18 Obrázek 5.12 – Špatně nanesená textura (vlevo) správně nanesená textura (vpravo) 19 Obrázek 6.1 – Sklep............................................................................................ 24 Obrázek 6.2 – Chodba ve sklepě ........................................................................ 28 Obrázek 6.3 – Hlavní chodba ............................................................................. 28 Obrázek 6.4 – Schody pro služebné ................................................................... 29 Obrázek 6.5 – Budoár ......................................................................................... 30 Obrázek 6.6 – Hlavní místnost ........................................................................... 30 Obrázek 7.1 – Struktura dynamického načítání.................................................. 35 Obrázek 7.2 – Obalový kvádr pro místnost ........................................................ 41 Obrázek 7.3 – Špatné nastavení hodnot kvádrů (vlevo), správné rozdělení kvádrů (vpravo) 42 Obrázek 8.1 – Schéma událostí při animované procházce ................................ 44 Obrázek 9.1 – Graf minimální FPS Cortona ...................................................... 49 Obrázek 9.2 – Graf minimální FPS BS Contact ................................................. 50 Obrázek 9.3 – Část plánu budovy s označením pádu BS Contactu.................... 50 Obrázek C.1 – Sklep ........................................................................................... 59 Obrázek C.2 - Přízemí ........................................................................................ 60 Obrázek C.3 – Mezipatro.................................................................................... 61 Obrázek C.4 – 1. patro ........................................................................................ 62 Obrázek C.5 – 2. patro ........................................................................................ 63 Obrázek E.1 – Porovnání chodby ....................................................................... 69 xi
Obrázek E.2 – Porovnání příchozí chodby ......................................................... 70 Obrázek E.3 – Porovnání hlavní místnosti ......................................................... 71
xii
Seznam tabulek Tabulka 6.1 – Rozdělení prací na modelu .......................................................... 23 Tabulka 6.2 – Popis místností sklep ................................................................... 25 Tabulka 6.3 – Vytvořené textury ........................................................................ 27 Tabulka 6.4 – Vytvořené textury ........................................................................ 32 Tabulka 6.5 – Časová náročnost jednotlivých etap ............................................ 34 Tabulka 7.1 – Začátek tabulky aktuální místnosti pro Model Müllerovy vily .. 39 Tabulka 7.2 – Tabulky potřebné uzly ................................................................. 40 Tabulka 9.1 – Měření FPS bez dynamického načítání ....................................... 48 Tabulka 9.2 – Měření FPS s dynamickým načítáním......................................... 49 Tabulka C.1 – Popis místností sklep................................................................... 59 Tabulka C.2 – Popis místností přízemí............................................................... 60 Tabulka C.3 – Popis místností mezipatro ........................................................... 61 Tabulka C.4 – Popis místností 1.patro................................................................ 62 Tabulka C.5 – Popis místností 2.patro................................................................ 63 Tabulka D.1 – Kompletní převodní tabulka z pozice na ID místnosti ............... 67
xiii
xiv
1. Úvod Jak budovy opravdu vypadají, záleží na stylu, ve kterém se stavěly a samozřejmě na architektovi, který budovu nejen nakreslil, ale také dohlédl na její výstavbu. Každá budova se liší od ostatních a je svým způsobem originální. Mezi významné architektonické památky patří Müllerova vila, kterou navrhl architekt Adolf Loose. Přes internet si lze prohlédnout fotografie a různé materiály této památky. Samotná fotografie však nenahradí prostorovou představu uspořádání místností a chodeb. Lepší pohled by nám naskytl 3D model, kterým by mohl návštěvník procházet a manipulovat s předměty. V současné době neexistuje žádný takový model a tak vznikl velice zajímavý projekt, který za pomoci jazyka VRML a X3D umožní vymodelovat tuto památku. Uživatel si bude moci tuto budovu prohlédnout a projít, aniž by ji navštívil. Müllerova vila je velice rozsáhlá a k modelování bude zapotřebí hodně času, jelikož samotné modelování virtuálních světů je náročná práce. Na tomto projektu jsem spolupracoval společně s diplomantem Petrem Mohelským. Tuto diplomovou práci jsem si vybral, jelikož modelování virtuálních světů mě baví. Müllerova vila upoutala mou pozornost nevšední strukturou a její modelování bude zajímavé.
2. Cíl práce Cílem práce je za pomoci jazyka VRML vymodelovat model Müllerovy vily. Mým úkolem je vymodelování téměř všech místností z pohledu hrubé stavby bez nábytku. Tři místnosti, které na sebe navazují a zahradu vily má za úkol vymodelovat kolega Petr Mohelský. Další částí mé práce je navrhnout vhodnou strukturu pro dynamické načítání místností a to implementovat. Dalším cílem je návrh a realizace virtuální procházky, která provede uživatele vilou. Posledním cílem je na základě získaných zkušeností vytvořit návod na modelování budov podobného stylu. Společným cílem je navrhnou strukturu tak, aby se daly naše práce spojit v jeden celek a vytvořit tím celý objekt Müllerovy vily.
1
2
3. Historie Müllerovi vily Roku 1928 zakoupili manželé Müllerovi stavební pozemek v Praze 6 – Střešovicích, kde se rozhodli postavit dům. Jako architekta si vybrali známého vídeňského architekta Adolfa Loose. Jelikož Adolf Loose byl velice zaneprázdněný spolupracoval na projektu s plzeňským architektem Karlem Lhotou. Stavební povolení bylo vydáno v červnu 1929. V březnu 1930 byla stavba dokončena a 12. května 1930 se Müllerovi přestěhovali z Plzně do Prahy. Velikonoce roku 1930 již trávili v novém domově. V průběhu léta roku 1930 se dokončovalo zařízení vily. Podle návrhů vynikajících zahradních architektů Camillo Schneidera, Karla Förstera a Hermanna Matterna se započalo s úpravou zahrady. V roce 1948 se stává vila tzv. „činžovní vilou”, formálně zůstává ve vlastnictví Müllerových, ti ji však nemohou plně používat. Po smrti Františka Müllera je vila znárodněna a stává se majetkem státu.
Obrázek 3.1 – Müllerova vila po stavbě
Po pádu komunistické vlády v Československu byla Müllerova vila na základě restitučního zákona vrácena dceři původních majitelů, paní Evě Maternové, která jí následně nabídla k prodeji. V lednu roku 1995 bylo schváleno odkoupení Müllerovy vily do vlastnictví hl. m. Prahy. Tento historický krok byl učiněn nejen na základě apelu světové odborné veřejnosti, ale také na základě doporučení Pražského grémia (sdružení pro ochranu a rozvoj kulturního prostoru hl. m. Prahy). Dne 30.6.1995 převzalo vilu do správy Muzeum hl. m. Prahy. Více historie a informací ohledně Müllerovy vily lze zjistit v [1]. 3
4
4. Analýza problému Prostudoval jsem jakým způsobem by bylo vhodné vymodelovat tuto budovu. Hledáním informací na internetu a v odborné literatuře jsem zjistil, že prozatím žádný návod pro modelování budov, které mají využívat dynamické načítání není. Existuje mnoho různých modelů budov, ale ty nevyužívají dynamické načítání a po celou dobu jsou načteny v paměti i ty části, které nejsou vidět a zbytečně tak zatěžují počítač. K vytvoření modelu jsou potřeba plány, aby výsledný model byl co nejvíce realistický a jeho velikost odpovídala v nějakém měřítku skutečnosti. Proto je nezbytné získat co nejvíce informací o modelovaném objektu. Mohou to být plány, výkresy, fotografie, ale velice velkým přínosem je osobní návštěva modelovaného objektu. Pro modelování je vhodné zvolit nějaký 3D modelovací program, ve kterém se daný objekt bude modelovat. Přehled vybraných 3D modelovacích programů je popsán níže. Pro model je požadováno použít jazyk VRML (Virtual Reality Modeling Language), proto je zapotřebí použít nějaký editor, který umí pracovat s tímto jazykem. Vybrané programy pro práci s jazykem VRML jsou popsány níže. Pro prohlížení vytvořeného modelu je zapotřebí mít nainstalovaný nějaký prohlížeč, který umí zobrazit soubory napsané jazykem VRML.
4.1 VRML/X3D1 VRML jazyk byl navržen především pro popis trojrozměrných scén obsahujících aktivní i pasivní objekty. Nejedná se samozřejmě o jediný formát (či jazyk) této kategorie, dnes se například poměrně razantním způsobem prosazuje formát X3D. Tento jazyk definovaný normou ISO, se používá pro popis jednotlivých prostorových těles i celých rozsáhlých scén v aplikacích virtuální reality a také na Internetu, kde slouží jako přenosový prostředek pro data popisující trojrozměrné modely. Prostorová tělesa lze v tomto formátu popsat pomocí seznamu souřadnic vrcholů a plochami specifikovanými indexy svých vrcholů do seznamu vrcholů – ve skutečnosti se jedná o poměrně úsporný způsob zápisu, především v porovnání s přímým zápisem vrcholů polygonů. Pro základní geometrická tělesa, mezi něž patří krychle, koule, kužel a 1
Teorie převzata a částečně přepsána vlastními slovy z [2] a [3]
5
podobně, i pro objekt typu text, jsou definována vlastní klíčová slova reprezentující uzly modelu, takže je není nutné rozkládat na trojúhelníky, což by bylo prostorově náročné a při přenosu modelů po internetu i pomalé. Rozklad na trojúhelníky je ponechán na prohlížeči VRML, který musí spolupracovat s grafickým akcelerátorem, například přes API grafické knihovny OpenGL. Také je podporováno texturování. Tělesa lze dokonce potáhnout texturou uloženou ve formě videa. Ve VRML je celá trojrozměrná scéna popsaná pomocí objektů, které jsou hierarchicky uspořádány ve stromové struktuře. Samotný formát souborů uložených ve VRML je založen na textovém popisu scény. Přesný zápis struktury a popis jednotlivých prvků lze nalézt např. v [2]. Grafický formát X3D z velké části vychází z formátu VRML ovšem opravuje některé jeho nedostatky a především umožňuje použít i syntaxi zápisu založenou na XML. To s sebou nese celou řadu předností, především jednoduché zpracování celého dokumentu pomocí velkého množství knihoven a programových API pro práci s XML. Možnost poloautomatické serializace a deserializace prostorové scény do X3D, relativně snadné převody mezi X3D a dalšími formáty. Pro více informací o X3D lze najít v [3].
4.2 Modelovací nástroje Pro vytvoření modelu lze použít jakýkoliv textový editor, do kterého budeme zapisovat příkazy jazyka VRML a následně daný soubor uložíme jako soubor jazyka VRML. Tento postup je použitelný, při modelování malých světů nebo malých částí světů, které nemají složitou geometrii. Také je tento postup výhodný, když už máme hotovou geometrii a vytváříme už jen dynamiku (animace, reakci na pohyb, skripty). Pro zapisování jazyka VRML existují různé speciální nástroje. Jsou to editory se zvýrazněním syntaxe jazyka VRML a dalšími funkcemi, které ulehčí zapisování jazyka a vytvoření požadovaného objektu nebo světa. Snadněji se s nimi vytvářejí interaktivní předměty a animace. Pro modelování složitých světů a objektů je tento způsob modelování velice pracný a časově náročný. Proto je dobré využít nějaký nástroj, který umožňuje jednodušší modelování objektů. Jedná se o nějaký 3D editor, který má grafické znázornění modelovaného objektu a umožňuje grafické modelování. K takovému 6
modelování lze doporučit několik 3D programů, které zjednoduší modelování a umí vymodelovaný objekt exportovat do jazyka VRML. Zástupce 3D modelovacích programů jsou Blender [4], 3ds Max [5] a Maya [6]. Pro úpravu už vytvořených VRML souborů jsou dobré editory, které umí pracovat se strukturou jazyka VRML. Zástupce těchto editorů jsou VRML Pad [7] a Chisel [8].
4.2.1. Blender Jedná se o zajímavý 3D grafický program, který je freewarovou alternativou k programu Maya a 3ds Max. Umožňuje export do VRML, a lze ho tedy využít k modelování. Umožňuje export do VRML a tudíž je vhodnou volbou pro modelování. Obsahuje VRML 2.0 exportér, který exportuje vymodelovanou geometrii jako „indexedFaceSet“. Exportér zapisuje zbytečné hodnoty, které není potřeba exportovat, protože mají iniciální hodnotu. Při exportu vzniká duplicita názvů v parametru DEF jak ukazuje následující kód.
DEF Cube Shape { # první definice názvu appearance Appearance { material DEF mat_Material Material { diffuseColor 0.8 0.8 0.8 ambientIntensity 0.5 specularColor 1.0 1.0 1.0 emissiveColor 0.0 0.0 0.0 shininess 0.196 transparency 0.0 } # Material } # Appearance geometry DEF Cube IndexedFaceSet { # duplicitní definice názvu solid TRUE # one sided coord Coordinate { point [ 1.0 -1.0 -1.0, 1.0 -1.0 1.0, … ] # point } # Coordinate coordIndex […] # coordIndex creaseAngle 0.0 # in radians } # IndexedFaceSet } # Shape
7
4.2.2. 3ds Max 3ds Max je 3D modelovací program, který umožňuje export do VRML. Výhoda tohoto programu je export primitiv do VRML, to jest pokud budeme potřebovat exportovat základní tvary například kvádr nebo kouli pak je tento program vhodný pro modelování, protože tyto tvary se exportují jako základní primitiva jazyka VRML. Nevýhodou je, že při exportu mohou vznikat chyby, které se projeví jako duplicitní názvy parametru DEF. Exportér také exportuje zbytečně iniciální hodnoty polí.
4.2.3. Maya Jde o 3D modelovací program, který slouží k modelování 3D grafiky. Exportér tohoto programu neumí exportovat primitiva. Pokud budeme chtít exportovat krychli bude exportována jako „indexedFaceSet“ a ne jako box. Exportér využívá pro export Switch, Groupe, DEF a USE. Tato struktura sice zvětšuje velikost souboru, ale negeneruje duplicitní názvy. Exportovaný soubor je také přehlednější. Nevýhodou je export hodnot polí, která mají iniciální hodnotu. Ukázka exportu:
Switch { whichChoice -1 choice [ Shape { appearance Appearance { material DEF lambert1_0 Material { diffuseColor 0.400000 0.400000 0.400000 specularColor 0.000000 0.000000 0.000000 emissiveColor 0.000000 0.000000 0.000000 shininess 0.000000 transparency 0.000000 } } } Shape { geometry DEF pPlane1_0Geo IndexedFaceSet { convex FALSE 8
solid FALSE coord DEF pPlane1GeoPoints Coordinate { point -1.000 -0.000 1.000,… ] } coordIndex [… ] } } ] } Group { children [ DEF pPlane1 Transform { translation 0.000000 0.000000 0.000000 rotation 0.000000 0.000000 0.000000 0.000000 scale 1.000000 1.000000 1.000000 scaleOrientation 0.0 0.0 1.0 0.0 children Shape { appearance Appearance { material USE lambert1_0 } geometry USE pPlane1_0Geo } } ] }
4.2.4. VRML Pad Tento nástroj umožňuje editaci VRML souborů se zvýrazněním syntaxe. Jedná se o jednouchý nástroj, se kterým se velice snadno pracuje. Lze použít při vytváření skriptů a animací. Pro práci s tímto nástrojem je dobré mít již namodelovanou složitější geometrii, protože tento program není vhodný na vytváření složité geometrie. Nevýhodou je, že se jedná o placený editor a jeho neregistrovaná verze umožňuje úpravu souborů do velikosti 64kb.
9
4.2.5. Chisel Je velice jednoduchý program pro úpravu VRML souborů. Jeho výhodou je, že je zdarma. Umí pročistit VRML soubory a odebrat zbytečné věci. Dále pak umožňuje formátování textu, který se pak lépe čte. Dále podporuje export do X3D a mnoho dalších funkcí, které lze nastavit.
4.2.6. Shrnutí Všechny výše popsané modelovací programy lze využít pro modelování, ale je zapotřebí po exportu vždy upravit výsledný exportovaný soubor nějakým VRML editorem. Smazáním iniciálních hodnot se zmenší velikost souborů, která je podstatná pro přenos dat přes internet. U programu 3ds Max a Blender je zapotřebí ještě zkontrolovat, jestli při exportu nevznikly nějaké duplicitní názvy. Já jsem si pro modelování vybral program Maya.
10
5. Návod pro modelování Na základě konzultace s vedoucím práce byla vložena tato kapitola, která má za úkol vysvětlit jak postupovat při získávání podkladů před modelováním, způsob úpravy textur, modelování jednotlivých místností a úpravu částí modelu do konečné podoby pro použití dynamického načítání.
5.1 Stavební plány Základem pro vymodelování objektu jsou stavební plány v tištěné nebo lépe elektronické podobě. Plány by měly být co nejaktuálnější, aby co nejlépe popisovaly modelovaný objekt. U starších objektů nejspíše budou plány jen v tištěné podobě. Plány by měly být okótované, aby bylo patrné jaké rozměry mají jednotlivé místnosti. Může se stát, že dostaneme plány jen v měřítku a je tudíž nutné všechny potřebné rozměry odměřovat pravítkem. V tomto případě je pak nutné si všechny potřebné rozměry odměřit z plánů. Může se stát, že k danému objektu neexistují plány a pak je tedy nutné vzít metr a potřebné rozměry naměřit přímo v objektu. Podle plánů vhodně rozdělíme objekt na místnosti nebo skupiny místností, abychom později mohli aplikovat na vytvořený model dynamické načítání místností. Pro lepší představu o modelovaném objektu, je dobré mít také fotografie jednotlivých místností, protože stavební plány nezachycují všechny detaily, ale hlavně pro modeláře, který má jen základní znalosti čtení stavebních plánů, jsou fotografie velkým přínosem pro modelování. Před začátkem modelování je vhodné navštívit modelovaný objekt a projít jednotlivé místnosti. Takto získá modelář jedinečnou představu o modelovaném objektu a modelování je jednodušší.
5.2 Fotografování Pro dosažení co nejlepší kvality fotografie je zapotřebí
před samotným
začátkem fotografování vzít v úvahu nastavení fotoaparátu. Dobré nastavení fotoaparátu nám umožní získat fotografie v požadované kvalitě a následné zpracování pro získání textur nebude tak náročné, protože bude stačit udělat méně úprav fotografií. 11
V této kapitole není za úkol vysvětlit jakým způsobem nastavit fotoaparát, ale jen nastínit, jaké parametry se dají nastavovat. Způsob nastavení fotoaparátu před fotografováním a problematiku jednotlivých nastavení je ponecháno na čtenáři. Při fotografování bychom neměli opomenout nastavení rozlišení fotoaparátu [9], nastavení vyvážení bílé barvy, aby bílá barva byla opravdu bílou barvou [10], použití blesku a nasvícení fotografovaného povrchu [11], ostrost snímku [12], ohniskovou vzdálenost [13], nastavení délky expozice [14], načasování clony [15] a v neposlední řadě zvážit použití stativu. Samotné fotografování objektu lze rozdělit na dvě části: • Fotografování materiálů pro textury Je vhodné zvolit jednotný postup, který aplikujeme v každé místnosti. Postupujeme z jednoho rohu místnosti po směru nebo proti směru hodinových ručiček podél stěn až se vrátíme zase zpět k výchozímu rohu. Po celou dobu se snažíme vyfotografovat všechny materiály, které budeme potřebovat. Nakonec vyfotografujeme strop a podlahu. Dále postupujeme systematicky po celém objektu například od sklepa až po nejvyšší patro. Každý materiál vyfotografujeme nejméně dvakrát, aby se dala vybrat lepší fotografie a zní vytvořit texturu. Při fotografování fotografií k vytváření textur dbáme následujících pokynů: o Fotografujeme s největším rozlišením (zmenšení je vždy možné) o Snažíme se vyfotografovat daný materiál tak, aby byl kolmo k fotoaparátu o Snažíme se, aby na fotografii bylo co nejméně odrazů od okolních objektů a světel o Pokud je dostatečné osvětlení fotografujeme bez blesku (blesk působí rušivě na materiálu, který fotografujeme) • Fotografování místností pro modelování Při modelování velice pomohou fotografie místností, protože lépe znázorňují danou místnost a lépe si představíme tento prostor. Fotografie by měly zachycovat celou místnost, popřípadě nějaký atypický detail. Místnost vyfotografujeme alespoň ze čtyř pohledů a to z každého rohu místnosti. Pro složitější místnosti potřebujeme vyfotografovat více fotografií podle složitosti místnosti a uvážení. 12
5.3 Vytváření textur v programu Photoshop Pro reálnější podobu modelu naneseme na povrchy textury a tím zlepšíme vizuální stránku modelu. Textury mohou být dvojího typu. První typ textury nanášíme na povrch opakovaně. Tu upravíme tak, aby nebylo patrné opakované nanášení. Například u dlaždic, betonu, parket. Druhý typ textury nanášíme jen jednou bez opakování například okna, dveře. V následujících podkapitolách je zmíněno jakým způsobem se dají upravovat fotografie při tvorbě textur. Jsou zde uvedeny jen případy, které se nejčastěji používají. Další způsoby úprav fotografií lze najít v [16].
5.3.1. Odstranění lesklých ploch Při vytváření textury z fotografie, na které jsou patrné lesklé plochy budeme postupovat v programu Photoshop [17] následovně. Nejprve si vytvoříme vodítka (na obrázku 5.1 modré čáry), která jsou na sebe kolmá a rozmístíme je, tak aby tvořily obdélník jak ukazuje obrázek 5.1.
Obrázek 5.1 – Fotografie dlaždičky a pomocná vodítka (modré čáry)
Jak je patrné z obrázku 5.1, dlaždice vypadá jako lichoběžník a proto ji pomocí nástroje perspektiva a libovolná transformace upravíme tak, aby byly spáry rovnoběžné s pomocnými vodítky. Na obrázku 5.2 vlevo vidíme dlaždice po úpravě perspektivy a 13
vpravo po odstranění odrazu. Odraz odstraníme pomocí nástroje klonování, který umožňuje kopírovat zadané části obrazu do cílové části. Takto upravenou texturu už můžeme nanést na nějakou plochu.
Obrázek 5.2 – Fotografie dlaždičky po úpravě perspektivy (vlevo), po oříznutí a odstranění odrazu (vpravo)
5.3.2. Zrcadlení Lze využít v případě, že nelze vyfotografovat celý objekt. Například z důvodu, že se s objektem nedá hýbat a nebo není dostatek prostoru, aby se dal objekt vyfotografovat z dané vzdálenosti celý. Zrcadlení lze použít jen v případě, že se jedná o symetrický objekt. Příkladem je část podlahy, která nešla z důvodu vzdálenosti vyfotografovat celá. Na obrázku 5.3 je vidět vyfotografovaná část a obrázek 5.4 ukazuje celek po použití zrcadlení.
Obrázek 5.3 – Fotografie části podlahy 14
Obrázek 5.4 – Fotografie podlahy po zrcadlení
5.4 Modelování místností v programu Maya Následující návod ukáže, jakým způsobem budeme postupovat při modelování místností. Jako první zvolíme počátek souřadnicového systému, to jest jakým způsobem bude model místnosti orientován na souřadnice os x,y,z a zvolení nulového bodu místnosti na souřadnicových osách. Pokud máme zvolen nulový bod místnosti a orientaci os, můžeme začít modelovat stěny. Jako první si vytvoříme polygon, který bude vysoký jako výška stropu místnosti a jeho šířka bude velikost stěny vycházející od zvoleného nulového bodu. Dále nastavíme viditelnost normál k plochám, abychom viděli, jakým směrem je normála plochy. Polygon nejprve otočíme a posuneme, aby jeho spodní roh byl v nulovém bodu a normála polygonu směřovala do prostoru místnosti jak ukazuje obrázek 5.5.
Obrázek 5.5 – První stěna modelu místnosti 15
Vybere hranu, která je na obrázku 5.5 označena modrou šipkou a zvolíme nástroj „extrude“. Vybranou hranu posuneme podle geometrie místnosti tak, aby vznikla stěna. Tento krok ukazuje obrázek 5.6 vlevo. Pro lepší přesnost zadáváme souřadnice do textového pole nástroje „extrude“. Dále pokračujeme stejným způsobem, dokud nevymodelujeme všechny stěny místnosti, jak je vidět na obrázku 5.6 vpravo. Už při modelování stěn bereme v úvahu, kde budou umístěny okna a dveře a stěny podle toho rozdělíme. Umístění dveří a rozdělení stěny je na obrázku 5.6 vlevo znázorněno modrou šipkou.
Obrázek 5.6 – Model po prvním kroku nástroje „extrude“ (vlevo), vymodelované všechny stěny místnosti (vpravo)
Když máme vymodelované stěny místnosti následně začneme modelovat okna a otvor pro dveře. Označíme plochu, kde má být umístěno okno (na obrázku 5.7 vlevo šrafovaný obdélník) a použijeme nástroj „cut face tool“, který označený polygon rozdělí na dva. Následně nastavíme výšku řezu spodní hrany okna (na obrázku 5.7 vpravo modrou šipkou). Rozdělení aplikujeme ještě jednou a jako výšku řezu nastavíme horní hranu okna. Výsledek je vidět na obrázku 5.7 vpravo.
16
Obrázek 5.7 – Označený polygon pro okno (vlevo) výsledek po rozdělení (vpravo)
Nakonec označíme vzniklý polygon pro okno a pomocí nástroje „extrude“ ho vytáhneme tak, jak ukazuje obrázek 5.8.
Obrázek 5.8 – Vytažení okna
Dále vytvoříme otvor pro dveře. Označíme polygon (obrázek 5.9 vlevo), kde mají být dveře a pomocí nástroje „cut face tool“ rozdělíme polygon na dvě části a nastavíme řeznou rovinu na výšku dveří. Výsledek je vidět na obrázku 5.9 vpravo. Nakonec už jen stačí vymazat spodní polygon (obrázek 5.10).
17
Obrázek 5.9 – Označení polygonu pro dveře (vlevo) výsledek po rozdělení (vpravo)
Obrázek 5.10 – Výsledný model po vytvoření dveří
Vybereme jednu hranu (která je na obrázku 5.10 označena šipkou) a pomocí nástroje „extrude“ ji přetáhneme na druhou stranu místnosti, tak aby vytvořila strop. Toto uděláme i pro druhou hranu a vše zopakujeme při tvorbě podlahy. Výsledný konečný model geometrie místnosti ukazuje obrázek 5.11.
Obrázek 5.11 – Výsledný model místnosti 18
5.5 Texturování Když máme vymodelovanou geometrii místnosti, přidáme pro lepší vizualizaci textury a obarvíme povrchy. Pomocí nástroje „cut face tool“ rozdělíme model na části tak, aby se dala každému povrchu přiřadit barva nebo textura. K přiřazení barev a textur slouží nástroj „hypershade“, ve kterém si vytvoříme materiály k nanesení na povrchy. Bude jich takový počet, kolik obsahuje místnost barev a textur. Jelikož automatické nanesení textury většinou nenanese texturu správně (obrázek 5.12 vlevo), je zapotřebí použít UV mapování textur, abychom mohli texturu správně nanést na povrch (jak ukazuje obrázek 5.12 vpravo). Takto upravíme všechny textury a model místnosti je hotov.
Obrázek 5.12 – Špatně nanesená textura (vlevo) správně nanesená textura (vpravo)
5.6 Export a následná úprava dat Po exportu dat upravíme cesty k texturám, protože exportér programu Maya nenastaví správnou cestu k souboru. Vytvoříme prototypy místností z důvodu následné aplikace virtuální procházky. Editujeme exportovaný soubor a ručně upravíme zdrojový text. Na tyto úpravy je vhodný program VRML Pad nebo program Chisel. Dobrou vlastností programu Chisel je možnost pročištění kódu od zbytečných dat a také formátování textu pro lepší čitelnost.
19
5.7 Návrh prototypu Kvůli napojení centrálního otevření dveří na události jednotlivých místností je zapotřebí, aby měla místnost definovanou strukturu, kterou popisuje prototyp níže. Tato úprava je nutná pouze u místností, které mají dveře a budeme je potřebovat otevírat pomocí skriptu. Návrh prototypu vypadá následovně:
PROTO [ evenIn SFTime dvere_1 evenIn SFTime dvere_2 ] { # prototyp dveří, který vymodeloval kolega Petr Moheský; # parametr start typu SFTime # touto definicí se propojí událost prototypu s dveřmi dvere { start IS dvere_1} # lze definovat více dveří v mstnosti dvere { start IS dvere_2} # geometrie místnosti } Pro správnou funkčnost je zapotřebí, aby vytvoření instance prototypu místnosti byla v souboru na třetím místě. Tento požadavek je z důvodu propojení událostí dynamického načítání místností a je vysvětlen v kapitole 6, která se zabývá samotným dynamickým načítáním. Příklad souboru po úpravě :
WorldInfo { # první uzel title "servant_room_patro" } NavigationInfo { # druhý uzel type [ "EXAMINE" "ANY" ] } EXTERNPROTO dvere [ # definice externího prototypu není uzel field SFInt32 zap eventIn SFTime start ] "../prototype/dvere.WRL" PROTO servant_room_patro [ # definice prototypu místnosti eventIn SFTime dvere_chodba eventIn SFTime dvere_quest 20
] { Group { children [ Transform { # umístění dveří na pozici v místnosti translation 1.225 0 -3.1 rotation 0 1 0 -1.57 children [ dvere { zap 0 start IS dvere_chodba # propojení událostí # na prototyp } ] } Transform { translation -.3 0 -4.825 children [ dvere { zap 2 start IS dvere_quest } ] } # geometrie místnosti } servant_room_patro {} # instatce prototypu třetí uzel
5.8 Složení celého objektu Po vymodelování a úpravě modelu sestavíme místnosti tak, aby tvořily výsledný objekt. To provedeme pomocí uzlu „transform“ pro každou místnost. Každý uzel „transform“ reprezentuje jednu místnost. Všechny místnosti rozmístíme tak, aby na sebe navazovaly. Zde se ukáže, zda jsme při modelování neudělali chybu. Pokud místnosti nenavazují ( špatná velikost dveří, otvorů, místností ). Musíme zkontrolovat rozměry místností a opravit případné nesrovnalosti. Nakonec aplikujeme Skript dynamického načítání popsaný v kapitole 7 a virtuální procházku popsanou v kapitole 8.
21
22
6. Realizace modelování Müllerovi vily Model Mülerovy vily jsem modeloval společně s Petrem Mohelským. Nejprve bylo zapotřebí rozdělit práci na celém projektu. Na základě konzultace s vedoucím práce bylo modelování rozděleno podle tabulky 6.1. Moje práce je založená na stavební části budovy, implementaci dynamického načítání místností s ohledem na pozici avatara a vytvoření virtuální procházky.
činnost
Zodpovídá
Model koupelny
Petr Mohelský
Model ložnice
Petr Mohelský
Model dětské ložnice
Petr Mohelský
Model dveří
Petr Mohelský
Model zahrady
Petr Mohelský
Mapa
Petr Mohelský
Modely ostatních místností
Josef Suchý
Rozmístění dveří
Josef Suchý
Dynamické načítání
Josef Suchý
Virtuální procházka
Josef Suchý Tabulka 6.1 – Rozdělení prací na modelu
6.1 Plány Plány Müllerovy vily jsem měl v tištěné podobě a pouze v měřítku. Tato skutečnost velice prodlužovala modelování, jelikož bylo potřeba všechny velikosti místností, dveří, oken a tak dále změřit pravítkem. Jelikož nebyly na plánu kóty, musel jsem některé hodnoty dopočítávat, aby se nestalo chybou měření, že jedna stěna čtvercové místnosti je delší. Při měření velikosti místností nastává chyba měření a potřeba definovat nejmenší jednotku, kterou lze odečíst. Já jsem zvolil 0,5 mm, protože menší jednotku už nelze na pravítku určit. Jeden milimetr na plánu odpovídá 10cm ve skutečnosti. Proto je Model Müllerovy vily vymodelován s přesností na 5cm. 23
6.2 Rozdělení objektu na místnosti2 Pro použití dynamického načítání jsem rozdělil objekt na místnosti, které jsem modeloval zvlášť a následně pomocí posunutí sestavil dohromady a tím zhotovil výsledný model. Každá místnost má definovaný svůj nulový bod označený na obrázku 6.1 červeně. Každý nulový bod patří k nejbližšímu ID místnosti. Pokud nějaké ID přebývá má nulový bod na jiném plánu. Do této kapitoly jsem zahrnul rozdělení jen sklepní části budovy. Ostatní plány a rozdělení místností jsem uvedl v příloze C. Čísla ID místností jsem zvolil podle seřazené posloupnosti názvu místností, které se zobrazují jako název místnosti na panelu avatara.
28
26 14
4
34 19
7
18
8 2
Obrázek 6.1 – Sklep 2
Plány Müllerovy vily jsem dostal na vyžádání ve vile, ale bylo nutné podepsat, že je použiji jen pro studijní účely
24
ID pokoje v plánu na Obr. 6.1 2 4 7 8 14 18 19 26 28 34
Jméno pokoje Místnost s boilerem Technická místnost Chodba Schody
Poznámka
Nulový bod v přízemí Obrázek C.2 (příloha C)
Garáž Prádelna 1 Prádelna 2 Pokoj pro sluhy Sklad WC Tabulka 6.2 – Popis místností sklep
6.3 Textury Pro vytvoření textur jsem použil program Adobe Photoshop [17]. Textury jsem zpracovával postupně pro jednotlivé místnosti, to jest nejprve jsem zhotovil textury pro jednu místnost, vymodeloval ji a následně nanesl vytvořené textury. Některé, textury jsem převzal od Petra Mohelského z důvodu jednotnosti povrchu materiálů v místnostech. Místnosti se stejným materiálem musí i v modelu obsahovat stejný povrch a tím působit jako jeden celek. Převážně jsem vytvářel textury různých dvířek a oken v každé místnosti. Protože na nafocených fotografiích stály předměty před okny nebo byly fotografovány z nevhodného úhlu, musel jsem použít nástroje pro úpravu perspektivy a také „retušovací razítko“, abych dostal nezkreslené textury. Seznam všech vytvořených textur popisuji v tabulce 6.3. Z důvodu častého výskytu jsem všechny textury umístil do jednoho adresáře, aby se v projektu neopakovaly.
25
Pořadí
Název
Rozlišení
Místnosti
1
bangor.jpg
128x128
2
beton_128.jpg
128x128
3 4
bila.JPG darkoak.jpg
1x1 128x128
5 6 7 8 9 10
drevo_256.jpg dvere2_256.jpg dvere_attic_256.jpg dvere_main_256.jpg dvere_nahore_A_256.jpg dvere_vytah_256.jpg
256x256 256x256 256x256 256x256 256x256 256x256
11 12 13
dvirka1_256.png dvirka2_256.png chodba_128.jpg
256x256 256x256 128x128
14
koberec_256.jpg
256x256
15 16
krb_256.jpg mramor_128.jpg
256x256 128x128
17
okno2_256.png
256x256
18 19
okno2_kuchyne_256.jpg okno_256.png
256x256 256x256
20 21
okno_attic_256.jpg okno_boiler_256.png
256x256 256x256
22 23 24 25 26 27 28 29
okno_cloak2_256.jpg okno_dining_256.jpg okno_entry_room_256.png okno_child_256.png okno_knihovna_256.jpg okno_kuchyne_256.jpg okno_loundry2_256.jpg okno_loundry_256.png
256x256 256x256 256x256 256x256 256x256 256x256 256x256 256x256
chod_sklep.wrl chod_zam.wrl boiler.wrl chauffeur.wrl laundry.wrl laundry_2.wrl servant_room.wrl sklad.wrl entry.wrl dining.wrl library.wrl budoar.wrl child_playroom.wrl attic.wrl main.wrl schody_sluzebni.wrl chod_zam.wrl schody_sluzebni.wrl boiler.wrl boiler.wrl entry_room.wrl chod_priz.wrl budoar.wrl library.wrl library.wrl budoar.wrl dining.wrl chod_obyv.wrl chod_priz.wrl main.wrl child_playroom.wrl servant_room_patro.wrl kitchen.wrl conversation_room.wrl guest_room.wrl attic.wrl boiler.wrl chauffeur.wrl servant_room.wrl cloak.wrl dining.wrl entry_room.wrl child_playroom.wrl library.wrl kitchen.wrl laundry_2.wrl laundry.wrl
26
30
okno_manwarrobe_256.jpg
256x256
31 32 33 34
okno_preparation_256.jpg okno_schody_sluzebni_256.jpg okno_summer_256.jpg Okno_zachod_256.png
256x256 256x256 256x256 256x256
35 36 37 38
podlaha.jpg podlaha_256.jpg pruh_256.jpg rhHarvest.jpg
76x76 256x256 256x256 256x256
39 40 41 42 43 44 45 46 47 48 49 50
stena_128.jpg 128x128 stena_256.jpg 256x256 strop2_chodba_256.jpg 256x256 strop_1.JPG 1x1 strop_256.jpg 256x256 strop_chodba_256.jpg 256x256 tapeta_kytky_256.jpg 256x256 tex_1_03.JPG 1x1 tex_3_03.JPG 1x1 viko_256.jpg 256x256 vrata.jpg 138x105 zelena_slazba.jpg 128x128 Tabulka 6.3 – Vytvořené textury
budoar.wrl man_wardrobe.wrl woman_wardrobe.wrl kitchen.wrl schody_sluzebni.wrl summer_room.wrl cloak.wrl wc_patro.wrl wc_sklep.wrl garage.wrl summer_room.wrl chod_priz.wrl budoar.wrl dining.wrl chod_obyv.wrl chod_priz.wrl library.wrl schody_sluzebni.wrl cloak.wrl summer_room.wrl chod_obyv.wrl entry_room.wrl dining.wrl chod_obyv.wrl chod_priz.wrl entry_room.wrl schody_sluzebni.wrl garage.wrl entry.wrl
6.4 Modelování místností a texturování Místnosti jsem modeloval postupně, aby na sebe navazovaly. Musel jsem z plánů odměřovat velikosti místností, aby vše na sebe navazovalo a nestalo se, že by se dvě místnosti překrývaly. Modelování každé místnosti byla mechanická práce, která se z velké části opakovala. Zde bych uvedl jen několik místností, které se svou geometrií výrazně lišily a jejich modelování bylo časově náročnější. Jedná se především o modely chodeb v budově a několik zajímavě navrhnutých místností:
27
• Chodba ve sklepě (obrázek 6.2) o Obtížné modelování schodů a stěn, které nejsou stejně vysoké po celé délce chodby o Přidání a rozmístění dveří do modelu chodby o Správné nanesení textury dlaždic
Obrázek 6.2 – Chodba ve sklepě • Hlavní chodba (obrázek 6.3) o Obtížné modelování geometrie místnosti o Přidání a rozmístění dveří do modelu chodby o Náročné texturování schodů
Obrázek 6.3 – Hlavní chodba 28
• Schody pro služebné (obrázek 6.4) o Obtížné modelování geometrie - místnost je rozsáhlá o Nanášení textur o Rozmístění dveří
Obrázek 6.4 – Schody pro služebné • Budoár (obrázek 6.5) o Místnost je zajímavá svou geometrií, téměř celá obložena dřevem o Obtížné nanášení textur
29
Obrázek 6.5 – Budoár • Hlavní místnost (obrázek 6.6) o Největší místnost ve vile o Obtížné nanášení textur
Obrázek 6.6 – Hlavní místnost
Ostatní místnosti nebyly nijak zajímavé a jejich modelování nebylo náročné. Celkem jsem vymodeloval a nanesl texturu u 32 místností. Seznam všech místností s použitými texturami jsem uvedl v tabulce 6.4. V této tabulce chybí některá označení místností (11, 17, 21, 30). Místnosti s označením jsou mé modely, místnosti bez označení modeloval Petr Mohelský.
30
Označení místnosti 0
Název souboru
Seznam textur
entry_room.wrl
chodba_128.jpg tex_1_03.JPG koupelna-podlaha-128.png okno_entry_room_256.png strop_1.JPG okno_attic_256.jpg dvere_attic_256.jpg beton_128.jpg dvirka1_256.png dvirka2_256.png okno_boiler_256.png koberec_256.jpg drevo_256.jpg rhHarvest.jpg okno_manwarrobe_256.jpg mramor_128.jpg beton_128.jpg okno_boiler_256.png dvere2_256.jpg okno2_256.png okno_child_256.png parkety.jpg rhHarvest.jpg mramor_128.jpg strop_chodba_256.jpg strop2_chodba_256.jpg koupelna-podlaha-128.png bangor.jpg koupelna-podlaha-128.png4 bangor.jpg dvere_vytah_256.jpg rhHarvest.jpg chodba_128.jpg mramor_128.jpg pruh_256.jpg tapeta_kytky_256.jpg okno_256.png koupelna-podlaha-128.png rhHarvest.jpg parkety.jpg mramor_128.jpg okno_dining_256.jpg strop_256.jpg darkoak.jpg koupelna-podlaha-128.png zelena_slazba.jpg bila.JPG podlaha.jpg vrata.jpg okno_256.png parkety.jpg
1
attic.wrl
2
boiler.wrl
3
budoar.wrl
4
chauffeur.wrl
5
child_playroom.wrl
6
chod_obyv.wrl
7
chod_sklep.wrl
8
chod_zam.wrl
9
chod_priz.wrl
10
conversation_room.wrl
12
dining.wrl
13
entry.wrl
14
garage.wrl
15
guest_room.wrl
31
Velikost (kb) vrml/x3d 16 / 13
10 / 9 21 / 17
28 / 22
10 / 8 19 / 15
41 / 32
25 / 21 26 / 21
19 / 15
8/6
16 / 13
16 / 13 11 / 9 7/6
16
18 19 20
22 23 24 25
26 27 28 29 31
32 33 34 35
koupelna-steny-128.png okno_preparation_256.jpg okno2_kuchyne_256.jpg okno_kuchyne_256.jpg beton_128.jpg laundry.wrl okno_loundry_256.png beton_128.jpg laundry_2.wrl okno_loundry2_256.jpg darkoak.jpg library.wrl koberec_256.jpg rhHarvest.jpg krb_256.jpg mramor_128.jpg main.wrl parkety.jpg dvere_main_256.jpg okno_manwarrobe_256.jpg man_wardrobe.wrl parkety.jpg Pantry rhHarvest.jpg schody_sluzebni.wrl parkety.jpg dvere_nahore_A_256.jpg okno_schody_sluzebni_256.jpg dvere_vytah_256.jpg viko_256.jpg beton_128.jpg servant_room.wrl okno_boiler_256.png servant_room_patro.wrl okno_256.png beton_128.jpg sklad.wrl okno_summer_256.jpg summer_room.wrl podlaha_256.jpg stena_256.jpg koupelna-podlaha-128.png cloak.wrl stena_128.jpg koupelna-steny-128.png okno_cloak2_256.jpg Okno_zachod_256.png Okno_zachod_256.png wc_patro.wrl koupelna-podlaha-128.png koupelna-steny-128.png koupelna-steny-128.png wc_patro_male.wrl koupelna-podlaha-128.png koupelna-podlaha-128.png wc_sklep.wrl Okno_zachod_256.png woman_wardrobe.wrl okno_manwarrobe_256.jpg parkety.jpg
kitchen.wrl
Tabulka 6.4 – Vytvořené textury
32
21 / 17 14 / 11 12 / 10 17 / 14
19 / 15 7/5 3/3
59 / 46
7/6 9/7 8/7 14 / 11
18 / 15
16 / 13 9/7 7/6 8/7
6.5 Export, úprava a skládání celku Vymodelované místnosti jsem pomocí exportéru exportoval z programu Maya do formátu VRML. Každou exportovanou místnost jsem otevřel v programu Chisel. Pročistil jsem automatickou volbou a nechal zformátovat text. Pro složení celého modelu jsem vytvořil nový VRML soubor, do kterého jsem pomocí vytvořeného prototypu, popsaného v kapitole 5.7, vložil všech 36 místností (včetně místností od Petra Mohelského). Každou instanci prototypu jsem vložil do uzlu „transform“ a posunul na požadované místo tak, aby na sebe jednotlivé místnosti navazovaly. Dále jsem vytvořil skript pro dynamické načítání, popsaný v kapitole 7, a procházku po budově, popsanou v kapitole 8 Nakonec jsem celý výsledný model převedl pomocí programu X3D Edit [18] do formátu X3D. Soubory, které jsem exportoval z programu Maya a následně pročistil programem Chisel, měly v průměru poloviční velikost než soubory jen exportované z programu Maya.
33
6.6 Časová náročnost modelování Pro přehled časové náročnosti modelování uvádím jak dlouho mi trvalo modelování. Musím však upozornit na to, že hodnoty uvedené v tabulce 6.5 jsou mnou naměřené průměrné hodnoty na tomto modelu a mohou se velice lišit od modelování jiných budov. Samotná časová náročnost velice závisí na zkušenostech modeláře, také na složitosti modelovaných místností a počtu textur v jednotlivých místnostech. Nezanedbatelnou částí je také požadovaná kvalita vytvořených textur a také jak detailní má být výsledný model.
Typ práce
Časová náročnost (v hodinách)
Vytváření textury dlaždice
4
Vytváření textury oken
1
Modelování jednoduché místnosti
16
Texturování jednoduché místnosti
6
Modelování složité místnosti (chodby)
48
Texturování složité místnosti
12
Tabulka 6.5 – Časová náročnost jednotlivých etap
34
7. Dynamické načítání Pro optimalizaci jsem implementoval dynamické načítání místností modelu, které má za úkol načíst jen viditelné místnosti a naopak ostatní místnosti, které nemají být viděny z dané pozice, odstranit z paměti. Toto jsem vyřešil skriptem, který využívá uzel Group jako celou scénu. Obsahuje prázdné uzly místností, načítající geometrii místností podle pozice avatara. Návrh datové struktury popisuji v kapitole 7.1 a skript, zajišťující samotné dynamické načítání popisuji v kapitole 7.2.
7.1 Datová struktura pro dynamické načítání
Datová struktura dynamického načítání je vidět na obrázku 7.1. Kořen celé scény je uzel Group. Obsahuje prototypy místností, kterých je zde, podle počtu místností, 36. Pokud potřebujeme zajistit centrální otevírání dveří, je zapotřebí změnit tvar struktury místností v hloubce 2, jak popisuje kapitola 5.7. To je z důvodů napojení událostí pro centrální otevření dveří.
Hloubka 0
Kořen
Instance prototypu room
Instance prototypu room
Geometrie místnosti
Geometrie místnosti
1
...
... ...
2
Instance prototypu room
1
Geometrie místnosti
2
n
Obrázek 7.1 – Struktura dynamického načítání
35
Hlavička prototypu místnosti vypadá následovně:
PROTOTYPE room[ field MFString url [] # cesta k dynamicky načítanému souboru field SFBool load FALSE # příznak, který udává jestli je místnost # načtená field MFString str [] # řetězec, který slouží k napojení událostí ke # dveřím
eventIn
SFBool set_load # událost, která načte nebo odebere # geometrii místnosti
eventIn
SFBool set_open # událost nastavení centrálního # otevření dveří
]
Skript, který se stará o samotné načítání jednotlivých částí se skládá ze tří funkcí, které jsou popsány níže. 1. funkce: function set_load (v) { if (v==load) return; load = v; if (load) Browser.createVrmlFromURL(room_url, myself, 'nodesLoaded'); else { group.children = new MFNode(); } } Pokud nastane událost „set_load“, podle hodnoty „v“ dojde k načtení nebo smazání místnosti. Optimalizací je první řádek, který při nezměněné hodnotě dále zabrání pokračování ve zpracování načítání nebo odebírání geometrie.
36
2. funkce: function nodesLoaded (v, time) { group.children = v; for(var i = 0; i<str.length; i++) { Browser.addRoute(myself, 'start', v[2], str[i]); } if(open) start = time; }
Tato funkce je volána při načítání geometrie místnosti a načte ji do doposud prázdného uzlu Group. Cyklus „for“ vytváří dynamické propojení událostí otevření dveří k načtené místnosti. Zde je vidíme vytváření propojení událostí k načítané místnosti, která musí mít ve své struktuře instanci prototypu na třetím místě. To je dáno číslem 2 v poli v[2]. Poslední řádek udává, zda se mají dveře otevřít. Tento příkaz je nutný, jelikož procházka vede přes místnosti, které nejsou načteny v paměti. Při procházce je potřeba dveře načítané místnosti otevřít, aby avatar neprocházel skrz zavřené dveře. 3. funkce: function set_open(h, time) { open = h; if(open)start = time; } Poslední funkce má za úkol jen změnit příznak, zda se mají při načtení geometrie otevřít dveře. Pokud je již místnost načtena v paměti, rovnou zahájit animaci otevření dveří. Příklad použití prototypu: DEF CHODBA Transform { # definice názvu pro napojení na script translation 4 0 -.75 # posun místnosti na pozici children [ room { # cesta ke geometrii místnosti url ["../chod_zam/chod_zam.wrl"] str ["dvere_entry"] # jaké dveře se budou # centrálně otevírat } ]} 37
7.2 Script dynamického načítání Úkol skriptu dynamického načítání je přepočítat souřadnice polohy avatara na ID místnosti, ve které aktuálně stojí. Tento přepočet se provádí podle statické tabulky 7.1, jejíž vytvoření jsem popsal v kapitole 7.3. Skript dostane od „proximity senzoru“ pozici „hodnota“ ve 3D prostoru. Tato pozice je porovnávána s jednotlivými řádky v tabulce 7.1. Kontroluje se, zda je splněna podmínka pro daný řádek: if(
min[a].x < hodnota.x && min[a].y < hodnota.y && min[a].z < hodnota.z &&
hodnota.x <= max[a].x && hodnota.y <= max[a].y && hodnota.z <= max[a].z)
{ my_ID = ID[a]; break; }
Nejprve je zkontrolována x-ová hodnota od „proximity senzoru“, zda je mezi hodnotou Mix X a Max X prvního řádku tabulky 7.1. Tento test se provede i pro zbývají dvě osy. Pokud je podmínka splněna ve všech případech, našli jsme místnost, ve které stojí avatar. Vrátíme hodnotu ID z aktuálního řádku a testování ukončíme, jelikož dále už nemůže být řádek, který by splňoval všechny tři podmínky (viz kapitola 7.3). Pokud není podmínka splněna, pokračujeme na další řádek, dokud nenajdeme takový řádek, pro který je podmínka splněna. Aby se neprocházela celá tabulka vždy, když nastane událost od „proximity senzoru“, je vložena optimalizace. Tato optimalizace porovná naposledy nalezený záznam v tabulce 7.1 s hodnotou od „proximity senzoru“. V případě kladného vyhodnocení se tabulka neprohledává, jelikož avatar neopustil prostor definovaný naposledy nalezeným záznamem. Není tak potřeba načítat nebo odebírat místnosti. V případě záporného vyhodnocení se prohledá tabulka a nalezený záznam se uloží místo aktuálního. Zde je uvedena jen část tabulky 7.1. Celá tabulka je obsažena v příloze D.
38
Min X
Max X
Min Y
Max Y
Min Z
Max Z
ID
2,15
4
-0,5
2,65
-5.15
0
13
0
2,15
-0,5
2,65
0
-0,45
10
-1,1
2,15
-0,5
2,65
-2,15
-0,45
10
0,2
2,15
-0,5
2,65
-2,15
-2,65
10
-1,1
4
-0,5
2,65
-8,05
-5,15
0
-1,1
-0,2
-0,5
2,65
-9,45
-8,05
0
0,3
2,1
-0,5
2,65
-8,55
-80,05
0
…
…
…
…
…
…
…
Tabulka 7.1 – Začátek tabulky aktuální místnosti pro Model Müllerovy vily
Po zjištění čísla místnosti, ve které se nachází avatar, načteme místnosti, které jsou zapotřebí, podle statické tabulky 7.2. Všem místnostem se zašle událost „set_load“. Pro nepotřebné místnosti „false“, pro potřebné a nenačtené místnosti „true“. O samotné načtení nebo smazání geometrie místnosti se postará skript v daném prototypu místnosti, který popisuji v kapitole 7.1.
ID = číslo řádku
ID potřebných místností
Název místnosti
0 1 2 3 4 5 6
Entry room Attic room Boiler Budoar Chauffeur Child play room Chodba hlavni
7 8 9 10 11 12 13
0, 9, 31, 13, 25, 10, 30 1, 25, 29 2, 7, 8 3, 6, 22, 12, 20, 25 4, 7, 14 5, 11, 35, 25, 33, 15, 17,21, 6 6, 33, 25, 5, 11, 21, 17, 15, 20, 3, 22, 12, 9 7, 8, 2, 19, 18, 34, 14, 4, 26, 28 8, 7, 2, 13, 10, 25 9, 22, 6, 0, 13, 10, 25 10, 30, 8, 25, 13, 11, 35, 21, 5 12, 22, 6, 16, 20, 3 13, 30, 10, 8, 25, 0, 9
Chodba sklep Chodba sklep Chodba Coverssation room Child room Dining room Entry
14
14, 4, 7
Garage
15
15, 27, 32, 33, 6, 11, 5, 25
Guest room
16
16, 25, 12, 6, 22
Kitchen
17
17, 23, 21, 11, 5
Koupelna
39
18
18, 7
Loundry
19
19, 7
Loundry
20
20, 3, 6, 12, 22
Library
21
21, 23, 35, 6, 25, 33, 15, 5, 17, 11
Loznice
22
22, 12, 16, 6, 25, 30, 3, 9
Main hall
23
23, 21, 35, 6, 17
Man wardrobe
24
24, 25
Pantry
25
Schody sluzebni
26
25, 8, 13, 10, 16, 6, 1, 22, 12, 32, 27, 21, 17, 11, 29, 3 26, 7
27
27, 25, 32, 15
Servant room patro
28
28, 7, 4, 26
Sklad
29
29, 25, 1
Summer room
30
30, 13, 10, 25, 0, 9
Zahrada
31
31, 0, 9
Cloak room and WC
32
32, 25, 27, 15, 6
WC patro
33
33, 15, 6, 11, 21, 17
WC patro male
34
34, 7
WC sklep
35
35, 21, 23, 17, 6, 11,
Woman wardrobe
Servant room
Tabulka 7.2 – Tabulky potřebné uzly
7.3 Vytvoření tabulky 7.1 Tabulka 7.1 obsahuje kvádry, které reprezentují obálky místností. Díky nim můžeme zjistit, v jaké místnosti se avatar nachází. V nejjednodušším případě, kdy má místnost tvar kvádru, postačí pro ni jeden řádek v tabulce 7.1. Zobrazeno na obrázku 7.2 (jen ve 2D), který odpovídá prvnímu řádku tabulky 7.1. Zdi místnosti se přesně shodují s kvádrem obálky.
40
-5,15
-z
0 x
2,15
4
Obrázek 7.2 – Obalový kvádr pro místnost
Pokud bude geometrie místnosti složitější, je zapotřebí místnost vhodně rozdělit. Místnost se bude skládat z více kvádrů, které na sebe navazují. Kdyby pro nějakou část prostoru, kde se může pohybovat avatar, chyběl záznam v tabulce 7.1, tak bychom nebyli schopni zjistit, kde se avatar nachází a nešel by upravit stav místností v paměti. Každá místnost může mít jen jeden kvádr. Aby se kvádry místností nepřekrývaly (jak znázorňuje červené šrafování na obrázku 7.3 vlevo), musíme místnost vhodně rozdělit na více kvádrů. Na obrázku 7.3 vlevo jsou špatně zvolené kvádry místností a dynamické načítání místností nebude pracovat správně. Bude-li v tabulce nejprve uveden kvádr č.1 a pak kvádr č.2. Budeme-li stát v bodě A bude správně vyhodnoceno, že jsme v místnosti jedna. Pokud bychom se dostali do bodu B, bude špatně vyhodnoceno v jaké místnosti stojí avatar (špatné vyhodnocení - místnost jedna; správné vyhodnocení místnost dvě), protože podle popisu vyhledávání v tabulce 7.1 je první výskyt považován za jedinou možnost. Dále se už v tabulce nevyhledává a řádek, který reprezentuje místnost dvě v bodě B, kde se kvádry překrývají, se nikdy nenajde.
41
A
A
1
B
2
1
B
2
Obrázek 7.3 – Špatné nastavení hodnot kvádrů (vlevo), správné rozdělení kvádrů (vpravo)
Na obrázku 7.3 vpravo je vidět, jak správně rozdělit obalový kvádr místnosti, aby vše správně fungovalo. Nyní má každá místnost dva záznamy v tabulce 7.1. Pokud je geometrie místností ještě složitější bude pro každou místnost v tabulce 7.1 více záznamů.
42
8. Procházka Pro ukázku některých místností jsem do modelu přidal virtuální procházku. Je rozdělena na čtyři na sebe navazující procházky a slouží jako průvodce po vile. Schéma procházky jsem znázornil na plánech v příloze C. Pro zobrazení menu ovládání a spuštění procházky, jsem do místnosti, kde procházka začíná, vložil otáčející se písmeno A. Po klinutí na toto písmeno nebo na jeden ze čtyř „viewpoitů“ se nastaví parametry procházky a zobrazí ovládací panel. Procházku lze zastavit, ukončit a změnit rychlost procházení. K jednotlivým procházkám jsem určil také „viewpointy“, které přenesou avatara do místnosti, kde lze spustit procházku. Schéma událostí řídící procházku, je zobrazeno na obrázku 8.1. Nejprve se klikem na určité písmeno A nastaví parametry procházky (nastavení na jakém místě se spustí animace procházení) a zobrazí se panel ovládání. Spuštěním procházky se spustí časovač, který dává skriptu časové impulsy. Samotný skript generuje změnu „fraction“ a tu posílá do interpolátorů polohy a orientace. Z interpolátorů už se jen hodnoty zapisují do aktivního „viewpoitu“, který se následně pohybuje.
43
timeSensor fraction_changed
Script
OI
fraction
Menu play
play
stop
stop
pause
pause
speed
speed
TS1 touchTime
set_fraction value_changed fract PI set_fraction value_changed
set_pr1
TS2 touchTime
Viewpoint
set_pr2 orientation
TS3 touchTime
set_pr3 position
TS4 touchTime
set_pr4
Obrázek 8.1 – Schéma událostí při animované procházce
Klíčové hodnoty jednotlivých interpolátorů je potřeba důkladně nastavit, aby animace probíhala podle představ. Zadávání hodnot vektorů do pole interpolátoru je zdlouhavé a musí být přesné, jinak procházka bude postupovat úplně jiným směrem než je zamýšleno. Důležitým parametrem je také načasování celé procházky, aby celá animace působila plynule. Zvolil jsem pro časování následující postup: • Nejprve jsem navrhl, kudy bude celá procházka procházet • Spočetl jsem délku celé procházky, která je 118,4m • Spočetl jsem počet otáčení na místě (poloha se nemění jen směr pohledu) a připočetl jsem 1m za každé otočení o 90 stupňů (v modelu vily 28 otočení)
44
• Délka procházky je celkem 146,4m • Podle vzorce
1 =& 0,00683 jsem určil, jaký časový okamžik bude potřeba 146,4
na změnu polohy o 1m • Nakonec jsem spočítal délkové rozdíly mezi jednotlivými klíčovými hodnotami a vynásobil časovou jednotkou. Tím jsem získal čas na překonání vzdálenosti mezi definovanými body • Pro časovač jsem vytvořil řadu, která začíná nulou a následně akumuluje časové hodnoty až do čísla 1.
Takto jsem vytvořil plynulou procházku. Výpočet času pro interpolátory je v Excelu na přiloženém DVD, v adresáři časování.
45
46
9. Testování Testování a vytvoření projektu jsem prováděl na stejném počítači. Testovací sestava: Intel Pentium 4 3Ghz RAM – 1536MB Grafická karta – ATI Radeon HD 4600 Series OS – Windows XP Profesional, SP3 HD – 400GB
Po vymodelování a zkompletování jsem otestoval funkčnost modelu. Nejprve jsem zkoušel jednotlivé modely místností, zda se vše zobrazuje v pořádku. Našel jsem několik drobností, které bylo nutné poupravit. Šlo především o špatně nanesené textury na nějaké plošce nebo o chybějící texturu. Po otestování všech modelů, zda jsou vizuálně v pořádku, jsem otestoval celý model bez dynamického načítání. Prošel jsem všechny místnosti a pozoroval, zda na sebe jednotlivé místnosti navazují a není někde viditelný přechod. Zjistil jsem špatně určenou výšku schodů z malé chodby do hlavní haly a tudíž podlaha v malé chodbě byla o 1cm vyšší. Problém jsem odstranil snížením podlahy o 1cm v malé chodbě. Jinou nesrovnalost jsem nenašel. Dále jsem vložil do modelu dynamické načítání a testoval jeho funkčnost. Procházel jsem modelem a testoval, jestli je někde vidět chybějící místnost. Několik místností opravdu chybělo. Důvodem bylo špatné stanovení viditelnosti z jedné místnosti do druhé na základě plánů. Tuto chybu jsem odstranil doplněním tabulky potřebných uzlů pro jednotlivé místnosti. Pro každou místnost jsem změřil FPS pro prohlížeče Cortona3D Viewer [19] a BS Contact [20]. Nejprve jsem naměřil FPS pro model bez dynamického načítání (tabulka 9.1), následně jsem změřil FPS při dynamickém načítání. FPS se v každé místnosti měnilo v závislosti na směru pohledu, proto jsem vždy zaznamenal minimální a maximální hodnotu FPS pro danou místnost (tabulka 9.2).
47
FPS Cortona
FPS BS Contact
MIN
MAX
MIN
MAX
0,85
11
1,4
12
Tabulka 9.1 – Měření FPS bez dynamického načítání
Bez dynamického načítání byla minimální hodnota FPS v prohlížeči Cortona3D pouhých 0,85 a v prohlížeči BS Contact 1,4. Při dynamickém načítání se nejmenší hodnota FPS zvýšila v prohlížeči Cortona3D na 5 FPS a BS Cortona3D na 15 FPS. Minimální hodnota FPS pro plynulé zobrazení (25 FPS) je zobrazena červenou čarou na obrázcích 9.1 a 9.2. U BS Contactu je méně místností (pod 25 FPS) než u Cortony3D a proto je lepší používat BS Contact. Velkou váhu měl počet aktuálně načtených místností a jejich velikosti (zda obsahovaly vymodelované vybavení místnosti jako je nábytek).
ID Název místnosti 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Entry room Attic room Boiler Budoar Chauffeur Child play room Chodba hlavni Chodba sklep Chodba sklep Chodba Coverssation room Child room Dining room Entry Garage Guest room Kitchen Koupelna Loundry Loundry
FPS Cortona MIN MAX
FPS BS Contact MIN MAX
Počet místností/místností s nábytkem
12
22
42
94
7/0
27
46
65
89
3/0
28
48
38
65
3/0
14
30
38
49
6/0
25
43
38
76
3/0
5
10
19
25
9/3
6
10
15
25
13 / 3
14
29
38
70
10 / 0
8
10
19
25
6/0
17
26
62
108
7/0
16
29
25
38
5/0
8
13
25
37
4/1
18
36
61
110
6/0
16
24
27
38
7/0
25
38
69
100
3/0
7
18
38
65
8/1
14
28
38
70
5/0
7
12
19
25
5/3
27
42
61
100
2/0
27
44
62
100
2/0
48
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Library Loznice Main hall Man wardrobe Pantry Schody sluzebni Servant room Servant room patro Sklad Summer room Zahrada Cloak room and WC WC patro WC patro male WC sklep Woman wardrobe
18
40
62
95
5/0
5
9
20
25
10 / 3
10
28
38
83
8/0
8
15
25
39
5/1
24
6
55
91
2/0
5
12
19
25
16 / 3
27
45
62
90
2/0
18
37
54
97
4/0
21
41
74
105
4/0
27
45
65
87
3/0
14
33
39
100
6/0
34
46
57
99
3/0
16
22
58
84
5/0
5
14
25
37
6/3
28
45
68
102
2/0
6
14
19
26
6/3
Tabulka 9.2 – Měření FPS s dynamickým načítáním
Minimální FPS Cortona 40
35
30
20
15
10
5
0 en try at roo tic m ro om bo i bu ler ch ch do ild au ar pl ffe ch ay ur db roo ch a h m o d la b v ch a s ni o k co ch dba lep nv od z er ba am sa p tio ric n h ch r o i o di ld r m ni oo ng m ro om en tr gu gar y es ag tr e oo ki t m ko che up n e lo lna u lo nd un ry dr y lib 2 ra lo ry ž m ma nic an in e w ha ar ll dr sc ob ho dy pa e n se se slu try r v r v že an an b t r t r ni oo oo m m pa tr su m s o m kl Cl e oa r r ad o k ro za om om h r an ada d w wc WC c pa pa tro tro w o m W ma an C s le w kl e ar p dr ob e
FPS
25
Obrázek 9.1 – Graf minimální FPS Cortona
49
Minimální FPS BS Contact 80 75 70 65 60 55 50 FPS
45 40 35 30 25 20 15 10 5
en try at roo tic m ro om bo i bu ler ch ch do ild au ar pl ffe ch ay ur db roo ch a h m od la b v ch a s ni o k co ch dba lep nv od z er ba am sa p tio ric n h ch ro i o di ld ro m ni n g om ro om en tr g gu a r y es ag tr e oo ki m tc ko he up n e lo lna u lo nd un ry dr y lib 2 ra lo ry ž m ma nic an i n e w ha ar ll dr sc ob ho dy pa e n se se slu try rv rv že an an bn tr tr i oo oo m m pa tr su m s o m k C er lad lo ak ro ro za om om h r an ada d w wc WC c pa pa tro tro w om W ma an C s le w kle ar p dr ob e
0
Obrázek 9.2 – Graf minimální FPS BS Contact
Nakonec jsem otestoval funkčnost virtuální procházky. U procházky jsem neshledal žádné závažné chyby. Procházku lze spustit, pozastavit nebo ukončit. Při prohlížení modelu v BS Contaktu jsem narazil na chybu, která vniká v důsledku kolize vložených dveří. Tato chyba vznikla na několika částech modelu. Konkrétně u vchodu do budovy a v chodbě ve sklepě. Tento problém jsem vyřešil pročištěním jednotlivých místností programem Chisel. Chyba ve sklepě zmizela, ale u vchodu jsem jí nedokázal odstranit. Vznik chyby je na obrázku 9.3 označen červeným bodem. Tato chyba vzniká pouze při zapnutých kolizích. Při průchodu hlavními dveřmi se tato chyba neprojevuje.
Obrázek 9.3 – Část plánu budovy s označením pádu BS Contactu 50
10. Závěr Ve spolupráci s diplomantem Petrem Mohelským jsme vytvořili model Müllerovy vily ve formátu VRML a X3D. Jeden z cílů bylo vymodelovat hrubou stavbu. Tu jsem nejprve rozdělil na místnosti a následně vymodeloval. Pro lepší vzhled jsem na jednotlivé části místností nanesl textury, aby místnosti vypadaly reálněji. Textury jsem vytvořil z fotek, které jsem nafotil ve vile. Nejdříve jsem připravil otvory pro dveře, které jsem následně rozmístil po celé budově. Mezi nejobtížněji modelované místnosti patřily chodby se schodištěm. Vymodelované místnosti jsem upravil na prototypy, aby bylo možné aplikovat centrální otevření dveří při animované virtuální procházce. Dále jsem navrhl prototyp, který reprezentuje jednu místnost a podle zaslané události načte geometrii místnosti do paměti a propojí události s načtenou místností pro centrální otevření dveří. Z těchto prototypů jsem sestavil celou budovu a implementoval dynamické načítání jednotlivých místností podle pozice avatara. Nakonec jsem navrhl a implementoval virtuální animovanou procházku, která uživatele provede vilou. Navrhl jsem takový průběh a časování, aby animovaný pohyb byl plynulý. Nedílnou součást diplomové práce tvoří návod, jak postupovat při modelování podobných staveb, které se podobají strukturou Müllerově vile. Výsledný model zobrazuje hrubou stavbu Müllerovi vily, kterou je možné do budoucna obohatit vymodelováním a rozmístěním nábytku po místnostech budovy. Dále lze doplnit virtuální procházku o historický výklad.
51
52
11. Literatura [1] Müllerova vila [online]. c2009 [cit. 2011-05-02]. Dostupné z WWW:
[2] TIŠNOVKÝ, Pavel . Root [online]. 8. 11. 2007 [cit. 2011-05-02]. VRML: jazyk pro popis virtuální reality. Dostupné z WWW:
.
[3] ŽÁRA, Jiří. Laskavý průvodce virtuálními světy [online]. Brno : Computer Press, 2000 [2011-05-02]. Dostupné z WWW:
[4] Blender [online]. [cit. 2011-05-02]. Dostupné z WWW:
[5] Autodesk [online]. c2011 [cit. 2011-05-02]. Autodesk 3ds Max. Dostupné z WWW:
[6] Autodesk [online]. c2010 [cit. 2011-05-02]. Autodesk Maya. Dostupné z WWW:
[7] Parallelgraphics [online]. c2000-2011 [cit. 2011-05-02]. VrmlPad. Dostupné z WWW:
[8] Chiesel [online]. c2006 [cit. 2011-05-02]. Dostupné z WWW: .
[9] LINDNER, Petr. Z pohledu fotografa : Než zmáčknete spoušť. Mobility. 1999, 11, s. 16.
53
[10] LINDNER, Petr. Z pohledu fotografa : Važme si vyvážení bílé. Mobility. 1999, 12, s. 15 - 16.
[11] LINDNER, Petr. Z pohledu fotografa : Letem světem ateliérem. Mobility. 2000, 1, s. 15 - 16.
[12] LINDNER, Petr. Z pohledu fotografa : Na fotky pěkně zostra. Mobility. 2000, 2, s. 15.
[13] LINDNER, Petr. Z pohledu fotografa : Objektiv v ohnisku zájmu. Mobility. 2000, 3, s. 20.
[14] LINDNER, Petr. Z pohledu fotografa : Expozimetr je v ceně. Mobility. 2000, 6, s. 29.
[15] LINDNER, Petr. Z pohledu fotografa : Zacloněná času. Mobility. 2000, 8, s. 21.
[16] KELBY, Scott. Digitální fotografie ve Photoshopu CS. Brno : Computer Press, 04.02.2005. 384 s.
[17] Adobe [online]. c2011 [cit. 2011-05-02]. Photoshop CS5. Dostupné z WWW:
[18] X3D-Edit Authoring Tool for Extensible 3D (X3D) Graphics [online]. c2007 [cit. 2011-05-02]. Dostupné z WWW:
[19] Cortona3D [online]. c2009 [cit. 2011-05-02]. Cortona-3d-Viewer. Dostupné z WWW: < http://www.cortona3d.com/Products/Viewer/Cortona-3D-Viewer.aspx>
[20] Bitmanagement [online]. c2011 [cit. 2011-05-02]. BS Contact. Dostupné z WWW: < http://www.bitmanagement.com > 54
Příloha A – Uživatelská příručka Instalace: Pro spuštění je potřeby mít nainstalovaný nějaký VRML nebo X3D prohlížeč. Ke stažení na http://www.bitmanagement.de/ Nainstalujte prohlížeč podle návodu.
Prohlížení modelu: Model lze spouštět ze zdrojového DVD otevřením souboru Vrml „model cela vila/vila.vrl“ nebo X3d „model cela vila/vila.x3d“. Můžeme také celou složku nakopírovat na HDD a spustit stejným způsobem jako z DVD. Model lze nakopírovat také na nějaký ftp server a pak prohlížet z internetu. K pohybu pomocí prohlížeče prostudujte jeho nápovědu. Pro jednotlivé procházky jsou v modelu umístěny otáčející se červená „A“. Při kliku na toto písmeno se zobrazí menu pro virtuální animovanou procházku. Stejného efektu lze docílit přímo vybráním jednoho ze čtyř definovaných viewpointů. Menu má tyto položky: •
Spuštění animace
•
Pozastavení animace
•
Ukončení animace
•
Rychlost prohlížení
55
56
Příloha B – Obsah přiloženého DVD
57
58
Příloha C – Mapy vily a rozdělení místností
28
Procházka 1
26 14
4
34 19
7
18
8 2
Obrázek C.1 – Sklep ID pokoje v plánu na Obr. 6.1 2 4 7 8 14 18 19 26 28 34
Jméno pokoje Místnost s boilerem Technická místnost Chodba Schody
Garáž Prádelna 1 Prádelna 2 Pokoj pro sluhy Sklad WC Tabulka C.1 – Popis místností sklep 59
Poznámka
Nulový bod v přízemí Obrázek C.2
22
6 9
0 24 31 25 10
13
8
Procházka 2 30
Obrázek C.2 - Přízemí ID pokoje v plánu na Obr. 6.2 0 6 8 9 10 13 22 24 25 30 31
Jméno pokoje Vstupní hala Chodba obývák
Poznámky Nulový bod v mezipatře Obrázek C.3
Chodba do sklepa Malá chodba Konverzační místnost Vstupní chodba Hlavní hala Špajz Služební schody Zodpovídá Petr Mohelský Zahrada Šatna a WC Tabulka C.2 – Popis místností přízemí
60
22
6
Procházka 3 12 3
25 20
16
Obrázek C.3 – Mezipatro
ID pokoje v plánu na Obr. 6.3 3 6 12 16 20 22
Jméno pokoje Budoár Chodba obývák Jídelna Přípravna a kuchyň Knihovna Hlavní hala
25
Služební schody
Poznámky
Nulový bod v přízemí Obrázek C.2 Nulový bod v přízemí Obrázek C.2
Tabulka C.3 – Popis místností mezipatro
61
21 23 35 17 11
6
15 33 Procházka 4 27
23 2
25
5
Obrázek C.4 – 1. patro ID pokoje v plánu na Obr. 6.4 5 6
Jméno pokoje Dětský hrací pokoj Chodba obývák
11 15 17 21 23 25
Ložnice dětí Pokoj pro hosty Koupelna Ložnice Pánská šatna Služební schody
32 33 35
WC a koupelna Malé WC Dámská šatna Tabulka C.4 – Popis místností 1.patro 62
Poznámky Nulový bod v mezipatře Obrázek C.3 Zodpovídá Petr Mohelský Zodpovídá Petr Mohelský Zodpovídá Petr Mohelský Nulový bod v přízemí Obrázek C.2
29
25
1
Obrázek C.5 – 2. patro
ID pokoje v plánu na Obr. 6.5 1 25 29
Jméno pokoje Letní salónek Služební schody
Poznámky Nulový bod v přízemí Obrázek C.2
Atická místnost Tabulka C.5 – Popis místností 2.patro
63
64
Příloha D – Celá tabulka pro dynamické načítání Min X
Max X
Min Y
Max Y
Min Z
Max Z
ID
2,15
4
-0,5
2,65
-5.15
0
13
0
2,15
-0,5
2,65
0
-0,45
10
-1,1
2,15
-0,5
2,65
-2,15
-0,45
10
0,2
2,15
-0,5
2,65
-2,15
-2,65
10
-1,1
4
-0,5
2,65
-8,05
-5,15
0
-1,1
-0,2
-0,5
2,65
-9,45
-8,05
0
0,3
2,1
-0,5
2,65
-8,55
-80,05
0
-1,1
0,2
-0,05
2,65
-2,65
-2,15
31
-1,1
2,15
-0,05
2,65
-5,15
-2,65
31
2,5
4
-0,05
2,65
-8,65
-8,05
9
-0,15
4
0,46
3,24
-10,15
-8,65
9
0,1
2,1
1,14
5,24
-11,15
-10,15
22
-1,4
9,6
1,14
5,24
-17,35
-11,15
22
2,1
5,2
1,14
5,24
-11,15
-10,15
6
3,1
3,9
2,8
5,15
-10,15
-9,15
6
3,9
5,2
2,16
5,15
-10,15
-9,15
6
3,9
5,2
2,84
5,15
-9,15
-8,05
6
3,9
5,2
3,01
5,15
-8,05
-7,75
6
3,9
5,2
3,18
5,15
-7,75
-7,45
6
3,9
5,2
3,35
5,15
-7,45
-7,15
6
3,9
5,2
3,52
5,15
-7,15
-4,95
6
2,9
3,9
3,52
5,15
-9,1
-4,95
6
2,9
6
5,15
8,61
-11,35
-4,95
6
5,2
11,7
2,33
5,15
-11,15
7,2
10,7
2,33
5,15
-5,85
-3,15
16
5,8
10,7
2,33
5,15
-3,15
0,15
16
-1,4
0,8
5,91
8,7
-4,75
0,05
27
0,8
4
5,91
8,7
-3,65
0,05
32
0,8
1,9
5,91
8,7
-4,75
-3,65
33
65
-5,85
12
1,9
4
5,91
8,7
-4,95
-3,65
33
-1,4
1,9
5,91
8,7
-4,95
-4,75
15
-1,4
2,9
5,91
8,7
-8,75
-4,95
15
-1,4
2,9
5,56
8,7
-11,35
-8,75
17
-1,4
1,5
5,56
8,7
-12,25
-11,35
17
-1,4
1,5
5,56
8,7
-17,45
-12,25
23
1,5
7,4
5,56
8,7
-16,45
-11,35
21
7,4
10,2
5,56
8,7
-17,45
-11,35
35
6
10,2
5,56
8,7
-11,35
-6
11
6
10,2
5,56
8,7
-6
-4,95
5
7,5
10,2
5,56
8,7
-4,95
-2,75
5
6,1
10,2
5,56
8,7
-2,75
-0,05
5
4
5,8
3,52
8,7
-4,95
0,15
25
4
5,8
1,19
3,52
-3,85
0,15
25
4
5,8
8,7
11,9
-4,7
0,05
25
-1,2
4
9,31
11,9
-5,1
0,05
29
5,8
10,2
9,31
11,9
-4,85
0,05
1
-1,3
1
2,84
5,15
-3,85
0,35
20
1
2,9
2,84
5,15
-4,25
0,55
20
2,9
4
2,84
5,15
-4,95
-0,55
20
-1,4
0,3
2,54
5,15
-8,15
-3,95
3
0,3
2,9
2,54
5,15
-8,15
-4,35
3
-0,3
2,9
3,45
5,15
-10,15
-8,15
3
-1,4
-0,3
2,65
5,15
-9,45
-8,15
3
-1,4
-0,3
1,14
5,15
-10,15
-9,45
3
-1,4
0,1
1,14
5,15
-11,15
-10,15
3
4,1
4,9
-1,07
1,13
-9,35
-5,05
7
4,1
4,9
-1,75
1,13
-12,55
-9,35
7
4,9
6,5
-1,75
1,13
-13,55
-11,45
7
6,5
7,3
-1,75
1,13
-17,35
-11,75
7
3
4,1
-1,75
1,13
-11,25
-10,25
7
3,7
4,1
-1,75
1,13
-12,55
-11,75
7
66
7,3
10,3
-1,75
0,8
-13,45
-11,45
4
7,3
10,3
-1,75
0,8
-17,35
-13,45
26
3,4
10,2
-1,75
0,8
-21,15
3,7
6,5
-1,75
0,8
-17,35
-12,55
14
-0,2
3,7
-1,75
0,8
-17,35
-11,75
14
-1
3
-1,75
0,8
-11,25
-10,25
34
4,9
10,3
-1,07
1,13
-11,45
-8,65
19
4,9
6,3
-1,07
1,13
-8,65
-8,45
19
6,3
10,3
-1,07
1,13
-8,65
-8,45
18
4,9
10,3
-1,07
1,13
-8,45
-5,75
18
4,9
7
-1,07
1,17
-8,75
-5,25
18
5,9
7
-1,92
2,33
-3,75
-0,85
2
7
10,3
-1,92
2,33
-5,75
-0,05
2
4
4,95
1,14
2,91
-8,55
-7,95
5
4
4,95
1,14
3,08
-7,95
-7,75
5
4
4,95
1,14
3,25
-7,75
-7,45
5
4
4,95
1,14
3,42
-7,45
-9,85
5
4,95
5,8
1,14
3,42
-4,75
-3,85
5
4
5,9
-1,07
1,19
-5,5
0,05
8
-100
100
-0,5
13
0
10
30
-100
-1,4
-10
13
-22
0
30
10,4
100
-10
13
-100
0
30
-100
10,4
-10
13
-100
-22
30
-1,4
2,9
-10
13
-22
-17,5
30
2,9
10,4
0,95
13
-22
-17,5
30
-1,4
10,4
9
13
-17,5
-5,1
30
-100
100
13
100
-100
100
30
-1,4
-0,3
-2
0,8
-17,5
-11,5
30
-17,35
Tabulka D.1 – Kompletní převodní tabulka z pozice na ID místnosti
67
28
68
Příloha E – Porovnání modelu a fotografií
Obrázek E.1 – Porovnání chodby
69
Obrázek E.2 – Porovnání příchozí chodby
70
Obrázek E.3 – Porovnání hlavní místnosti
71