3D v technológii Flash pomocou open source knižníc
18. Február, 2011, Autor článku: Kolesár Ivan, Informačné technológie
Ročník 4, číslo 2
Pridať príspevok
V poslednom období je badateľná snaha priniesť na internet používateľom nielen dvojrozmerné web stránky, ale i zážitok preskúmavania trojrozmernej scény sprístupnenej cez webaplikáciu. Jednou z možností ako tento zážitok sprístupniť je pomocou technológie Flash. Práve tomu sa venuje tento článok, konkrétne opisu schopnosti vykreslenia trojrozmernej scény pomocou externých knižníc a ich vzájomnému porovnaniu po stránke kvalitatívnej, čím sa myslí kvalita obrazu, počet pokročilých techník vykresľovania scén, rýchlosť vykresľovania.
1. Úvod
Adobe Flash je multimediálna platforma, využívaná pre prehrávanie videa, animácií a pridávanie interakcie na webovské stránky. Je to taktiež jedna z technológií, ktorá na internete sprostredkúva webaplikácie. Samotná technológia existuje už od roku 1996 a odvtedy sa neustále naďalej vyvíja a vychádzajú jej nové verzie. Najaktuálnejšia je verzia 10.1 ,ktorej vývoj sa uberá aj smerom na operačný systém Android 2.2 a hardvérovú akceleráciu pre niektoré operácie, ako dekódovanie H.264 videa, na mobiloch a rovnako aj na grafických kartách pre vykresľovanie.
Táto technológia sa skladá z animácií, prezentovaných ako vrstvy obrázkov, zvládaní prúdového preposielavania videa a zvuku a skriptovacieho jazyka Actionscript 3.0. Hlavnými výhodami tejto technológie sú jej multiplatformovosť, kedže existujú Flash player prehrávače pre viacero najznámejších operačných systémov, a veľká rozšíriteľnosť medzi používateľmi internetu, kde podľa štúdií od spoločnosti Adobe až 99% používateľov má nainštalovaný a povolený prehrávač. Jej rozšírenie je pozorovateľné aj pri obľúbených webových službách ako YouTube alebo Facebook.
2. Actionscript 3.0
Actionscript 3.0 je voľne dostupný skriptovací jazyk, ktorý vlastní spoločnosť Adobe. Pôvodne bol vyvinutý pre tvorbu 2D vektorovej animácie vo Flashi. Jeho prvá verzia sa objavila v roku 2000 a bola prístupná v prehliadači Flash player 4, kde sa postupne upravoval syntax pre objektovo orientované programovanie, pridávala správa prúdového spracovania a nakoniec v najnovšej tretej verzii i limitovaný prístup k hardvérovej akcelerácii. Syntax jazyka je odvodený od syntaxu ECMAScript, podľa štandardu ECMA262 piatej edície.
Je teda syntakticky podobný aj s ďalšími populárnymi skriptovacími jazykmi ako Javascript a JScript. Existuje pre neho mnoho vývojových prostredí, medzi najznámejšie patrí napríklad Adobe Flash od spoločnosti Adobe alebo open source projekty swftools, FlashDevelop a mnoho iných. Práve pomocou tohto jazyka je možné v technológii Flash voľne vytvárať bohaté webaplikácie obsahujúce animácie, video, audio a interaktivitu.
3. Flash 3D
Pod pojmom 3D vo Flashi je tu konkrétne na mysli schopnosť vykresľovať trojrozmerné scény pomocou rôznych vykresľovacích techník v technológii Flash. Konkrétne Flash 10 už má v sebe podporu pre vykresľovanie scény, avšak zatiaľ je to stále bez pokročilejších vykresľovacích techník akými sú napríklad shadere, text[ry. Tie sa dajú nájsť hlavne v externých pomocných knižniciach slúžiacich pre vykresľovanie 3D scény. Takýchto knižníc sa dá na internete nájsť mnoho, v tomto článku sú bližšie porovnávané tie, ktoré sú open source, majú bohatú paletu techník pre zobrazovanie, veľkú komunitu používateľov, mnoho návodov a príkladov. Sú to knižnice Away3D, Papervision3D a Sandy3D.
Každá z nich je zameraná pre odlišný typ aplikácie, ktorý má vykresliť, a tak majú rôzne vlastnosti napríklad pri kvalite vykresľovania pri mnohých objektoch, rýchlosti vykresľovania, počtu dostupných techník a podobne. Preto boli tieto knižnice podrobne preskúmané, porovnané a bol pre každú vypracovaný samostatný záver. Preskúmavanie knižníc sa dialo kvalitatívne, kde pri každej knižnici sa bralo do úvahy, ktoré techniky podporuje a ktoré nie. Ďalej sa porovnávalo kvantitatívne, kde sa na daných knižniciach pomocou externých aplikácií a testovania zistilo ich správanie pri niektorých úlohách počítačovej grafiky a ich celková rýchlosť vykresľovania scény.
3.1 Flash 3D
Ako prvé je v skratke spomenuté čo majú dané knižnice spoločné. Každá z týchto knižníc v sebe obsahuje základné vykresľovanie priestorovej scény, reprezentovanej množinou trojuholníkov alebo sústavou geometrických primitívov, dokážu vykresliť flat shader, phong shader, enviroment shader a cell shader. Dokážu prehrávať a spracovávať animácie objektov v scéne, vlastné tiene objektov a podporujú aj vykresľovanie textúr na objektoch.
3.2 Away3d
Je najmladšia z porovnávaných knižníc. Primárne je zameraná pre sprístupnenie čo najväčšieho počtu pokročilých grafických techník. Oproti ostatným dvom knižniciam ponúka naviac nahrávanie scény z mnohých formátov, pričom tými rozšírenejšími sú formáty Wavefront, Collada a MD2. Má v sebe priamo nástroje aj pre exportovanie zobrazovanej scény do formátov Wavefront a vlastný dátových formátov AWD alebo AS3. Nastavovanie zobrazovania scény prezentuje pomocou kamerového systému, kde hlavným plusom tejto knižnice je množstvo typov kamier, pričom každá sa dá vnútorne nastavovať podľa parametrov a to dokonca aj na úrovni výberu šošoviek, napríklad ortogonálnej, perspektívnej alebo sférickej.
Animácie objektov knižnica spracováva na dvoch úrovniach, na globálnej transformácii celého objektu alebo na animáciách na lokálnych úrovniach v rámci objektu. Tie dokáže ovládať buď pomocou pomocnej kostrovej štruktúry modelu alebo prehrávať ako postupnosti množín trojuholníkov. Knižnica obsahuje sadu tried reprezentujúcich jednotlivé typy svetiel: bodové, smerové, ambientne, a pre simuláciu jednoduchého projekčného tieňa. Ďalej ponúka triedy nástrojov procedurálneho spracovania scény, vyťahovanie, zrkadlo, kopírovanie a pod.
Pre realistickejšie zobrazovanie scény ponúka aj nástroje pre zobrazovanie odrazu šošoviek a HDR textúr (High Dynamic Range, jedná sa o obrázky s vysokým jasovým rozsahom). V poslednom rozšírení knižnice bola pridaná možnosť dynamického prevodu scény do BSP (Binary Space Partition, rozdelenie scény do stromu polpriestorov) a vďaka tomu aj rýchlejšiemu vykresleniu veľkých scén.
3.2 Papervision3D
Knižnica, ktorá ma najväčšiu komunitu spomedzi porovnávaných. Má dostatočnú paletu nástrojov a techník a poväčšine ak je žiadaná technika, ktorá nie je v oficiálnom vydaní, je možné ju nájsť na internete vytvorenú od nadšenca z komunity. Má podporu pre väčšinu známych modelovacích aplikácií, napríklad Blender, 3DS Max, a ponúka rozšírené nástroje pre nahrávanie, spracovanie a dokonca aj exportovanie scény vo formate Collada. Jej nastavenie zobrazovacieho kanála spočíva vo výbere typu kamery a v nastavení parametrov kamery. Narozdiel od Away3D neponúka výber šošovky, knižnica poskytuje iba perspektívny pohľad, a má menej typov kamier.
Pre vývojárov však knižnica ponúka špeciálny typ kamery, ktorý priamo v okne stále zobrazuje jej základné parametre. Dokáže taktiež prehrávať animácie uložené vo formáte Collada, neponúka však ich procedurálne ovládanie. Z pokročilejších unikátnych techník počítačovej grafiky je v nej používané displacement mapovanie. Avšak podobne ako Away3D ponúka triedy pre zobrazovanie 3D textu s vlastným fontom. Taktiež pomocou komunity bolo do nej pridané zobrazovanie odrazu šošoviek a projekcie jednoduchého tieňovania.
3.4 Sandy3D
Najstaršia z porovnávaných knižníc, v súčasnosti sa jej vývoj presúva na skriptovací jazyk haXe, avšak ešte stále sa vyvíja aj pre jazyk AS3. Narozdiel od Away3D a Papervision3D neposkytuje knižnica načítavanie scény z formátu Collada, ani širší výber typu kamery a jej nastavovania. Animácie podporuje iba z formátu MD3 a to formou prehrávania postupností množín trojuholníkov. Jej hlavným prínosom je jej silné prepojenie s fyzikálnym modelom knižníc simulujúcych fyzikálne javy WOW a jiglib flash.
Obr. 1: Tabuľka prehľadu knižníc, ich podpory jednotlivých súčastí 3D počítačovej grafiky
3.5 Porovnávacie aplikácie
Pre každú knižnicu bola navrhnutá sada testovacích aplikácií. Tie mali porovnať ako dobre si jednotlivé knižnice poradia s niektorými úlohami počítačovej grafiky a ako rýchlo dokážu vykresľovať 3D scénu. Pre všetky tieto aplikácie je použitý rovnaký model scény pri porovnávaní. Bolo nazbieraných 50 validných meraní z webovej stránky http://www.divan.tym.cz/flash/ a z nich boli vypracované závery.
3.5.1 Základné zobrazenie scény
Prvý typ aplikácie zobrazuje základnú geometriu scény s jednoduchými farebnými materiálmi.
Obr. 2: Prvý typ aplikácie pre testovanie
Podľa grafu na obrázku 2 je vidieť, že tento typ úlohy dokážu mierne rýchlejšie vykresliť knižnice Papervision3D a Sandy3D. Sandy3D má však problémy korektne preusporiadávať trojuholníky scény a vznikajú v nej artefakty.
3.5.2 Zobrazenie scény s textúrami
Geometricky sa zobrazuje rovnaká scéna, avšak tá už nie je rozdelená do viacerých objektov, ale spojená do jedného a na tomto celom objekte je použitá jedna textúra.
Pri tomto meraní je badať, že Away3D si lepšie poradí so scénou ak je uložená do jedného objektu, ako do viacerých, a taktiež, že knižnica Sandy3D má menšie problémy zobraziť otextúrovaný objekt.
3.5.3 Zobrazenie scény s phong shaderom
Opäť geometricky rovnaká scéna, obsiahnutá v jednom objekte s rovnakou textúrou ako predchádzajúca aplikácia, avšak je pridaný phongov lokálny osvetľovací model.
Obr. 4: Tretí typ aplikácie pre testovanie
Tu je práve vidieť výborne zvládnutý matematický model knižnice Sandy3D, ktorá ako jediná v priemernom čase dokázala korektne vykresliť scénu v reálnom čase. Away3D síce vykresľovala pomalšie, avšak spomedzi meraných knižníc práve jej výstup bol takmer úplne bez artefaktov. Pri tomto meraní najhoršie dopadla knižnica Papervision3D, ktorá ma problém časovo a aj korektne vykresliť phong shading pre nekonvexné útvary.
3.5.4 Rýchlosť vykresľovania jednotlivých knižníc
Posledný typ aplikácie meria rýchlosť vykresľovania 3D scény jednotlivých knižníc. Tá je udávaná v počte trojuholníkov, ktoré dokáže knižnica vykresliť v reálnom čase. Aplikácia samotná zobrazuje dynamickú scénu, v ktorej sa pohybuje stúpajúci počet planét až kým aplikácia nezistí, že rýchlosť vykreslenia stúpla nad 40 ms.
Obr.5 Priemerný počet trojuholníkov vykrelených v reálnom čase
Z obrázka 5 je zrejmé, že cenou za bohatú paletu techník platí knižnica Away3D rýchlosťou vykresľovania. Naproti nej ostatné knižnice sa držia pomerne vysoko na hodnote 3500 vykreslených trojuholníkov v reálnom čase.
3.6 Záver
Každá z porovnávaných knižníc jedinečným spôsobom vykresľuje 3D scénu a tak sa každá zíde pre rôzne typy aplikácií.
Away3D je knižnicou pre aplikácie, ktorých koncoví používatelia majú silnejšie počítače a sú zameraní na zobrazovanie scén pomocou pokročilejších grafických techník, poprípade čo najreálnejšieho zobrazovania. Dobre sa takto hodí pre zobrazenie scén s nie komplikovanou geometriou, ale s dôrazom pre verné vykreslenie.
Papervision3D narozdiel od Away3D neponúka takú paletu techník pre zobrazovanie, ale snaží sa to kompenzovať rýchlosťou vykresľovania. Taktiež tým že táto knižnica má tak bohatú komunitu na webe existuje mnoho rozšírení a ukážok pre ňu. Práve to, že je ľahko prístupná, rýchla a má dostatočné techniky pre vykresľovanie 3D scény ju robí výbornou knižnicou pre tvorbu webaplikácií.
Sandy3D je najstaršou knižnicou pre vykresľovanie 3D scén, oproti ostatným má výborne vytvorený matematický model, ma najviac návodov a príkladov zo všetkých knižníc a svojím prepojením s externým časticovými a fyzikálnymi knižnicami sa veľmi dobre hodí pre zobrazovanie fyzikálnych alebo matematických simulácií.
3.7 Budúcnosť 3D na webe
Aj keď momentálne je Flash platforma jednou z vhodnejších pre vykresľovanie 3D scén na webe, samotný vývoj Flash prehliadačov sa postupne začína zameriavať na hardvérovú akceleráciu na počítačové zostavy aj na mobilné zariadenia. Vývoj tohto prehliadača sa zatiaľ označuje ako projekt Molehill, ktorý je označením aj pre tvorbu nového nízko úrovňového 3D API pre Flash. Okrem toho sa pre web dlhodobejšie chystá nový štandard HTML 5, ktorý pomocou rozšírenia WebGL a tagu canvas bude schopný zobrazovať 3D scénu priamo s hardvérovou akceleráciou. Obidve prístupy sú stále vo vývoji, kde projekt Molehill, má vyjsť v prvej polovici 2011 a prvá dokončená fáza HTML 5 v roku 2012.
V nedávnej dobe tiež vznikla reakcia pre existenciu veľkého množstva skriptovacích jazykov pre vývoj webaplikácií. Je ním open source jazyk haXe, ktorý ma za ciel’ zjednotiť tvorbu aplikácií inak tvorených v Javascripte, Jave, Actionscripte, PHP alebo v C++. Syntax tohto jazyka je podobný ako Javascript alebo Actionscript, kedže syntax prebral od ECMAScript štandardu. Obsahuje aj kompilátor, ktorý dokáže aplikáciu z jazyka haXe prekompilovať do týchto jazykov alebo aj priamo do Flash aplikácie, ktorá je optimálnejšia oproti originálnemu Flex kompilátoru a dokáže poskytnúť v niektorých prípadoch až 30% zrýchlenie. Hlavnou výhodou haXe je, že dokáže vyvíjať rovnaké aplikácie ako pre Flash tak aj pre Javascript, v ktorom bude v budúcnosti sprístupnený aj webGL.
Literatúra
- Žára, J.: Moderní počítačová grafika. Brno : Computer Press, 2004. ISBN 80−251− 0454 − 0.
- Adobe, Flash Player Statistics. [online] 2010 [cit. 9.3.2010] Dostupné z
http://www.adobe.com/products/playercensus/flashplayer/ - ActionScript 3.0 Language and Components Reference. [online] 2010 [cit. 9.3.2010] Dostupné z http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/
- ECMAScript. [online] 2010 [cit. 9.3.2010] Dostupné z http://www.ecmascript.org/
- Away3D Flash Engine. [online] 2007 [cit. 9.3.2010] Dostupné z http://www.away3d.com/
- Papervision3D. [online] 2006 [cit. 9.3.2010] Dostupné z http://blog.papervision3d.org/
- Sandy 3D engine (AS3 AS2) for Adobe Flash. [online] 2005 [cit. 9.3.2010] Dostupné z http://flashsandy.org/
- Kolesár, I.: Testovanie flash 3D knižníc. [online] 2010 [cit. 9.3.2010] Dostupné z
http://www.divan.tym.cz/flash/ - haXe, Welcome to haXe!. [online][cit. 9.3.2010] Dostupné z http://haxe.org/
- Adobe Labs – 3D APIs for Adobe Flash Player and Adobe AIR. [online][cit. 10.11.2010] Dostupné z http://labs.adobe.com/technologies/flash/molehill/
- HTML 5 Editor Ian Hickson discusses features, pain points, adoption rate, and more. [online][cit. 10.11.2010] Dostupné z http://blogs.techrepublic.com.com/programming-and-development/?p=718