DIPLOMOVÁ PRÁCE
Prezentace VRML na Internetu
2. část budovy PF JCU v ulici Jeronýmova
vypracoval: Jaroslav Posekaný
vedoucí diplomové práce: ing. Jan Jára
Rád bych zde poděkoval ing. Janu Járovi za pomoc při tvorbě diplomové práce, Vesovi za dodání WWW odkazů na stránky o VRML a 3D scannování, Janě Syrovátkové za zapůjčení počítače a za provedení korektur, a Vladislavu Pilnému za cenné rady při tvorbě VRML modelu.
Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně, a že jsem uvedl veškerou použitou literaturu.
Obsah
1.1. VRML a jeho použití při modelování budov
2. METODY DIGITALIZACE PROSTOROVÝCH OBJEKTŮ
2.1. Ruční digitalizace
2.1.1. Ruční digitalizace malých a středních objektů
2.1.2. Ruční digitalizace velkých objektů (budovy atd.)
2.2. Digitalizace pomocí scannerů
2.2.1. Postup při scannování objektu
2.2.2. Digitalizace budov
3. EDITORY VRML NA INTERNETU
3.1. RenderSoft VRML editor
3.1.1. Stručný popis editoru
3.1.2. Srovnání vygenerovaného kódu
3.1.3. Závěr:
3.2. Internet space builder
3.2.1. Stručný popis editoru
3.2.2. Srovnání vygenerovaného kódu
3.2.3. Popis jednotlivých oken
3.2.4. Popis jednotlivých modů programu
3.2.5. Závěr:
3.3. SPAZZ3D
3.3.1. Popis programu
3.3.2. Popis jednotlivých ikon
3.3.3. Některé příkazy z menu
3.3.4. Ukázka zdrojového kódu
3.3.5. Závěr
3.4. VRMLBEANS 1.0
3.4.1. Stručný popis programu
3.4.2. Závěr
4. METODY KOMPATIBILITY
5. VRML model
6. Literatura
Virtuální realita si pomalu, ale jistě nachází místo ve slovníku běžného uživatele Internetu. Každý si pod tímto pojmem představí něco jiného, ale většina se asi shodne na obraze potemnělé vojenské počítačové laboratoře, kde stojí několik konstrukcí, připomínajících zařízení pro výcvik pilotů. Dvě kovové elipsy, spojené středy, v nichž je umístěn člověk, oděný v dráty protkanou a senzory posetou přiléhavou kombinézu a ovládající jakýmsi velmi složitým a záhadným způsobem přepestrý svět uvnitř počítače. Mezi neodmyslitelné pomůcky patří virtuální helma (či alespoň virtuální brýle) a datová rukavice. Tuto vizi nabízejí filmy (například slavný Trávníkář).
Skutečnost, jak už to bývá, by zřejmě většinu z těchto představ zklamala. Uživatel virtuální reality většinou stojí nebo sedí na židli a oblečen je v libovolném oděvu. Ti bohatší mají virtuální helmu (např. VFX-1) a datovou rukavici, obojí připojené k počítači. Ti méně movití (což je většina) disponují pouze oním osobním počítačem. Ale i oni se mohou procházet ve světě virtuální reality, byť ochuzeni o některé efekty, např. prostorové vidění či reakce počítače na pohyb hlavy (u obzvláště drahých periferií i na pohyb zorniček).
Virtuální realita se dnes již běžně používá na řadě špičkových výzkumných pracovišť.
S její pomocí si lze například prohlížet molekuly ze všech stran, létat mezi nimi, pohybovat se po povrchu jiných planet či na dalších místech, kde je výskyt člověka nemožný či alespoň nepravděpodobný. V medicíně je možné pomocí virtuálních modelů rozebírat a skládat člověka jako stavebnici, každý orgán lze podle potřeby zvětšit či natočit. Realitní kanceláře a architekti mohou nechat svého klienta, aby se prošel v domě či bytě, který zatím ještě není postaven nebo je vzdálen stovky kilometrů. Možnosti virtuální reality jsou zkrátka ohromné.
Jenže aby mohli vědci poletovat mezi molekulami, musí být někdo, kdo jim je naprogramuje. Kdo je umístí do prostoru, dá jim vzhled, tvar, barvu, vlastnosti. A když už se někdo takový najde, je nutné, aby měl jazyk, ve kterém bude moci rozvíjet svou tvořivost. První jazyk, který byl zároveň přijat jako standard, byl jazyk VRML (Virtual Reality Modelling Language). Je to velmi mocný nástroj, i když zatím stále ještě nedostačující. Ve VRML se nyní dají na Internetu najít tisíce různých útvarů, předmětů, objektů, krajin, budov a dokonce i celých měst. Mezi největší, nejpropracovanější a zároveň nejslavnější patří virtuální model Dublinu.
Hvězdárna ve Valašském Meziříčí má na svých stránkách
www.inext.cz/hvezdarna/3DSvet/3DSvet.htm
procházku po virtuálním Marsu, VRML model Pathfinderu a jiné, neméně zajímavé věci.
Jazyk VRML, konkrétně jeho verze 2, kterou se zde budu zabývat, je dnešní standard pro vytváření virtuálních objektů pro “méně movité”, tedy pro takové, kteří mají k dispozici pouze standardní počítač. Dokáže simulovat pouze sluchové a s určitými omezeními i zrakové vjemy, ale není to zas až tak málo, jak si ukážeme.
U každého tělesa ve virtuálním prostoru má programátor ve VRML (dále jen programátor) možnost a dokonce téměř povinnost nastavit objektům barvu, lesk, průhlednost, texturu atd. Přednastavená tělesa mají totiž bílou barvu, proto je vidět pouze obrys. Lépe vypadá nastavení barvy, ještě lépe nastavení jasu a odlesku povrchu. VRML prohlížeč v reálném čase vypočítává odlesky, jas a průsvitnost těles, takže třeba kovový sloup mění svůj vzhled, když kolem něj procházíme, částečně také proto, že avatar má svou vlastní čelní svítilnu. Téměř vždy vypadá nejlépe textura nanesená na objekt, takže není problémem vidět poměrně reálně vypadající dřevěnou bednu.
VRML ale dokáže objekty i animovat. Jednotlivé prvky virtuálního světa mohou reagovat na náš dotek kurzorem, na dotek samotného avatara nebo na jeho pouhou blízkost či přítomnost.
V různých virtuálních světech můžeme vidět objekty, které se dají do pohybu, když se jich dotkneme. Proximity sensor může např. rozsvítit světlo, když vejdeme do tmavé chodby, když se dotkneme avatarovou “rukou” CD přehrávače, může se spustit hudba atd.
VRML dokáže také přehrávat wavy, MIDI a AVI soubory, takže můžeme slyšet hluk motoru, případně v kině na plátně může být promítán film, ve virtuální televizi můžeme také sledovat krátkou smyčku filmu.
Animační efekty jsou však poměrně náročné na paměť i na procesor, takže jejich přehnané používání nám může pobyt ve virtuální realitě poněkud znepříjemnit až znechutit.
Jedno z odvětví, kde se může virtuální realita uplatnit, je stavění budov. Mít možnost projít se v domě, který teprve bude postaven je nesporná výhoda. Můžeme tím přijít třeba na to, že schody do druhého patra jsou přeci jen příliš strmé nebo že daná místnost má málo oken. Zjištění podobných nesrovnalostí a závad může pomoci k vytvoření skutečně vyhovujícího návrhu.
Budovy ve VRML se vytvářejí stejně jako ostatní objekty – skládáním ze základních těles. Toto zdánlivě prosté konstatování s sebou ve skutečnosti přináší řadu větších či menších praktických problémů. Stěny jsou tvořeny z kvádrů, dveře pomocí kvádru, animace a touch sensoru atd. K tomu nám mohou výborně posloužit tzv. buildery, přesněji řečeno buildery umožňují vytváření budov. Teoreticky totiž není žádný problém psát zdrojový kód v textovém editoru, ale prakticky trvá sestavování stěn z jednotlivých kvádrů příliš dlouho. Rovněž je nutné řešit problémy kolizí mezi jednotlivými tělesy. Toto vše při práci v builderech odpadá. Builderům bude věnována pozornost v kap. 4.
Již zde bylo zmíněno, že budovy se stavějí z kvádrů, ale představa budovy, sestávající z desetitisíců drobných cihliček je mylná. Teoreticky nám samozřejmě nikdo a nic nebrání v tom, abychom si postavili budovu tímto způsobem – ale i pokud odhlédneme od ohromné časové náročnosti takovéhoto projektu, zbývá tu ještě omezující faktor současného hardwaru. Pokud přihlédneme k množství objektů a výpočetních operací, které s nimi musí daný prohlížeč provádět, nastanou – mírně řečeno – problémy.
Daleko vhodnější je sestavování budov z jakýchsi “panelů”, což v podstatě odpovídá představě “velké cihličky”. Rozdíl spočívá ve velikosti. Pro počítač je totiž velký rozdíl, jestli zobrazí deset tisíc “cihliček” nebo sto “panelů”.
Nabízí se tu přímo další metoda, opět velmi podobná, sestavování celých stěn přímo z jednoho kusu. Osobně ji považuji za nejvhodnější ze stavebnicových principů, ale nevýhoda je zjevná: Nelze vzít jedno těleso, pokládat jeho kopie znovu a znovu a postavit z něj celou budovu. Každý kvádr zde je jinak velký, takže práce trvá déle a je více unavující. Celkový výsledek je sice rychlejší, ale silnějších pentiích rozdíl není zas až tak markantní. Tato metoda je však velmi vhodná, když píšeme program bez editoru. Zde nabývá pravidlo “méně znamená více” platnosti téměř všeobecné, neboť každé další těleso navíc znamená dalších několik řádek, a při větších budovách je rozdíl doslova citelný. Navíc, pokud máme k dispozici stavební plán, můžeme využít systému souřadnic a pouhým přičítáním hodnot ze stavebního plánu vytvářet velmi rychle celé stěny a součásti budov. Jakákoliv ruční metoda je však zjevně pomalejší než vytváření v dobrém editoru.
Jak již bylo zmíněno, virtuální realita neslouží jen k vytváření fantastických a snových světů. Daleko častěji se využívají objekty z reálného světa, existující objekty, budovy a krajiny. Ty je samozřejmě nutné zdigitalizovat, tj. převést do datové podoby. Digitalizace se netýká jen VRML, používá se jí i ve strojírenství, v policejní praxi, biologii, lékařství, pro filmové triky... Digitalizace budov má do budoucna velké využití v architektuře. Velkým přínosem pro tuto oblast by byl vývoj scannerů pro budovy.
Jednou z nejjednodušších metod digitalizace je ruční digitalizace. Jedná se v podstatě o manuální převedení do datové podoby pomocí jednoduchých měřících přístrojů. Často to je jediná možnost pro běžného programátora, jak zdigitalizovat prostorový objekt bez velkých finančních nákladů. Pokud se jedná o firmu, která se zaměřuje na práci s digitalizovanými objekty, koupí si nebo alespoň pronajme trojrozměrný scanner, protože námaha s ruční digitalizací je při velkém množství objektů neadekvátní vynaloženým prostředkům na využití 3D scanneru.
Jednoduché tvary lze zdigitalizovat pouhou úpravou základních tvarů, které dává daný systém k dispozici (např. kvádr, koule, kužel atd.), ale ve většině ostatních případů je nutné objekt rozdělit na jednodušší a ty přenést do počítače, což ovšem ve složitějších případech jde jen velmi těžko. Např. list papíru se přenese poměrně lehce (tenký bílý kvádr), sklenice je už o něco složitější (dutý válec není tak jednoduché udělat), zdigitalizovat dětský traktůrek už bude záležitost poměrně složitá. U malých předmětů, které budou malé i ve virtuální realitě (např. když bude výše zmíněný dětský traktůrek součást interiéru bytu) není třeba příliš velká přesnost a postačí jen několik základních tvarů, pokrytých jednoduchou texturou či prostě obarvených. Přílišné detaily by navíc nebyly vidět při běžném procházení bytem a příliš velký počet objektů by zbytečně zdržoval procesor. Pokud bude ale onen dětský traktůrek reprezentován ve VRML např. na veletrhu hraček nebo ve virtuálním internetovém obchodním domě, je jeho přesnost a detailní zpracování velmi žádoucí.
Svou roli tu samozřejmě hraje i přesnost, se kterou je nutné daný objekt přeměřit a tato data dále zpracovat. U malého objektu nejsou milimetry většinou důležité, ale třeba na modelu lidského těla, určeného pro výuku mediků, ano.
Digitalizování budov a jiných velkých objektů se často neobejde bez topografických pomůcek a znalosti jejich používání. Digitalizace budov se tak stává poměrně pracnou a zdlouhavou, neboť musíme vytvořit naše vlastní plány stavby. Tato starost odpadá, máme-li k dispozici stavební plány budovy. V těch jsou uvedeny rozměry chodeb a místností, což nám ušetří spoustu práce.
Jelikož většina budov má pravidelný tvar, dá se toho s výhodou využít. Stačí změřit tloušťku zdí, výšku stropů, souřadnice rohových bodů místnosti a zbylé body snadno dopočítáme. Získat rozměry kvádrů, které tvoří stěny místností a jejich doplnění do modelu je pak otázkou (řádově) minut.
Dále autor uvede vlastní způsob, kterým by se daly také digitalizovat budovy. Uvedu jej v následující podkapitole, pojednávající o scannerech.
Konkrétní problémy, na které jsem narazil při digitalizaci budovy PF JCU jsou blíže popsány v kapitole 5.
Výše popsané způsoby jsou sice vždy a každému k dispozici, ale občas je nutné použít silnější nástroj na digitalizaci. Je jím trojrozměrný scanner.
Jedná se v podstatě o systém digitálních fotoaparátů či kamer, které jsou připojeny k počítači. U jednodušších modelů je scanner složen ze tří částí.
První je otočná základna, na kterou se pokládá scannovaný předmět a která je připojena na sériový port PC. Tak trochu připomíná hrnčířský kruh a má v podstatě stejnou funkci - otáčet předmětem. Základna je připojena přes sériový port k počítači.
Dále jsou připojeny digitální kamery, které slouží k zachycování textur a tvaru předmětu. V podstatě by se dalo říci, že tyto kamery a software jsou klíčovou částí celého scanneru. Jsou připojeny k počítači pomocí USB portu.
Ještě je připojeno několik reflektorů (nejčastěji dva), které slouží pro dokonalé nasvícení předmětu.
Na otočnou základnu se postaví scannovaný předmět. Jeho postupným otáčením a snímkováním se v počítači vytvoří řada fotografií, na kterých je požadovaný předmět vyfotografován ze všech stran. Čím více fotografií je vytvořeno, tím přesnější a věrnější bude finální objekt.
obr. 1-9 Posloupnost digitálních fotografií při scannování
Potom se fotografie začnou zpracovávat softwarově. Scannovaný objekt se oddělí od pozadí a přitom vznikne řada dvoubarevných snímků, které lze upravit v libovolném grafickém editoru. V tomto kroku je důležité, aby vynikl obrys předmětu, protože tím se v následujících krocích vytvoří tvar předmětu.
(obr. 10)
obr. 10
V této fázi zpracování dat se software snaží z fotografií, dodaných v předchozím kroku sestavit tvar předmětu. Přitom se bere v úvahu poloha předmětu při snímkování. Na konci tohoto kroku už si můžeme prohlédnout prostorový obraz, i když prozatím pouze bodový.
(obr. 11)
obr. 11
Další fáze se nazývá triangulace a spočívá v propojení mnoha bodů v trojúhelníky, se kterými se potom může dále pracovat. Metoda rozdělení povrchu tělesa na trojúhelníkové polygony je velmi často užívaná metoda při práci s 3D grafikou, když je třeba použít textury a jejich mapování.
(obr. 12)
obr. 12
Poté se trojúhelníky přetransformují do podoby povrchu předmětu tak, jak bude nejpravděpodobněji odpovídat předloze.
Model je sice zatím ještě monochromatický, ale je připraven pro mapování textury či obarvení.
(obr. 13)
obr. 13
Nakonec se na těleso nanese textura, vzniklá ze spojení bitových map z obrázků, patřičně modifikovaná a promítnutá na objekt. Výsledek lze uložit ve většině standardních formátů pro práci s trojrozměrnými objekty a také samozřejmě ve VRML formátu.
Další metoda, která by mohla být použita pro digitalizaci budov, by mohlo být využití klasického scanneru.
Plán budovy, přesněji jednoho jejího patra, by se nascannoval jako obrázek. Ten by se potom upravil v libovolném obrázkovém editoru, odstranilo kótování, některé značky atd. Potom by speciální software (pracující na podobném principu jako software pro převod textu z nascannovaných obrázků do textové podoby) vytvořil podle údajů v obrázku stěny, s předem zadanou výškou stropu by mohl přímo vytvořit i místnosti. Tento hrubý model by se potom upravil v libovolném editoru a výsledek by byl daleko méně pracný než ruční digitalizace.
Na tuto metodu jsem zatím při shánění materiálů na tuto kapitolu nenarazil. Je možné, že ji objevil již někdo přede mnou a uvedl ji do praxe, zatím jsem však o tom neslyšel.
Editor, tedy spíše builder je nezbytná věc k tvoření větších objektů ve VRML. Zpočátku je doporučeno psát VRML zdrojové kódy ručně v textovém editoru, aby se případný zájemce o programování ve VRML naučil programovat, osvojil si základní dovednosti a získal zkušenosti, které se nedají získat z příruček a manuálů. Při větších projektech se builder stává nezbytností a je na čase se porozhlédnout po internetu, jaký editor si pořídit. Jelikož sám autor potřeboval podobný builder, doplnil tedy do své diplomové práce recenze na několik programů, se kterými se na Internetu setkáme nejčastěji, aby byl usnadněn výběr těm, kteří stojí před podobnou volbou. Rovněž zde bude zhruba popsáno jejich ovládání. Bylo by dobře, kdyby následující recenze byly brány jako subjektivní hodnocení, které se nemusí shodovat s míněním ostatních. Navíc neustále vznikají jiné buildery a již nyní může být dokončován jiný, jehož existence byla v době psaní této diplomové práce ještě neznámá.
Jméno: RenderSoft VRML editor (RVE)
Autor: RenderSoft software, 1997-1998
Testovaná verze: 1.722
Velikost před instalací: 1.32 MB
Velikost po instalaci: 2.01 MB
Způsob instalace: dekomprimace
Ke stažení: www.tucows.cz, vyhledat RenderSoft
URL výrobce: nenalezeno v programu
Na tento VRML editor autor narazil jako na první, který ho zaujal svou velikostí a faktem, že se nemusel instalovat (pouze rozbalit ZIP soubor), takže se vešel na školní konto a dokonce mohl být spuštěn. Na první pohled vypadá velmi hezky, jednoduše, jako stvořený pro rychlé vytváření nenáročných úloh. Panel nástrojů obsahuje jen opravdu nejnutnější nástroje, vesměs ty, které jsou opravdu potřeba. K dispozici je rychlé přepínání ovládání pohledů na scénu a na objekt. Při bližším zkoumání a pokusech s nabízenými objekty se však ukáže, že RenderSoft VRML editor má neprakticky vytvořený systém pohybování objekty. Šipky a , sloužící pro manipulaci pohledem na scénu, reagují úplně jinak než jsme zvyklí z jiných 3D builderů, např. Truespace. Aktivovaný nástroj při stisku levého tlačítka myši a pohybem vlevo a vpravo poslouchá, pohybem nahoru a dolů se nepohybuje nahoru a dolů, jak by se dalo očekávat, ale zoomuje. Teprve stisk pravého tlačítka umožňuje pohyb v horizontální rovině. Chvíli trvá, než si na to zvykneme a i po delší době se občas stane, že zapomeneme, ale dá se to snést. Zkoušení nástroje dokonale zmate, jelikož levé tlačítko funguje tak, jak jsem očekával od levého v nástroji , ale pravé tlačítko pohybem vlevo a vpravo otáčí scénou kolem osy, která leží ve středu obrazovky. Pohyb nahoru a dolů působí jako pouhý posuv, žádné trojrozměrné otáčení se tedy nekoná.
Při pokusech s otáčením objektu pomocí šipek , a zjistíme stejné nedostatky, jako při ovládání manipulace se scénou. Navíc zjistíme, že zde není proporcionální zvětšování, je nutné zvětšovat zvlášť každou stranu pohybem myši. Přesná práce se zachováním proporcí se tím znemožňuje.
Ten pravý požitek však nadchází, jestliže se pokusíme některé objekty spojit. Názorně nás o tom může přesvědčit pokus o vytvoření špičatého válce, tj. pokus umístit kužel a válec o stejném průměru na sebe podstavami. Díky špatně asociovaným pohybům myši při modifikaci tělesa a špatně vyřešenému otáčení scénou se nám to nepodařilo ani po dvaceti minutách. Pro složitější modelování je tedy toto řešení naprosto nepoužitelné.
Záhy zjistíme další poměrně nepříjemný fakt, že zdroj světla nelze smazat. Jediné řešení je vytvořit novou scénu a překopírovat do ní již hotové objekty. V menu lze sice světla zakázat, tím ale zakážeme všechny světelné zdroje.
obr. 14 – Vzhled hlavního okna
Barvení tělesa svůj účel plní, potěšila mne možnost nastavit průsvitnost a svítivost. Stejně tak i potahování texturou, která se při zvětšování a zmenšování velmi hezky modifikovala.
obr. 15 Menu pro editaci barev
obr. 16 a 17
Ukázka mapování textury. Krychle s texturou (obr. 16) se modifikuje na kvádr (obr. 17). Textura se modifikuje překvapivě dobře a bez jakýchkoliv vad.
RVE umožňuje i vytváření jednoduchých animací s objekty. Panel nástrojů animací je překvapivě dobře vyřešen, obsahuje vše potřebné a je funkční.
Další dobrá funkce je okénko Reset, které obsahuje jedno tlačítko, jehož aktivací kliknutím docílíme okamžitého přemístění právě aktivního tělesa do středu obrazovky.
K dalším kladům patří poměrně přehledný zdrojový kód. Program mne ale nepříjemně překvapil, když zdrojový text, který dále používám pro srovnání efektivity vygenerovaného VRML kódu, odmítl načíst s poukázáním na jakousi chybu (Cosmoplayer jej načetl bez chyby), takže následující ukázka zdrojového kódu není po rekompilaci, ale vytvořením v builderu.
Chyba pravděpodobně vznikla odlišností mezi standardem VRML 1.0 a VRML 97. RVE totiž nepodporuje standard VRML97, je v něm implementován pouze starý VRML 1.0, což je však při jeho stáří pochopitelné. Otázkou však zůstává, proč výrobci svůj komerční produkt neupgradují.
Zdrojový kód, napsaný autorem této práce:
#VRML V2.0 utf8
Transform {
children Shape { geometry Box { size 2 2 2}
} }
Kód RVE:
#VRML V1.0 ascii
#RenderSoft VRML Editor was used to create this file
Separator {
PerspectiveCamera {
position 0.000 0.000 5.000
orientation 0.000 0.000 1.000 0.000
focalDistance 5.000
heightAngle 0.785
}
DirectionalLight {
intensity 1.000
color 1.000 1.000 1.000
direction 1.000 1.000 -1.000
}
Separator {
Transform {
scaleFactor 0.300 0.300 0.300
}
Cube {
width 2.000
height 2.000
depth 2.000
}
}
}
( byly odstraněny přebytečné mezery mezi řádky)
RenderSoft VRML editor nepovažuji při vytváření VRML za použitelný kvůli přílišným nedostatkům při manipulaci se scénou a tělesem. Chybí podpora VRML97. Je to škoda, protože tento editor obsahuje mnoho příjemných drobností, které ulehčují práci. Rovněž jeho velikost je velký klad.
Jméno: Internet space builder (ISB)
Autor: Parallelgraphics software, 1998-1999
Testovaná verze: 3.1 (trial)
Velikost před instalací: 7.25 MB
Velikost po instalaci: 9.3 MB
Způsob instalace: dekomprimace a následná instalace
Ke stažení: www.parallelgraphics.com
URL výrobce: www.parallelgraphics.com
Tento VRML builder mi byl doporučen mým kolegou jako velmi zdařilý. Hned po instalaci jsem zjistil, že už na první pohled se jedná o skutečně kvalitní produkt. Hlavní okno je rozděleno do mnoha menších. Každé z nich sice je příliš malé, aby se v něm dalo něco dělat, ale velikosti oken nejsou pevné a jejich hranice lze snadno přesunout myší, takže okno lze zvětšit či zmenšit, samozřejmě na úkor velikosti jiného. Program dále podporuje metodu drag&drop, takže můžeme uchopit myší texturu dole v políčku se seznamem textur a přetáhnout jí na objekt v Perspective window (1, viz obr. na str. 23), a tím ji aplikovat.
Jedna z mála věcí, která mi na ISB vadila, byl jeho nepříliš dobře čitelný VRML kód. Řádky sice měly odsazení, příkazy byly strukturovány, ale bylo defaultně zapisováno příliš mnoho věcí, takže program na vykreslení jednoduché krychle na černém pozadí zabíral 795 bytů, což mi připadalo příliš mnoho (pro srovnání ten nejjednodušší možný zdrojový kód krychle mi zabral 116 bytů). Důvodem je defaultní deklarace spousty nevyužitých věcí např. barva nebe, mnoho zbytečných tříd a přílišné užívání uzlu IndexFaceSet.
Zdrojový kód, napsaný autorem:
#VRML V2.0 utf8
Transform {
children Shape { geometry Box { size 2 2 2}
}
}
Tentýž zdrojový kód, nahraný do ISB a znovu uložený bez jakékoliv modifikace:
#VRML V2.0 utf8
# This file was created with ParallelGraphics Internet Space Builder v 3.0.
# According to License Agreement, you may not remove or modify this notice.
# Internet Space Builder, Copyright (C) 1998 ParallelGraphics
# Last modification: [Sat Apr 15 11:54:00 2000]
WorldInfo {
info [
"LastSaveBy: xaint"
]
}
DirectionalLight {
direction -0.2 -0.8 -0.6
ambientIntensity 0.5
}
Group { # children: 2
children [
Viewpoint {
fieldOfView 0.75
position 0 2 0
description "Camera1"
}
DEF Object1 Transform { # children: 1
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 0
}
}
geometry Box {
}
}
]
}
]
}
# Faces total: 0
# Facesets total: 0
Nyní bych popsal jednotlivá okna modu, který se zobrazí jako první při spuštění programu, a tím je Scene plan. Okna jsou číslována podle obrázku pod textem.O modech se zmíním v další kapitole.
1) Perspective window - 3D pohled na scénu a na objekty. Možnost výběru více kamer, v podstatě VRML viewer.
2) Scene tree - reprezentace scény, hierarchie objektů na scéně.
3) Texture gallery - přehled textur, které jsou v dané chvíli k dispozici. Mohou být modifikovány a překreslovány, případně přidány vlastní. Je zde přímo i texturovací těleso, na kterém si můžeme texturu hned vyzkoušet, aniž bychom museli dělat zásahy do vlastní scény.
4) Shape gallery - přehled základních objektů, které můžeme dále modifikovat a používat k vytváření vlastních scén a větších objektů ve VRML. Najdeme zde kvádry, kužely, mnohostěny atd.
5) Object gallery - galerie již hotových a otexturovaných objektů, které byly připraveny autory k dalšímu použití. Různé stromy, židle, hrnky, konvice, antické stavby, hrady... Vytvořeno v ISB.
6) Plan view windows - jsou to dvě okna pro schematický boční pohled a pohled z ptačí perspektivy, která se starají, abychom vždy viděli svou polohu ve VRML scéně vůči ostatním objektům. Lze na ní i rotovat objekty, stejně jako v Perspective view window. Změna, která byla udělána se okamžitě promítne i do druhého okna.
obr. 18 Perspective window, hlavní okno programu
Program může pracovat v jakýchsi modech, přičemž každý z nich je dobře zpracovaný a lze v něm dělat vše, co je třeba. I přesto, že by se daly některé věci vylepšit, svému účelu plně vyhovují. O ISB by se dala napsa kniha, protože ISB je skutečně velmi rozsáhlý program a popsat všechny jeho možnosti a položky v základním menu mi připadá zbytečné vzhledem k zaměření této diplomové práce. Hlavní mód programu Scene plan jsem sice už popsal v minulé kapitole, přesto si však myslím, že stručný popis jednotlivých modů neuškodí, protože tím získáme představu o možnostech tohoto programu. Lepší informovanost o VRML editorech naopak jeden z cílů této diplomové práce je, i když není tím primárním.
Scene plan je celkový náhled na scénu. Tento mód byl již popsán výše.
Object plan je okno, ve kterém se můžeme soustředit jen na pohyb, velikost a editaci objektu, který je aktivní. Máme standardně k dispozici 2 kamery, přičemž jedna z nich je fixována na objekt (což znamená když si ji nastavíme tak, abychom na objekt hleděli shora na jeho levý horní roh, zůstane zaměřena tímto směrem, ať s objektem pohneme jakkoliv, protože kamera se pohybuje s objektem.) Free kamera je klasická kamera pohledu, se kterou můžeme pohybovat, jak je nám libo, a která není fixní s ničím.
Ačkoliv sama manipulace a změna velikosti objektů je uspokojivá, trochu mi vadila přílišná citlivost myši při pohybu tělesem.
Je zde možné kliknutím pravého tlačítka myši mezi okna vyvolat nabídku oken k aktivaci a deaktivaci, takže je možné poměrně snadno udržovat aktivní pouze ta okna, která potřebujeme, např. při vytváření tvaru židle nepotřebujeme panel s nabídkou animovaných gifů.
Texture mapper je okno, ve kterém je možno na námi vytvořené objekty nanášet texturu. Překvapila mne možnost vzorkem textury pohybovat tak, aby např. při textuře zdi byly cihly skutečně u základny. Jako textura může být použit libovolný obrázek či jeho výsek ve formátu JPG, PNG, BMP a GIF. Dvojitým kliknutím na texturu se okamžitě přeneseme do dalšího modu, kterým je painter.
Rozdíl v položení textury ukazují tyto obrázky. Obrázek č. 19 má texturu umístěnou nesymetricky, cihly na okrajích nejsou vidět celé a výsledný dojem je kus zdi, který byl vybourán a náhodně vybrán bez ohledu na cihly.
Obrázek č. 20 ukazuje položení textury tak, aby okraje tělesa korespondovaly s texturou. Výsledný dojem už trochu vypadá jako celistvá zeď.
V Painteru je možné dané textury editovat, tzn. na naši texturu zdi je možné dát grafitti atd. K dispozici máme několik základních kreslicích pomůcek jako jsou štětec, tužka, lupa atd. Osobně se domnívám, že nástrojů mohlo být více, např. kružnici je nutné malovat od ruky. Na druhou stranu není problém si v druhém okně otevřít třeba Lview, načíst texturu jako obrázek, libovolně ji modifikovat a importovat do ISB. Pro základní úpravy nabízené nástroje stačí.
obr. 21
Ukázka modifikace textury
Posledním modem je Tutorial, který je vytvořen v HTML a je velmi hezky vytvořen metodou “step by step”. Jsou použity i animace pro ilustraci práce s myší, což mi připadá jako velmi dobrý nápad. Tutorial lze použít i jako HTML browser a VRML viewer, i když HTML soubory nejsou přímo podporovány jako základní a je nutné je otevřít zvlášť. Specializované browsery jako např. Netscape nebo Internet explorer jsou vhodnější k prohlížení normálních WWW stránek než tento prohlížeč. Také mi trochu vadí, že zde nelze použít metoda drag&drop.
Internet space builder je výborný builder širokého využití, který má poměrně slušnou podporu pro vytváření budov, jejich blízkého okolí a interiéru. Bohužel jeho VRML kód není příliš čitelný a jednotlivé předměty větší složitosti se v něm modelují poměrně těžko.
Jméno: Spazz3D VRML 97 Authoring Tool.
Autor: Virtock technologies, Inc.,1998
Testovaná verze: 1.1, 2.2 (obě trial)
Velikost před instalací: 1.1 7.2 MB, 2.2 7.9 MB
Velikost po instalaci: 1.1 9.66 MB, 2.2 10.1 MB
Způsob instalace: dekomprimace a následná instalace
Ke stažení: www.spazz3d.com
URL výrobce: www.spazz3d.com
Program Spazz3D mi byl doporučen jedním z členů pracovní skupiny programátorů z ČVUT a MFF UK pod vedením Jiřího Žáry (jednoho z tvůrců standardu VRML97) jako velice zajímavý VRML editor. Rozhodně měli pravdu. U práce s Spazzem se člověk opravdu nenudí.
Instalace je poměrně rychlá, bezproblémová, neklade příliš velké nároky na uživatele. Pokud se ale pokusíme nainstalovat obě verze zároveň, zjistíme, že nově instalovaná verze bez jakýchkoliv okolků asociuje spouštěcí ikonu předešlé verze s novější, upraví registry pro sebe, přepíše její záznam o instalaci svým, neznámo proč odinstaluje několik základních programů ve Windows ( Internet Explorer a Malování) a spokojeně se spustí. Je to jen první varování před spoustou zmatků a nelogičností, které tvoří nedílnou součást tohoto překvapivě silného nástroje pro vytváření VRML objektů a světů.
Celý program, menu, nápověda a vůbec celé ovládání nepůsobí dojmem “user-friendly”(přátelské k uživateli) výtvoru. Už první spuštění vyžaduje odebrání množství lišt s komponentami, které jinak zabírají pracovní plochu. Verze 2.2 jde dokonce tak daleko, že okno, které se nám zobrazí po prvním spuštění programu, musíme maximalizovat, abychom viděli alespoň dva centimetry široký pruh pracovní plochy, což může nejednoho potencionálního tvůrce virtuálních světů odradit.
Po vytvoření nové pracovní plochy zjistíme, že program vytvořil nesmazatelnou a nemanipulovatelnou trojšipku (LOD uzel), z nichž každá míří ve směru jedné osy (v prostoru X,Y,Z), jako orientační šipky pro případ ztracení se v trojrozměrném prostoru. Šipka se nezobrazuje do výsledného VRML kódu, o čemž ale nikde v elektronickém manuálu není ani slovo.
Hned na začátku by si uživatel měl spustit tutorial, který by měl uživatele vést krok za krokem při seznamování se s programem, při vytváření objektů a jiných činnostech. Tento tutorial sice poskytuje opravdu dobrou podporu při vytváření avatarů, ale naprosto chybí jakákoliv možnost provedení programem pro začátečníky. Chybí zde i kvalitní nápověda.
Pohyb objektem, modifikace velikosti objektu a pohyb celou scénou je zastoupen třemi ikonami
(pohyb, rotace a změna velikosti),
což je málo pro pohodlné ovládání. Tento nedostatek je však vyřešen jiným, poměrně elegantním a nezvyklým způsobem, na který si lze snadno zvyknout. Jedná se o současné otevření více oken s různými pohledy, fixovanými k základní trojšipce, což je sice na první pohled poněkud komplikované a neohrabané, ale možnosti pohybu tělesy jsou uspokojivé.
obr. 22 Ukázka programu se dvěma paralelními okny
Systém výběru tělesa je chytře vyřešený. Jestliže najedeme myší na neaktivní těleso, hrany tělesa (u těles typu koule “siločáry”) se vysvítí fialově. Teprve při kliknutí se toto těleso aktivuje. Jestliže najedeme na LOD, vysvítí se všechny předměty, které k němu patří. Máme tak tedy vždy přehled o tom, které těleso se aktivuje při kliknutí - odpadá tedy klikání naslepo do shluku objektů společně s doufáním, že teď už se snad konečně trefím. Tento systém má však také jednu velkou nevýhodu. Těleso, nacházející se v jiném tělese, jde vybrat jen tak, že přemístíme větší z objektů a klikneme na menší.
Jestliže vložíme do scény GROUP objekt, vytvoříme tím jakousi nadtřídu s vlastní osou souřadnic. K ní se mohou vázat další a další objekty - prakticky se jedná o zastřešení skupiny objektů pod jeden uzel Transform. Aktivováním tohoto objektu můžeme vybrat všechny objekty k němu vázané a modifikovat naráz, což je velmi výhodné při práci s větším množstvím malých, navzájem podobných objektů - můžeme si být jisti, že na žádný nezapomeneme.
Rád bych stručně popsal skupiny ikon, které vidíme na obrazovce. K některým z nich se totiž vážou poměrně zajímavé funkce, které bych tu rád vysvětlil - ukazují poměrně přesně možnosti tohoto programu.
Základní ikony otevřít soubor, kopírovat, vložit atd. nemá cenu popisovat, ty jistě každý zná. Jsou tu však další ikony podobných, avšak nezaměnitelných funkcí.
Funkce
Copy (Pos, Rot, Scale)
resp.
Paste (Pos, Rot, Scale)
způsobí zkopírování resp. vložení jen základních vlastností tělesa tvar, natočení a velikost.Nekopíruje vlastnosti povrchu. To umějí až další funkce,
copy material and texture
a k ní její příbuzná
paste material and texture
mají funkci při mapování textur a barev na povrch tělesa, nezkopírují (resp. nevloží) tvar a ostatní vlastnosti.
Ve spojení s uzlem GROUP se tu opět ušetří mnoho práce, když chceme změnit texturu všech svázaných uzlů zároveň (např. když se rozhodneme námi vymodelovanou třešňovou alej změnit z letní na zimní).
Přeskočíme několik ikon se známými funkcemi Undo, Redo a skupinku tří ikon pro pohyb se scénou a s objekty (tato skupinka již byla popisována výše). Narazíme na skupinku ikon se zajímavými funkcemi pro prolínání předmětů, jejich spojování a odečítání.
je ikona funkce Boolean extraction, která tělesa odečte
(tzn. jestliže se dvě tělesa prolínají a my zavoláme tuto funkci na jedno z nich, výsledné těleso bude sestávat z námi zvoleného tělesa, kterému však bude chybět ta část, která se prolínala s odstraněným tělesem.)
je ikona funkce Boolean intersection, která způsobí, že z obou prolínajících se těles těles vznikne jedno, jenž má tvar průniku obou původních těles.
je ikona funkce Boolean Union, která obě tělesa “slepí”, tj. z obou těles odstraní průnik. Záleží pak na nastavení ( viz dále), jestli obě tělesa spojí nebo je nechá zvlášť, každé s odebranou část průniku.
Při použití jakékoliv z těchto funkcí se objeví malé okno s možností nastavení funkce spolu s upřesněním Boolean extraction a s možností volby, který uzel “ořízne” ten druhý, nebo jestli chceme, aby se zachovaly oba.
obr. 23 Okno pro práci s booleovskými funkcemi.
Další dvě ikony jsou vcelku nepoužitelné, ale za nimi následuje ikona funkce
Edit Materials . Tato funkce umožňuje editovat povrch tělesa, přesněji řečeno materiál, z něhož je tvořen (např. lesk, průhlednost), jeho barvu anebo texturu. Nastavení barev je řešeno poměrně slušně pomocí myši. Atributy lze ale nastavit ručně - jeden z mála příkladů, kde se objevuje autory slibované “všechny atributy lze nastavit myší, ale pokud chcete, můžete si je nastavit i ručně.”
Zbylé dvě ikony na tomto řádku spouštějí browsery. Nic, co by potřebovalo zvláštní vysvětlení.
Druhý řádek jsou ikony, které se týkají většinou manipulace se scénou a s vývojovým prostředím.
Rotation je funkce, která je implementována plně trojrozměrně pouze pomocí pohybu myší ve dvou směrech, což se mi docela líbí a zatím jsem to nikde neviděl (přesněji řečeno nikde jinde jsem tuto funkci neviděl použitelně implementovanou). Pohyb myší po vertikální a horizontální ose pohybuje scénou po vertikální a horizontální ose (což se překvapivě vymyká chaosu, který vládne programu), vtip je v tom, že osa otáčení je v místě, kam klikneme s aktivovaným kurzorem rotation. Jakmile tlačítko myši pustíme, objeví se původní kurzor a pokud chceme rotovat scénou dál, musíme znovu kliknout na ikonu.
Zoom je klasická zvětšovací funkce. Používá se tak, že aktivovaným kurzorem vybereme na obrazovce obdélníkový výřez, který se po puštění prstu z tlačítka objeví ve zvětšení na celou obrazovku - tedy čím menší výřez, tím větší zvětšení.
Funkce Pan se používá na centrování - tzn. místo, kam klikneme se vycentruje do středu obrazovky.
Přeskočíme funkce zoomu a znovuvykreslení, jejichž funkce je dostatečně obecně známa.
Další dvě funkce s ikonami
jsou centrování. První zvětší či zmenší vybrané těleso, druhá provede totéž s všemi prvky na scéně zároveň.
Následuje skupinka sedmi ikonek .
Tyto ikony slouží k rychlé změně pohledu v aktuálním okně. Jestliže použijeme funkci na paralelní zobrazení oken (budou popsány v následující skupince ikon) a nevyhovuje nám volba pohledů, které nám přednastavil program, můžeme si je velice snadno změnit. Jednotlivé funkce (zleva): pohled zleva, čelní pohled, pohled zprava, pohled zezadu, zespodu, půdorys a nakonec izometrický 3D pohled, který by se dal popsat zhruba jako “shora, zprava a zepředu zároveň”.
Skupina dalších ikon
je velmi důležitá, lépe řečeno prakticky umožňuje využívat prostorového modelování v Spazzu. Jedná se o mnou několikrát zmiňované rozdělení pracovní plochy na několik paralelních oken různě vzájemně postavených. Z dobře zvolených obrázků ikonek na první pohled zjistíme, jak budou vypadat okna po aktivování funkce.
Na tomto řádku poslední skupinka ikon jsou funkce mříže a vektoru (autoři ji nazvali Show global grid). V okně se objeví čtverečkovaná síť a u aktivního tělesa oba 2D vektory,
se kterými lze manipulovat.
(viz obr. 24)
obr.24 Okno Show global grid
Dostáváme se k poslednímu řádku ikonek. Funkce, které reprezentují tyto ikony, jsou využití řady důležitých funkcí VRML.
Prvních pět ikon jsou standardní funkce pro vkládání těles. Následující funkce už budou zajímavější. Jedná se o grafické reprezentace složitějších uzlů nebo jejich často používaná nastavení - proto doporučuji při nejistotě ohledně jejich funkce nahlédnout do učebnice VRML, případně do diplomové práce mého předchůdce.
Funkce Create extrusion a Create swept extrusion
jsou funkce, kterými lze konečně tvořit libovolná mnohostěnná pravidelná tělesa. Po dvojkliknutí na těleso, které jsme stvořili pokládáním bodů v malém okénku (viz obrázek editačního okénka průřezu spolu s panelem nástrojů) se nám objeví menu tělesa (platné pro jakýkoliv objekt ve Spazzu kromě “prvotní trojšipky”) a v něm konečně můžeme nastavit všechny vlastnosti podrobněji. U sweep extrusion můžeme stvořit více bodů, po kterých budeme přemisťovat těleso (extrusion je typ tělesa, které vznikne posunutím mnohoúhelníku po přímce).
obr. 25 Vytváření uzlu Extrusion
Funkce Create Sculpted surface a Create revolution se od předchozích dvou liší pouze tím, že Sculpted surface je v podstatě řetěz uzlů Extrusion a Create revolution je opět speciální případ uzlu Extrusion, který vznikne posuvem a zároveň rotací mnohoúhelníku po dané přímce. Dají se tím vytvářet velmi zajímavé obrazce a tvary, jelikož část uzlu Revolution, která není při rotaci kolem osy prokreslena dvakrát, je poloprůhledná.
Následující skupinu ikon bude popsána jen stručně, protože jsou grafickou reprezentací uzlů ve VRML, a to uzlů dostatečně známých. Méně známé funkce budou vysvětleny podrobněji.
Funkce Create group vytvoří další uzel Transform, pod který lze sdružovat další uzly. O této funkci jsem se již zmiňoval.
Funkce LOD umožní nastavit stupeň detailu pro dané těleso. Je totiž zbytečné vykreslovat všechny podrobnosti, když je těleso od nás vzdálené.
Funkce Create reference node je v podstatě použití uzlu USE. Vezme daný objekt jako definovaný a pojmenovaný a umožňuje s ním zacházet jako s prototypem.
Inline je funkce, která umožňuje vložit do našeho světa objekt či propojení z jiného souboru nebo světa, .
View point je nastavení, nebo spíše definice pohledu ve VRML. Pohledů může být více a lze se do nich v průběhu procházení VRML světem plynule přesouvat Ve Spazzu je reprezentován trojrozměrným modelem kamery..
Background node je grafické nastavení pozadí, barvy země a oblohy. Hezky vyřešeno vkládání barev.
Uzel Fog je nastavení mlhy, její barvy a hustoty.
Uzel Navigation Info je nastavení základních vlastností avatara, nastavení vzdáleností, ve kterých dojde ke kolizi s objekty atd. O avatarech v tomto editoru se ještě zmíním.
Jméno tohoto uzlu Sound spolu s ikonou asi nikoho nenechá na pochybách, že se jedná o nastavení zvuku.
Funkce Light je společné jméno pro několik uzlů (jejich typ se samozřejmě dá určit), které mají na starosti osvětlení virtuálních světů. Možno nastavit barvu, jas atd. Uzel je ve Spazzu reprezentován trojrozměrným modelem žárovky.
Další funkce jsou důležité pro oživení VRML světa. Jedná se totiž o animace a senzory.
Funkce Create animation je zdaleka nejkomplikovanější funkcí tohoto programu. Dle názoru autora není vhodné tuto funkci používat. Namísto ní je výhodné použít Animation wizard, což je funkce z menu Wizards. O nabídkách v menu se ještě zmíním.
Uzel Create sensor definuje bod nebo těleso, ve kterém je umístěn jeden ze tří typů senzorů. Je možné vybrat trigger a nastavit jeho reakci. Toto nastavení je velmi hezky a příjemně vytvořené, viz obr. 26.
obr. 26 Nastavení senzoru
Funkce Prev Key, Spine or Node,
Next Key, Spine or Node
Selects the parent
jsou funkce na pohybování se v okénku s hierarchií objektů. Tyto objekty je tak možné sdružovat pod společného rodiče.
Zde bude popsáno několik funkcí, které se dají najít v horních menu a zdají se být zajímavé.
Nebudou zde popisována všechna menu se všemi položkami. Stejně jako v případě ISB by se dala o Spazzu napsat kniha. Popsány budou pouze nejzajímavější položky. Spolu s popisem ikon zde bude nastíněna alespoň malá část možností, které tento editor nabízí.
Z menu File by neměla ujít naší pozornosti možnost vytvářet animace pomocí systému Anfy3D, což je systém animačního softwaru, umožňující i nepříliš zkušenému tvůrci WWW stránek vytvořit velmi zajímavé efekty v Javě a animace. Pro bližší informace je možné navštívit URL
www.anfy.cz
Rovněž možnost přímého připojení po FTP je zajímavá. Tato volba umožňuje poslat náš vytvořený soubor přímo na www server.
V menu Edit by mohla zaujmout volba Explode into faces, která rozdělí povrch tělesa na jakési střípky, se kterými je možno pohybovat nebo je libovolně olupovat podobně jako skořápku z dutého vajíčka.
V menu View, Selection a Create jsou k vidění pouze funkce z ikon, další reprezentace uzlů VRML nebo nezajímavé a neužitečné funkce.
V menu Wizards jsou naopak velmi zajímavé položky. Pomineme velmi užitečné wizardy písma a animací, jejichž funkce je však jasná a všimněme si funkcí pro definici a testování avatarů.
Není zde problém okamžitě nadefinovat vlastního avatara, který bude schopen vlézt do virtuální králičí nory (což běžný avatar nemůže kvůli jeho nastavení velikosti), ale můžeme si zde nastavit i avatarův vnější vzhled a dokonce mu přidat i některá gesta. Existuje totiž VRML prohlížeč jménem Blaxxun, který umožňuje pohyb více uživatelů v jednom světě naráz. Je tedy možné se potkat ve virtuálním městě s jiným člověkem a komunikovat s ním (psanou formou). Také je možné si vytvořit svého osobního avatara, který bude patřit k naší internetové identitě stejně jako naše přezdívka.
Našeho avatara můžeme hned otestovat v předdefinovaném světě, který se skrývá pod položkou Create avatar arena. Zde máme k dispozici jakousi “překážkovou dráhu”, na níž si můžeme vyzkoušet vhodnost našeho avatara, lépe řečeno jeho velikost, vzdálenost pro kolize s okolím atd.
Zde je jedno z mála míst, kde nám poslouží tutorial. Najdeme v něm totiž opravdu hezky a krok za krokem popsanou metodu stavby vlastního avatara, včetně gest a textur. Po vyzkoušení v Blaxxunovské aréně můžeme, pokud jsme připojeni na internet, vstoupit do virtuálního města Colony city. Toto město vytvořili autoři Spazzu a je zde široká komunita lidí.
Kód, vytvořený autorem:
#VRML V2.0 utf8
Transform {
children Shape { geometry Box { size 2 2 2}
}
}
Spazz3D kód při nastavení nejmenší velikosti souboru:
#VRML V2.0 utf8
WorldInfo {
title "Spazz3D"
info [
"This VRML World was created with Spazz3D, a VRML 97 authoring tool"
"www.spazz3d.com"
]
}
DEF dad_GROUND Transform {
children [
DEF GROUND Group {
children [
DEF dad_Import_Base Transform {
children [
DEF Import_Base Group {
children [
DEF dad_Box1 Transform {
children [
DEF Box1 Shape {
appearance Appearance {
material DEF Red Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 0.0 0.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry Box {
size 2.0 2.0 2.0
}}] }] }] }] }] }
(závorky z posledního řádku byly původně každá zvlášť)
Spazz3D je překvapivě silný nástroj, který byl vytvořen, aby usnadňoval práci ve VRML jako takovém, podporuje práci se senzory, avatary, animacemi atd. Je určen pro vytváření malého množství velmi složitých předmětů. Není vhodný pro tvoření velmi rozměrných objektů (např. budov). Pokud si zvykneme na zmatené funkce a nepříliš user-friendly prostředí, opravdu nebudeme litovat.
Jméno: VRML Beans
Autor: PAKsoft,1998
Testovaná verze: 1.0 (shareware)
Velikost před instalací: 1.825 MB
Velikost po instalaci: program 295 kB, zbytek DLL knihovny
Způsob instalace: dekomprimace a následná instalace
Ke stažení: www.download.com, search VRML Beans.
VRML Beans 1.0 od PAKsoft byl zkoušen částečně se zvědavostí, protože to je jediný editor s konverzí do VRML, který se zaměřuje na modelování venkovních scén (lépe řečeno jediný, který se podařilo stáhnout, protože měl v pořádku svou WWW stránku). Už na první pohled se jedná o poměrně sympatický program s krátkou instalací, a s poměrně user-friendly prostředím. Letmé vyzkoušení nabídek všech menu prozrazuje, že se rozhodně nejedná o program na vytváření modelů na profesionální úrovni. Program je spíše stavebnicí, kde si uživatel vybírá z 28 předdefinovaných objektů bez možnosti jejich editace a staví si z nich své malinké městečko či alespoň ulici.Program byl testován pokusem vytvořit zelenou plochu s několika stromky. Bohužel při pokusu umístit stromek na plochu program nahlásil chybu a ukončil se. Nic nevyřešila ani několikrát opakovaná instalace, ani testování integrity ZIP souboru. Jelikož program nepodporuje načítání objektů ve VRML, ale pouze export do VRML 2.0, nebyla možnost vyzkoušet ani test VRML kódu.
obr. 27 Hlavní okno aplikace VRML Beans
Program VRML Beans, který je z mně dosud neobjasněných důvodů autory nazýván VRML editorem, je spíše hříčka, která se programátorovi ve VRML nehodí snad k ničemu. Navíc pravděpodobně není funkční. Škoda, nepochybně by se našly děti nebo hravější dospělí, které by tento program mohl na chvíli zaujmout, kdyby fungoval.
Tato diplomová práce je jen základem pro diplomanty v dalších letech. Ti budou do tohoto modelu budovy vytvářet interiér a nábytek, vylepšovat textury stěn, doplňovat světla...
Každý, kdo má s programováním zkušenosti ví, jak je občas obtížné pochopit ze souboru se zdrojovým textem, jak byl vlastně daný program vytvořen. Zdrojové kódy VRML nejsou výjimkou. Na první pohled je celý zdrojový text pouze změtí složených závorek, slov “transform”, “children” a občas jiného anglického slova. Dlužno podotknout, že druhý pohled se od prvního příliš neliší. Jak tedy zařídit, aby po následující diplomanti neměli příliš velké potíže se čtením zdrojového kódu tohoto programu?
Nejdříve si osvěžíme znalosti o tom, jakou stavbu má VRML soubor. Jako příklad zdrojového kódu použijeme program, který zobrazí dva navzájem kolmé kvádry (nevybarvené) a zároveň v něm předvedeme základní triky pro udržení přehlednosti programu.
#VRML V2.0 utf8
WorldInfo {title "ukazka" }
Viewpoint { # definování pohledu
position 0 1.8 -14
orientation 0 1 0 0
description "Zakladni"
fieldOfView 0.785398
}
Transform { # uzly se společnými
#vlastnostmi jsou pod
#stejným uzlem Transform
translation 0 0 -10
children [
Transform {
children Shape { # závorky, které # k sobě patří,
# jsou nad sebou geometry Box {
size 3.2 0.02 24.2
}
}
}
Transform { #použití odsazení
children Shape {
geometry Box {
size 3.2 4 0.02
}
}
}
]
}
Tohle je příklad zdrojového kódu, který je napsán poměrně čitelně - tedy tak, jak by ho napsal programátor. Orientaci a přehlednost zajišťuje stavba textu a komentáře. Není tedy zas až tak obtížné např. najít místo, kde se deklarují stěny místnosti 403 a do tohoto uzlu doplnit nábytek.
Jenže psát zdrojové kódy velkých projektů ručně není příliš dobrý nápad. Každý rozumný člověk tedy sáhne po editoru. Práce jde rychle od ruky, ovšem jen do té doby, než potřebujeme zdrojový kód lehce pozměnit a nemáme k dispozici editor. Otevřeme si tedy okno s nějakým rozumným textovým editorem, otevřeme v něm soubor se zdrojovým textem a zjistíme, že editor nejenže neudělal příliš přehledný kód, ale dokonce ho ani neopatřil smysluplnými popisky, takže v případě souboru s několika tisíci řádek se neocitneme v záviděníhodné situaci.
Jak tedy zařídit, abychom mohli používat editor, a zároveň se vyznali v kódu? Jedno z řešení je po nějaké době práce s editorem ručně upravit kód, seřadit k sobě patřící uzly a vše opatřit náležitým komentářem. Toto řešení značně zpomaluje práci a po delší době neustálé přepínání z programu do programu začne být velmi únavné.
Jiné řešení je používat jen jeden editor a zvyknout si na stavbu jeho zdrojových kódů. Ani v tomto případě se však nevyhneme doplňování ručních poznámek do zdrojového textu, takže první možnost je v konečném důsledku možná lepší.
Je tu ještě třetí možnost, která je známa z vývojových prostředí typu PowerBuilder. Celý trik spočívá v tom, že programátor si “staví” ve vizuálním prostředí a vedle v okně se mu zároveň objevuje zdrojový text. Obě okna jsou navzájem propojena, takže jakákoliv změna v jednom se okamžitě projeví i v tom druhém. Není tedy problém kdykoliv zapsat do zdrojového textu nějakou poznámku, nebo jemnější detaily dopsat manuálně. Tato metoda autorovi připadá jako nejpřijatelnější, bohužel pravděpodobně dosud nebyla implementována v editoru VRML.
Poslední metodu pravděpodobně používá asi většina programátorů. Vytvořit budovu v builderu a víc se o to nestarat - jakékoliv dodatečné úpravy se budou dělat také v builderu. Po autorových zkušenostech s ručním vytvářením VRML kódu je nutno uznat, že tato metoda je v současné době asi jediná dostatečně efektivní.
V této části bude popsána praktická část této diplomové práce, tvorba VRML modelu budovy PF v ulici Jeronýmova.
Při vytváření bylo použito xeroxovaných kopií stavebních plánů pro horní patra budovy. Čísla na stavebním plánu však nebyla příliš zřetelná..
Budova je stará přes sto let a během této doby byla několikrát upravována, byl změněn hlavní vchod apod. Domy stavěné v tehdejší architektuře se vyznačovaly značnou tloušťkou zdí, vysokými stropy a velkými okny, takže budova je chladná, prostorná, plná vzduchu a světla. Učebny jsou umístěny kolem dlouhých a širokých chodeb, a vzdálenosti mezi kabinety vyučujících a třídami jsou někdy nepříjemně velké.
V budově jsou dva výtahy, jeden nákladní a druhý osobní. Osobní vede až do nové půdní vestavby, kde jsou umístěny kabinety vyučujících a kde je umístěna většina sekretariátu fakulty (vestavba je známa také pod přezdívkou “Nebe”). Výtahy nebyly implementovány. Poměrně nepříjemný je fakt, že z Nebe se nedá přímo dostat do 3. patra budovy (čísla učeben začínající čtyřkou). Je tedy nutné jít oklikou přes druhé patro.
Dlouhé chodby se zdály poměrně snadno zdigitalizovatelné, avšak při bližším zkoumání se zjistilo, že jsou až překvapivě členité. Množství výstupků a výklenků ztěžovalo digitalizaci a zvyšovalo počet povrchů.Řešením bylo tyto členitosti vypustit. Problém byl také s třídami, protože každá z nich je v podstatě unikát, a to jak tvarem, tak i velikostí. Bylo tedy nutné vymodelovat každou zvlášť a nedalo se použít definovaných objektů tak, jak by bylo bývalo potřeba.
Schodiště se ukázalo být menším problémem, než bylo očekáváno. Sice nemá podstavu a je poměrně členité, ale schody se pravidelně opakují a je jednoduché spočítat souřadnice dalšího schodu.
Pro vytváření budovy byl nakonec vybrán editor ISB. Jeho vlastnosti jej učinily nejvhodnějším prostředkem k vytvoření této diplomové práce.
Při vytváření stěn byla použita krémově žlutá barva pro její lepší optické vlastnosti a větší vizuální přitažlivost ve srovnání se standardní šedí. Navíc podobnou, avšak bledší barvu mají stěny ve většině pater.
Největším problémem se nakonec ukázal builder ISB, lépe řečeno jeho trial omezení max. 1400 povrchů, což málem nestačilo ani na jedno patro. Autor byl nucen udělat každé patro zvlášť a navíc v rozsáhlém třetím patře a v Nebi ustoupit od neviditelných výplních oken, takže při procházení budovy se občas stane, že avatar vyleze na rám okna a skočí ven. Manuální doplnění nepřichází v úvahu kvůli naprosto nečitelnému zdrojovému kódu.
Bylo nutno také ustoupit od texturování zdí a podlah kvůli přílišnému zatížení procesoru, byly ponechány pouze textury kamenných schodů.
Propojení mezi patry je vytvořené pomocí HTML příručky.
Čtvrté patro jsem vymodeloval tak, jak bylo původně plánováno vytvořit celou budovu, tzn. otexturované sloupy schodiště a podlahy, neviditelné výplně oken a podobně. Textura na sloupech u schodiště není podle skutečnosti, je doplněna jen kvůli hezkému vzhledu.
[1] Žára, Jiří: VRML 97 Laskavý průvodce virtuálními světy
Computer Press Brno, 1999
[2] Tesla Computers, Princip scanneru
http://www.teslacomp.cz/html/scan_princip.html