sobota 15. mája 2010

Kapitola 1: Dostupné technológie

1.1 Java applety

Java applet je taký softvérový komponent, ktorý je spúšťaný vo webovom prehliadači používajúc tzv. Virtuálny stroj Javy - Java Virtual Machine (JVM). Keďže Java je nezávislá na architerktúre, Java applety sú spustitelné vo všetkých moderných webových prehliadačoch. Najpoužívanejšie riešenie pre zobrazovanie 3D obsahu pomocou Java appletu je Java3D API.

1.1.1 Java 3D API 1.5.2

Java 3D API je rozhranie pre programovanie aplikácií používané pre písanie trojrozmerných grafických appletov založené ná dátovej štruktúre Scene graph. Využívanie týchto dátových štruktúr umožňuje vývojárom vytvárať 3D scény efektívne a rýchlo vykresľovateľné. Technológia je súčasťou JavaMedia API, teda je k dispozícii pre mnoho platforiem. Jej výhodou je rýchly prístup k triedam Java. Java 3D API kombinuje výhody existujúcich API, ako je Direct3D, OpenGL, QuickDrawD a XGL. Podobne preberá výhody systémov založených na dátovej štruktúre Scene graph. Okrem iného Java 3D zavádza novinku v 3D a to 3D priestorový zvuk, ktorý by mal pomôcť zvýšiť interaktivitu 3D scény.

Existujú dva varianty tejto technológie, jedna implementovaná na OpenGL a druhá na Direct3D. Toto nízkoúrovňové API zvláda natívne vykresľovanie ako na úrovni vrcholov, tak aj na úrovni pixlov, zatiaľ čo 3D scéna, aplikačná logika a interakcie v scéne sú vykonávané kódom Javy. Takýto prístup podporuje prenositeľnosť aplikácií a vysokorýchlostné vykresľovanie. Java3D sa momentálne najviac využíva v prostediach CAD a CAM, virtuálnej realite, simuláciách a hrách.

1.1.2 Scene graph

Scene graph, dátová štruktúra implementovaná v Java 3D je orientovaný acyklický graf, teda obsahuje množstvo vzťahov medzi svojimi vrcholmi a neobsahuje cykly. Pre vrcholy je možné, aby medzi sebou zdieľali svoje informácie, napríklad geometrické detajly.

Vrcholy kriviek používajú triedu Shape3D a jej podtriedy ako kontajner pre vrcholy geometrie a vzhľadu. Hlavná trieda geometrie je GeometryArray, ktorá sa používa na vykresľovanie bodov, čiar a polygonov. Existuje mnoho vzhľadových podtried, vrátane tých pre farby, textúry a transparentnosť. Vrcholy v prostredí v sebe udržujú informácie ako je osvetlenie, zvuky a správanie sa.

Skupinové vrcholy sú kontajnermi pre iné skupiny vrcholov, alebo pre listy. Listy sú zvyčajne krivky alebo vrcholy prostredia. Trieda Group podporuje umiestňovanie vrcholov v prostredí, určovanie ich pozície a orientáciu ich podvrcholov. Napríklad trieda BranchGroup umožňuje podvrcholom pridávať a odoberať ich za behu aplikácie.Trieda TransformGroup povoľuje alebo zakazuje polohu a orientáciu vrcholov.

Obrázok č.1, Scene Graph

Koreňom v každej dátovej štruktúre Scene graph je VirtualUniverse, ktorý reprezentuje 3D scénu a jej súradnicovú sústavu. Umiestnenie určuje polohu objektu vo virtuálnom svete. Pod vrcholom umiestnenie sa vždy nachádzajú dva podgrafy. Ľavá vetva obsahuje programovo špecifický obsah ako geometriu, osvetlenie, textúry a pozadie. V rozličných aplikáciách sú poznáme rôzne prevedenia. Jednoduché objekty používajú vrchol Shape3D. Pravá vetva obsahuje a špecifikuje požívateľovu pozíciu v scéne, orientáciu a perspektívu, z ktorej sa pozeráme z vonkajšieho fyzického sveta do virtuálneho. Zobrazovacia platforma je vrchol, ktorý udržuje zobrazovaciu pozíciu vo virtuálnom svete. Vrchol zobrazenie udržuje stav scény a otáča ju tak, aby sme mali vždy pred sebou korektný 2D pohľad. Vrchol Canvas3D je Java GUI komponent, ktorý nám umožnuje vložiť 2D obraz do appletu alebo aplikácie. Trieda SimpleUniverse preberá z programátora množstvo práce na konštrukcii scény. Umožňuje nám jednoduchším spôsobom vytvárať a definovať objekty, ktoré vkladáme do scény.

1.1.3 Hlavné výhody použitia Java 3D

Veľkou výhodou je použitie stromovej dátovej štruktúry Scene graph. Java 3D je platformovo nezávislá. Využíva generické API použiteľné v reálnom čase vo vizualizáciách aj v programovaní hier. Podporuje rôzne prístupy vykresľovania a zároveň obsahuje podporu pre JOGL, OpenGL a Direct3D v závislosti na použitej platforme. Používa sofistikovaný zobrazovací model virtuálnej reality s podporou stereoskopického renderovania. Natívne podporuje zobrazovacie zariadenia upevnitelné na hlavu, CAVE (Cave Automatic Virtual Environment), 3D priestorový zvuk a umožňuje importovať väčšinu známych grafických formátov ako sú 3DS, OBJ, VRML, X3D a iné.

1.2 VRML 2.0

VRML (Virtual Reality Modeling Language) je najrozšírenejší 3D grafický formát. Súčasná špecifikácia je VRML je VRML97 a je štandardom ISO a IEC. Na prezeranie VRML v prehliadači je potrebné použiť zásuvný modul akým je napríklad CosmoPlayer od tvorcov VRML, alebo Cotrona 3D Viewer. Základom VRML je systémovo-nezávislý deklaratívny programovací jazyk popisujúci virtuálnu realitu – 3D scénu. Objekty tvoriace túto scénu môžu byť pevných tvarov, text, body, línie a vzory. Každý objekt má svoje špecifické vlastnosti, ktoré ho popisujú vo virtuálnom svete. Reaguje na svetlá a može byť otextúrovaný. Umožňuje vysokú mieru interaktivity, reaguje na prítomnosť pozorovateľa a na prítomnosť ostatných objektov.

Objekty môžu byť zoskupované do zložitejších a komplexnejších objektov, pouzívané rôznymi spôsobmi, prekladané a rotované. Môžu aktivovať udalosti, ktoré môžu byť presmerované na iné udalosti alebo skripty napísané v Javascripte alebo Jave. Vo VRML je možné spúšťať zvuky, pohybovať objektami po trasách, pridávať odkazy na HTML alebo VRML ciele. V Javascripte alebo Jave je možné manipulovať s vlastnosťami objektu alebo vygenerovať nové objekty.

1.2.1 Súradnicový systém

Obrázok č.2, Súradnicový systém vo VRML

VRML používa súradnicový systém, v ktorom os Y smeruje nahor a os Z smeruje dopredu a dozadu v scéne. Toto si je potrebné uvedomiť hlavne ak chceme používať VRML objekty v aplikáciách, ktoré pohybujú týmito objektami. Rotácie uhlov sú odvodené od pravidla pravej ruky (pravá ruka drží os, zatiaľ čo palec ruky ukazuje v smere osi k jej kladnému koncu; štyri ostávajúce prsty ukazujú v smere proti pohybu hodinových ručičiek; tento smer je kladný uhol otočenia objektu pohybujúceho sa okolo tejto osi).

1.2.2 Formát VRML súboru

VRML používa formát súboru *.WRL. Pre potrebu vytvárania jednoduchej 3D scény vo VRML nepotrebujeme mať špeciálne znalosti o formáte súboru VRML, no je to užitočné a umožňuje nám to mať plne pod kontrolou vytváranú scénu. Vo VRML je 3D scéna opísaná stromovou dátovou štruktúrou Scene Graph. Každý vrchol v strome reprezentuje niektoré funkcie scény. K dispozícii máme 54 rôznych druhov vrcholov. Aby bolo možné prepínať medzi rôznymi úrovňami v scénach, tak je použitý ako koreňový vrchol Switch. Každý podvrchol tohto koreňa je vrchol Group. Každý z týchto vrcholov reprezentuje jednu úroveň v scéne. Podvrcholy vrcholu Group sú vrcholy Shape, ktoré obsahujú vrcholy Apperance a Geometry.

Každá úroveň povrchu obsahuje dva typy trojuholníkov. Sú to pravidelné a nepravidlné. Pravidelné trojuholníky sa nemenia vo vyšších úrovniach, zatiaľ čo nepravidlené sa menia. Pravidelné trojuholníky sa používajú vo všetkých úrovniach rovnakým spôsobom. Nepravidelné trojuholníky sú nahradozvané, čiže sa používajú naraz v len jednej úrovni.

Každý vrchol uchováva v sebe zoznam polí, ktoré obsahujú informácie a hodnoty parametrov určujúcich jeho funkciu. Ak zmeníme ľubovolnú hodotu uzla, tak sa zmena automaticky premietne do všetkých poúrovní daného vrchola. Touto funkciou je možné zisťovať relatívne pozície vrcholov v zložitých objektoch. V kóde VRML označujeme vrcholy pomocou kľúčového slova DEF. V scénach možeme pristupovať len k tým uzlom, ktoré sme pomenovali.

1.2.3 Hlavné výhody použitia VRML 2.0

VRML 2.0 obsahuje triedu vrcholov nazývanú senzorové uzly. Tieto vrcholy sú schopné nastaviť udalosti ako odozvu na vonkajšie vstupy, napríklad z klávesnice, alebo myši. Senzory dotyku a senzory priblíženia reagujú na na prítomnosť pozorovateľa. Obsahuje aj senzor času, schopného istým spôsobom vnímať plynutie času. VRML 2.0 podporuje realistickú detekciu kolízií v scéne.

Interpolačné vrcholy umožňujú vytvárať preddefinované animácie pre objekty. Animácie môžu nastať automaticky, alebo po interakcii s objektom.

Ďalej VRML 2.0 podporuje nové vrcholy, ktoré umožňujú vytvárať statickú geometriu vo VRML omnoho realistickejšie. Je možné vytvárať samostatné pozadia pre krajinu a oblohu použitím textúr, alebo farieb. Je možné použiť k rozmazaniu aj hmlu.

VRML 2.0 podporuje aj skriptovanie, ktoré je využívané zväčša pri animáciách objektov. Objekty sa potom dokážu nie len pohybovať, ale aj reagovať realisticky na vonkajšie udalosti.

Využiteľná je aj podpora zvuku.

1.3 X3D

X3D (Extensible 3D) je grafický formát XML, pomocou ktorého je možné ukladať 3D scény, pričom vychádza z formátu VRML. Je začlenený do multimediálneho štandardu MPEG-4. Keďže X3D vychádza zo štruktúry VRML, tak je postavené na stromovej dátovej štruktúre Scene Graph. V tomto prípade ide taktiež o popísanie 3D scény orintovaným acyklickým grafom, ako sú objekty a interaktivita. Každý z vrcholov zodpovedá rôznym typom. Je to štruktúra takmer identická s VRML, no odlišnosi môžeme nájsť napríklad vo vrcholoch podporujúcich hardvérovú a softvérovú 3D akceleráciu. Ďalej máme k dispozícii možnosť namapovania svetla na textúry, príp. multitextúrovanie objektov.

1.3.1 Formát súboru X3D

X3D používa formáty súboru *.X3D, *.X3DB (binarny súbor). Obsah súboru X3D zapisujeme hlavne dvoma spôsobmi a to: klasickým kódovaním VRML, pričom zachovávame spätnú kompatibilitu, alebo kódovaním XML, ktoré je podporované pomocou DTD. Obe kódovania sú medzi sebou zameniteľné.

XML využívame z rôznych dôvodov, najčastejšie preto, že uľahčuje parsovanie, sprehľadňuje napísaný kód a aj vďaka tomu nám umožňuje validáciu kódu, ja zadaramo a pod. Ďaľšou výhodou je integrácia s inými technológiami. Štruktúra XML je dnes vužívaná v mnohých technológiách a mnohé technológie sa týmto smerom uberajú.

Hlavné rozdiely medzi VRML a X3D sú v hlavičke súboru. Zmenené je pristupovanie k objektom a ich parametrom, ktoré boli zmenené. Je umožnená interakcia 3D scény a prehliadača. Oprotim VRML je kód X3D sparsovateľný 2 až 5 krát rýchlejšie a stiahnuteľný 10 až 25 krát rýchlejšie.

1.3.2 Hlavné výhody použitia X3D

Výhody X3D oproti VRML su mnohé. Medzi najvýznamnejšie patrí zlepšená interakcia odchytávajúca činnosť myši a vstupov z klávesnice. Môžeme využívať polygonálnu geometriu a zároveň aj parametrickú. Štruktúra X3D nám umožňuje hierarchické transformácie, tj. ak zmeníme parametre určitého vrchola, tak všetky vrcholy nižšej úrovne budú ovplyvnené tiež. Uľahčuje nám to prácu s objektami. Animácie môžeme vytvárať prirodzenejšie, vylepšená je podpora časovačov. Zvuky v scéne môžeme namapovať priamo na objekty.

Pomocou kamery sa môžeme pohybovať priamo vo vytvorenej scéne. Vylepšená je detekcia kolízií. Podpora asociovania hyperlinkov s objektami je zachovaná. Tvorcovia X3D sa snažia čo najviac priblížiť hodnoverne spracovanej fyzikálnej simulácii.

X3D je ľahko prenositeľné do iných grafických formátov a tak isto aj do iných platforiem od mobilných telefónov až po superpočítače.

1.4 Adobe Shockwave

Technológia Shockwave je pôvodne vyvinutá spoločnosťou Macromedia. V roku 2005 ju prevzala spoločnosť Adobe Systems. Umožňuje používateľom multimediálneho softvéru Director vytvárať interaktívne aplikácie a animácie ako súčasť internetovej stránky alebo prezentácie. Od jej predstavenia na trh sa stala najpopulárnejšou technológiou a zásuvný modul do prehliadačov sa stal najfrekventovanejším. Momentálne je tento boj pomerne vyrovnaný.

Súbory Shockwave vytvárame v prostredí aplikácie Adobe Director. Jeho vstavané nástroje konvertujú súbory Directora do formátu používaného prehrávačom Shockwave Player. Používaný je formát súboru *.DCR. Jeho najväčšou nevýhodou je, že ide o uzavretý formát, tj. konverzia do tohto formátu je takmer nemožná. Ďalej môžeme tieto súbory publikovať na internete.

Shockwave player je momentálne dostupný pre operačné systémy Windows a OS X v 32 bitových verziách.

1.4.1 Adobe Director 11

Adobe Director nám umožňuje dva spôsoby akými vytvoriť 3D scénu. Buď importovaním objektov z iných programov, alebo použitím tzv. Linga na vytváranie objektov pomocou skriptov. Pomocou Linga môžeme popísať vytvorené objekty, nastavovať im parametre a spraviť ich dynamickými. Umožňujem nám vysokú mieru interaktivity. Okrem modelovania možeme nastavovať kameru, osvetlenie a taktiež špeciálne efekty, ktoré menia scénu na realistickejšiu. Čiže ponúka základné možnosti manipulácie s objektami, plus možnosť použitia skriptov.

1.4.2 Hlavné výhody použitia prehrávača Shockwave Player 11

Shockwave ponúka možnosť vytvoriť modifikovateľnú interaktívnu 3D scénu. Využíva možnosti Adobe Directora, v ktorom máme široké spektrum použiteľných nástrojov. Shockave nám ponúka excelentné spracovanie zvuku. Umožňuje vysokú kompresiu médií, preto je pohodlnejšie prenášanie po sieti a jeho samotná publikácia na internete.

Výhodou oproti iným technológiám v tejto kategórii je, že sa snaží minimalizovať zaťaženie pri sťahovaní dát tým, že všetky potrebné nástroje a doplnky ponúka v jednom balíku naraz. Teda nie je potrebné dodatočné sťahovanie a minimalizuje sa tým čakanie pri načítavaní 3D scény.

Okrem iného technológia Shockwave ponúka vylepšené 3D efekty a možnosť transformácie 2D objektov do 3D v prehľadnom API. Môžeme pridávať dynamické efekty, vstavané filtre ako napríklad rozmazanie, lesk, rôzne formy texúr a namapovať ich na objekty. Máme možnosť vytvárať vlastné efekty.

Shockwave využíva vylepšenú technológiu spracovania textu. Využíva anti-aliasing a možnosť vytvárať viacjazyčné mutácie scény. Podporuje vytváranie animácie, podporuje alfa kanály, masky, vrstvenie a integráciu scény do videa.

Automaticky koriguje farby tak, aby bola umožnená konverzia súboru typu *.DCR do škály RGB. Podporuje vytváranie pohyblivej scény do rozlíšenia 1080p v HD kvalite a tak isto je zabudovaná podpora viacerých jadier. Podporuje import rôznych zvukových formátov ako MP3 alebo AAC.

Vykresľovanie scény je hardvérovo urýchľované. Umožňuje interakciu pomocou periférnych zariadení ako je klávesnica, myš, mikrofón a webkamera.

1.5 Adobe Flash

Najdôležitejšie, čo by sme si mali uvedomiť je, že technológia flash nepodporuje trojdimenzionálnu grafiku. Nástroje ako je Adobe Director umožňujú pracovať s 3D grafikou a následne ju vyexportovať ako flashovú animáciu. Na druhej strane Flash vie zobrazovať vektorové krivky a správne počítať matematické výrazy. Takýmto spôsobom vie hodnoverne predstierať zobrazovanie 3D.

Vo všeobecnosti na to používa tri metódy. Prvá z nich je, že 3D scénu vytvoríme v inom programe a potom ju vyexportujeme do Flashu, pričom Flash ju bude premietať ako animáciu. Druhá metóda je, že vytvoríme 3D objekty podľa matematických vzorcov v skriptovacom jazyku ActionScript. Treťou metódou je využitie dostupných komerčných alebo open source enginov. Je ich mnoho, tak máme z čoho vyberať. Všetky tieto tri metódy sú ľahko aplikovateľné v praxi.

1.5.1 Export 3d objektov

V prípade expotovania 3D objektov do Flashu máme k dispozícii mnoho riešení, ako komerčných, tak aj open source. Mnoho z nich je úzko špecializovaných na konkrétne na tvorbu 3D objektov. Jedným z nich je Swift3D, čo je vlastne aplikácia, ktorá umožňuje import 3D objektov, následné manipulovanie s nimi a export do formátov, s ktorými je schopný narábať Flash. V aktuálnej verzii bol pridaný export aj do Papervision3D. Táto aplikácie je dostupná pre Windowsy a Macintoshe.

Nevýhodou pri týchto aplikáciách je znížená možnosť interakcie. Všetko je totiž pre-renderované a teda nie je možné neskôr vo Flashi ľubovoľne s tým manipulovať.

1.5.2 Využitie skriptovacieho jazyka ActionScript a 3D enginov

3D grafiku môžeme tvoriť priamo pomocou ActionScriptu, čo je práca zameraná hlavne matematicky a vyžaduje si minimálne dobré znalosti z geometrie. Náročnejšie je to z toho dôvodu, že vo Flashi ide o perspektívu. Ide o interaktívnu reakciu 3D scény na predpokladaný pohľad pozorovateľa stojaceho mimo scény. Flash je konštruovaný na zobrazovanie 2D scény a z tejto vlastnosti vychádza tvorba 3D scény. Uvažujeme, že čokoľvek čo vytvoríme v scéne sa bude pohybovať buď vľavo alebo vpravo po osi X, alebo hore a dole po osi Y. Pohyb smerom dopredu alebo dozadu by mal byť vykonávaný za normálnych okolností na osi Z.

Keďže Flash zobrazuje scénu v 2D, tak os Z v ňom neexistuje. Preto je na programátorovi, aby nasimuloval aj os Z. Toto je možné pomocou dvoch techník a to interpretáciou veľkosti objektu, ktorý sa zdanlivo pohybuje po osi Z. To je možné dosiahnuť príhodným zväčšovaním alebo zmenšovaním objektu. Alebo je to možné prekrývaním objektov. Týmto sa objekt zdanlivo dostane do popredia alebo do úzadia.

Obe metódy sú veľmi efektívne a postačujúce v simulovaní osi Z. Je na nás, ktorú z metód si vybrieme a akým spôsobom ju implementujeme.

Enginy nám značne uľahčujú prácu. Mnoho zásadných problémov pri tvorbe interaktívnej 3D scény vo Flashi majú vyrešených na vysokej úrovni. Zväčša sa jedná o open source projekty. Najpoužívanejšie knižnice sú Papervision3D, Away3D, Alternativa3D, Yogurt3D, WireEngine3D, Sandy a podobne. Je ich množstvo a vynikajúco spĺňajú i nadštandardné požiadavky.

1.5.3 Hlavné výhody použitia Adobe Flash

Výhodý sú obdobné ako u technológie Adobe Shockwave. Vyvýja ich tá istá firma a prehrávače sú obdobné, pričom je možné kombinovať tieto dve technológie do jednej.

Oproti ostatným verziám do novej verzie boli pridané natívne 3D efekty použíteľné v prostredí Adobe Flash CS4 Professional. Taktiež máme možnosť používať novú verziu skriptovacieho jazyka ActionScript 3.

1.5.4 Porovnanie technológie Adobe Shockwave a Adobe Flash

V prvom rade si musíme uvedomiť, že neexistuje technológia Shockwave Flash. Ide o dva rôzne prehrávače s podobnou funkcionalitou. Pre nás podstatný rozdiel je v podpore 3D, pričom Flash začal natívnu podporu 3D len v poslednej verzii a je to ešte len v začiatkoch. Samozrejme v porovnaní s prehrávačom Shockwave.

Flash je jednoduchší a rýchlejší. Shockwave je na druhej strane omnoho komplexnejší, aj keď na úkor rýchlosti, čo sa na moderných platformáchneodráža vo veľkej miere. Čiže Flash je použiteľný na miestach, kde vyžadujeme rýchlosť, Shockwave na miestach, kde vyžadujeme zložitejšie nástroje.

V skratke by sa dalo povedať, že Flash je viac rozšírený, rýchlejší, je lacnejší, nevyžaduje toľko technickej zručnosti a jednoduchšie sa v ňom skriptuje.

Shockwave nie je taký známy, vyžaduje väčšie technické zručnosti, je na pokročilejšej úrovni, čo sa týka skriptovania, je možné doňho integrovať Flash a opačné to možné nie je, je ho zložitejšie dekompilovať, scénu je možné vytvárať len v Adobe Directore, je drahší a používa sa hlavne pre tvorbu pokročilejší aplikácií, ktoré vyžadujú viac programovania.

1.6 JavaScript

JavaScript je objektovo orientovaný skriptovací jazyk používaný najmä na programovanie webových stránok. Je použiteľný multiplatformovo a vkladaný je priamo do kódu HTML. Najčastejšie pomocou neho ovládame rôzne prvky na webstránkach, no s príchodom HTML 5 a tagu máme k dispozícii aj nami využiteľné zobrazovanie 3D scény.

1.6.1 HTML 5 a tag Canvas

HTML 5 je špecifikácia, ktorá rozširuje pôvodný jazyk HTML. Pridáva do HTML nové funkcie a nové tagy. Pomocou neho môžeme vytvárať aplikácie, ktoré fungujú aj offline, alebo vytvárať pomocou nových tagov aj interaktívne aplikácie.

Tag Canvas je tag, ktorý bol pôvodne predstavený spoločnosťou Apple. Tento tag nám umožňuje dynamické vykresľovanie do web aplikácie. Napríklad vykresľovanie bitmáp, a rôznych grafických objektov. Tak isto je v ňom možné vykresľovať 3D objekty aj animáciu.

Canvas sa najčastejšie používa pre vykresľovanie vektorovej grafiky. Oproti Flashu alebo SVG, ktoré sa používajú najmä na vektorovú grafiku, má výhodu v jednoduchosti. Je integrovaný do štruktúry DOM, čiže je prístupný pre JavaScript. Tým pádom máme možnosť vykresliť žložité objekty podobne ako to umožňujú ostatné technológie zobrazujúce 3D na internete.

HTML Canvas premosťuje medzery, ktoré sú medzi HTML značkami a jednotlivými pixelmi. To nám umožňuje kresliť ľubovoľnú grafiku na úrovni rôznych objektov, až po vykresľovanie jednotlivých pixelov. Je to možné vďaka JavaScriptu. Riešilo sa to pomocou HTML a CSS, no JavaScript nám umožňuje väčšiu mieru kontroly.

3D scéna sa tu skladá z mriežky. Každé políčko na mriežke môže byť vyplnené alebo prázdne. Vykresľovanie takejto 3D scény znamená zmeniť ju za polygony. Tie potom vykresliť ako 2D polygony a tie následne vykresliť do Canvasu.

1.6.2 Hlavné výhody použitia Javascriptu a Canvasu

Použitie Canvasu je výhodné z dlhodobého hľadiska, pretože HTML5 a jeho Canvas sa radí k moderným technológiám, ktoré sú nové, ale presadzujú sa. Výhodu má v tom, že je začlenený do štadardu a najnovšie verzie prehliadačov ho už podporujú. Najväčší potenciál má vďaka svojej jednoduchosti na komunikačných zariadeniach, napríklad na mobilných telefónoch.

Podpora Canvasu je implementovaná do prehliadačov, teda nemusíme doinštalovávať doplnkové zásuvné moduly. V prostredí mobilných zariadení je práve toto veľkým plusom.

Canvas je využívaný momentálne najmä pre vykresľovanie 2D grafiky, no v blízkej budúcnosti bude možné použiť Canvas na vykresľovanie 3D grafiky. Najzaujímavejší je na tom fakt, že ide o veľmi rýchlu technológiu. Na vykresľovanie 3D grafiky bude Canvas používať OpenGL ES 2.0.

1.7 Google O3D 0.1.40.1

O3D je API naprogramované v JavaScripte a je opensource. Používame ho na vytváranie interaktívnej 3D scény, ktorá je zobrazovaná v okne prehliadača. Používame ho na zobrazovanie 3D modelov, alebo kompletnej 3D scény, či hier, reklamy a pod. O3D rozširuje bežný JavaScriptový kód o API schopné pracovať s 3D grafikou. API beží na platformách, ktoré podporujú JavaScript v prehliadačoch, čiže momentálne pokrýva značnú časť trhu.

O3D je zamerané na programátorov, ktorých vyhovuje skriptovací jazyk JavaScript a taktiež na vývojárov hier. O3D používa pre spúšťanie vlastný zásuvný modul, ktorý je nutné doinštalovať do prehliadača. Je programované tak, aby sme mali možnosť využiť procesor grafickej karty.

1.7.1 Štruktúra O3D

Aplikáciu a pomocné nástroje programujeme v JavaScripte. Samotné API je naprogramované v jazyku C++. Nami naprogramovaná aplikácia je spracovaná s API a to pomocou vykresľuje obsah pomocou OpenGL, alebo Direct3D. Keďže softvérové vykresľovanie nie je dostatočne rýchle, O3D má implementovanú možnosť využiť GPU.

Kód O3D je celý v dokumente HTML, teda okrem stiahnutia dokumentu zo servra sa naň nevynakladajú dodatočné nároky.

1.7.2 Scene Graph

O3D tak ako mnoho iných technológií pre zobrazovanie 3D obsahu na internete používa dátovú štruktúru Scepe Graph. Používa ho na vytváranie transformačného grafu a vykresľovacieho grafu. Transformačný graf v sebe ukladá parametre objektov v 3D scéne. Sú to napríklad informácie o pozícii, veľkosti a tvare. Vykresľovací graf v sebe ukladá informácie o tom, akým spôsobom bdú ktoré objekty zobrazené v 3D scéne. Okrem toho v sebe ukladá informácie o tom, ktoré objekty sa nachádzajú v scéne na takých miestach, že nie je potrebné ich vykresľovať, napríklad ja väčším objektom, alebo mimo kamery, mimo scény a podobne.

Transformačný graf môžeme vytvoriť dvoma spôsobmi. Oba spôsoby sú používané, no prvý spôsob je bežnejší. Ide o vytorenie takéhoto grafu pomocou dát, ktoré obsahujú informácie o objektoch, teda ich umiestnení, smer normály, farbu a pod. Po tomto úkone môžeme určiť kde presne sa budu objekty nachádzať v rovine. Druhý spôsob je imporotovanie modelov z iných aplikácií, ktoré exportujú do formátu COLLADA. Samozrejme je možné naprogramovať aj iný konvertor do O3D, ale COLLADA je podporovaná primárne. Tieto spôsoby môžeme aj kombinovať.

Pomocou matice pohľadu O3D mení svetové súradnice na súradnice pohľadu. Tak isto vymazáva a orezáva ostatné objekty, ktoré sa nenachádzajú v pohľade. Všetky objekty v 3D scéne sú prechádzané prísluľnými funkciami a označované, či sa majú vykresliť alebo nie.

1.7.3 Hlavné výhody použitia Google O3D

O3D je pomerne mladá technológia, ktoré je momentálne vo verzii O3D 0.1.40.1. Jej veľkou výhodou je podpora vykresľovania scény pomocou výkonu grafikej karty a prepracované vykresľovacie techniky. O3D je navrhnuté takým spôsobom, aby podporoval širokú škálu grafických kariet na čo najviac operačných systémoch. Vykresľovanie pomocou grafickej karty podporuje vykresľovanie kompletnej 3D scény, nie len jej niekotorých častí. Vďaka tejto skutočnosti je operačný systém zaťažovaný minimálne. Výnimky sú len textúry s pohyblivou desatinnou čiarkou a geometria s viac ako 65 543 bodmi.V tomto prípade, ale aj v prípade ak grafická karta nepodporuje funkcie O3D, používa softvérové vykresľovanie. Alternatívou býva zvyčajne použitie inej textúry, príp. rozdelenie objektov na menšie, alebo odstránenie prebytočných vrcholov.

Ďaľšou veľkou výhou je použitie samostatného JavaScriptového enginu V8. Tento engine je použitý aj v prehliadači Google Chrome. Ide o vysokorýchlostný engine, ktorý je nezávislý na JavaScriptovom engine prehliadača. Preto odpadá nekompatibilita, či zbytočné spomaľovanie O3D v prehliadačoch.

O3D používa pokročilé textúrovanie a techniky tieňovania objektov.

1.8. WebGL

WebGL (Web Graphics Library) je nízkoúrovňové API, ktoré je rozšírením tagu Canvas v HTML5 ako rozhrania DOM (Document Object Model). Je to multiplatformová technológia, pomocou ktorej môžeme vytvárať detajlnú 3D scénu vysokej kvality. Na vykresľovanie scény používa softvérový renderer OpenGL ES 2.0 obsiahnutý v CopperLicht API. Rozhranie WebGL je veľmi príbuzné rozhraniu OpenGL ES 2.0, pričom je blízke jazyku GLSL (OpenGL shading language), no ako primárny programovací jazyk využíva JavaScript a jeho výhody.

WebGL je implementované priamo do prehliadača, čiže odpadá nutnosť doinštalovávať zásuvné moduly. Výhodou je, že tvorcovia najrozšírenejších prehliadačov na trhu sú členmi skupiny vytvárajúcej WebGL. Pôvodným tvorcom WebGL je spoločnosť Mozilla Foundations a momentálne tvorbu menežuje v spolupráci so spoločnosťou Khronos pod názvom WebGL Working Group.

1.8.1 Ambiera CopperLicht 1.1.0

CopperLicht je JavaScriptový engine, ktorý je určený na tvorbu 3D aplikácii a hier určený na zobrazovanie prostredníctvom internetového prehliadača. Používa rozhranie WebGL, ktoré podporujú takmer všetky najrozšírenejsie prehliadače. 3D scénu vykresľuje za pomoci hardvérovej akcelerácie a je možné ho používať bez dodatočného inštalovania zásuvných modulov.

Súčasťou CopperLichtu je aj editor 3D scény. Je v ňom možné plnohodnotne vytvárať 3D scény a tak isto aj aplikácie. Výhodou je, že objekty scény prekladá do jednoduchého binárneho kódu, ktorý má minimálnu veľkosť a preto nie je tak náročný na dátový prenos.

V súčasnosti CopperLicht podporuje mnoho formátov 3D grafiky, ako napríklad 3DS, OBJ, DAE, LWO, CSM a iné.

1.8.2 Výhody CopperLichtu

CopperLicht je optimalizovaný tak, aby dokázal vykresľovať 3D scénu čo najrýchlejsie, aj napriek jej veľkosti. Podporuje vyše 30 najrozšírenejších 3D grafických formátov. Jeho súčasťou je plnohodnotný editor scény s možnosťou meniť parametre scény v reálnom čase. Podporuje animáciu objektov a v poslednej verzii bola pridaná animácia postáv. Používa dátovú štruktúru Scene Graph. Na rozdiel od iných enginov vykresľujúcich 3D, CopperLicht prekladá scénu do binárnych súborov, čo odľahčuje dátový prenos po sieti.

Hlavné výhody editora CopperCube je možnosť predvoliť si veľké množstvo preddefinovaných objektov a shaderov. Podporuje animáciu postáv a skeletov. Používa hierarchický Scene Graph, ako to už býva štandardom pri týchto technológiách. Podporuje animáciu textúr a dokáže generovať vlastné textúry a objekty. Je možné ho nastaviť takým spôsobom, aby neprekresľoval zakaždým po zmene scény, ale len vtedy ak je to nevyhnutné. Toto odľahčuje zbytočné zaťažovanie procesora.

CopperLicht využíva realistické riešenie kolízií v scéne v rozličných variáciách. Pre simulovanie fyziky používa veľký počet matematických knižníc. Tak isto má vstavanú vrstvu pre komunikáciu s periférnymi zariadeniami a vstupmi z myši a klávesnice. Spoľahlivo detekuje, či v prehliadači bude možné vykresliť 3D scénu. Výhodou je, že je s otvoreným kódom.

1.8.3 Hlavné výhody použitia technológie WebGL

WebGL je technológia založená na OpenGL. Vzhľadom k tomu je podporovaná multiplatformovo a integrovaná vrámci mnohých prehliadačov. Toto jej umožnilo veľmi rýchlo sa rozšíriť. WebGL API je založené na známom programovacom jazyku kompatibilnom s väčšinou platforiem. Práve preto sa rýchlo ujalo a presadilo ako štandard pre 3D grafiku na internete. Je implementované priamo do prehliadačov a aj preto je veľmi úzko späté s kódom HTML. Bezproblémovo zvláda interakciu s inými HTML elementami v kóde HTML dokumentu. Samozrejmosťou je použitie udalostí z JavaScriptu a aj tým zvýšená interaktivita prehliadača s 3D scénou. Využíva hardvérovú akceleráciu3D grafiky. Jednou z výhod je aj možnosť interaktívne modifikovať scénu priamo počas jej prehliadania. Táto vymoženosť značne urýchľuje programovanie, pretože nie je potrebné kompilovať scénu a následne si ju prezerať a odlaďovať.


Žiadne komentáre:

Zverejnenie komentára