Vzpomínáte na všechny ty pokusy emulovat 3D v JavaScriptu? Na javascriptového Wolfensteina, Dooma nebo 3D šachy? Není to dávno, co se objevily první vážné pokusy přenést 3D přímo do prostředí Webu.
Tím přímo myslím, že se jednak stane součástí stránky, bude s ním možné manipulovat z JavaScriptu, ale zároveň si zachová všechny důležité parametry (např. využití akcelerace grafických karet).
První pokusy Firefoxu a Opery s 3D moc úspěšné nebyly (a nejspíš si na ně už ani nevzpomenete), navíc nebyly mezi sebou kompatibilní. Pozdější projekt O3D od Googlu si již pozornost zasloužil, ovšem jednalo se jen o plugin a i ten byl s ostatními nekompatibilní.
Pořádek nastolila až skupina Khronos (z její dílny pochází i standard OpenGL), která během minulého roku stihla vytvořit první pracovní verzi specifikace WebGL (čili OpenGL pro Web). K vykreslení 3D používá HTML značku canvas, která byla pro podobná vykreslování od začátku určena. Pro přepnutí canvasu do 3D režimu stačí zavolání canvas.getContext( „webgl“ ).
Podstatné je, že se skupina Khronos současně dohodla s výrobci prohlížečů (až na Microsoft v zásadě se všemi). Rozepsal jsem se o tom v článku na svém druhém blogu HTML456, ale vás teď určitě zajímá tohle video:
[youtube Vva36undIss]
Na video upozornil @ajaxian
Líbí? Vše z videa si můžete vyzkoušet sami na Demu GLGE, pokud máte build prohlížeče s experimentální podporou WebGL.
Všimněte si při tom, že se nejedná jen o nějaký hloupý 3D model. Při procházce zahradou nemůžete např. snadno projít skálou, nýbrž pohybový mechanismus vás navede podél ní, jak je u moderních 3D her zvykem.
Vaší pozornosti by nemělo ujít, jakým způsobem bylo toto demo připraveno. Bylo totiž vytvořené v Blenderu, ze kterého existuje export do XML formátu, jenž umí zpracovat javascriptová knihovna GLGE. Demo z videa najdete popsané v tomto XML souboru.
Vytvořili jste někdy v Blenderu něco pěkného? Zkuste to schválně najít a vyexportovat pro GLGE. Funguje to?
Vše potřebné je tedy na světě. Během tohoto, maximálně následujícího roku se implementace WebGL objeví ve stabilních verzích většiny prohlížečů. A můžeme jen doufat, že mezitím někdo napíše emulační vrstvu pro běh v IE (podobně jako Google vytvořil emulační vrstvu pro běh 2D canvasu v IE). K emulaci může použít jak 2D projekci do VML (to by bylo ovšem pomalé), tak třeba Flash (tam by rychlost už snad mohla stačit).
Pokrok nezastavíš. Ještě před rokem mě 3D na Webu naplňovalo velkou skepsí. Před půl rokem jsem už cítil jistou naději. Dnes to beru jako hotovou věc a zbývá již jen mechanické čekání na dobu, kdy to bude všechno hotové a běhat mezi uživateli.
Vývoj letí kupředu už teď. Vedle knihovny GLGE z dema tak vznikají další knihovny pro WebGL, např. SceneJS nebo X3DOM. Vznikají už i vizionářské ukázky, nebude tak problém skloubit WebGL s touch-screen ovládáním na mobilu apod. Zajímavé novinky se objevují každý týden, pokud o nich chcete vědět pravidelně, je tu blog Learning WebGL, pokud vám stačí občasné shrnutí, čtěte tento blog a vedle něj HTML456.
Co zbývá dodat?
WebGL rules!
Ještě shrnutí důležitých odkazů:
Pekné, len jedno nechápem. Keď je celá stránka postavená ako JavaApplet, alebo app. na platforme Shockwave / Flash / SilverLight / Adobe Air / JavaFX, tak sa to rieši len odkazom nech si návštevník stiahne a nainštaluje to alebo ono, ak mu to nefunguje.
A v prípade, že návštevník príde s IE a IE skrátka niečo nepodporuje (prekvapivo), tak to máme pracne emulovať, bez ohľadu na zložitosť a náročnosť??? Čo takto radšej odkaz na stiahnutie skutočného prehliadača a/alebo Chrome Frame? V príncípe sa to nelíši od postupu v 1. odstavci, tak prečo stále ustupovať tým tupým užívateľom IE?
Vzpomínám na dobu cca před 10 lety, kdy jsem se (myslím z časopisu Bajt) naučil zákady VRML, stáhnul plugin do Netscapu a pak pobíhal s krejčovským metrem po pokojíčku a tvořil jeho model. Byl dokonce oživený JavaScriptem a tak šly otvírat šuplíky u mého stolu :-)
Abych tu jen melancholicky nevzpomínal, přidám myšlenku: Je zajímavé, jak se dost technologií vynoří (ze zpětného pohledu) předčasně a v podobě, která není všeobecně přijata. Pak se pár let nic neděje a nakonec dojde k reinkarnaci a v podstatě totéž, jen implementováno jinak, se začne masově šířit. Kromě VRML vs. WebGL to byly třeba Java vs. Flash nebo "network computer" do Sunu vs. webové aplikace a "cloud". Vždycky se ale chytne až ta druhá vlna - pokud je první technologie v době svého vzniku něčím neadekvátní/předčasná, málokdy dojde k jejímu vylepšení a inkrementálnímu rozšíření. Říkám si, jestli je za tím víc technologie nebo psychologie...
No nevím, ale proč 3D na webu? Jaké to má uplatnění vyjma her a pár specifických aplikací? Kdo to potřebuje? VRML hype tu byl před víc než deseti lety, pokud si pamatuju, a taky o něj nebyl moc zájem. Podle mě je spousta jiných důležitějších věcí, na které by se mohli vývojáři soustředit.
@DevelX Naštěstí je emulace v tomhle případě mnohem snazší než přimět někoho k instalaci Javy apod. Pro emulaci canvasu totiž stačí také použít jen jeden jediný odkaz - totiž odkaz na emulační skript. Ovšem ten vloží tvůrce stránky a jen jednou a je vystaráno. Uživatel už nic stahovat nemusí a ani nepozná, že se mu něco emuluje. Snazší metodu snad ani neznám. Takže vážně žádná náročnost! 8-)
@kolombo16 To není nic nového, prostě plugin. Podobně šlo vložit do prohlížeče cokoliv už od devadesátých let, viz třeba to VRML. S tím rozdílem, že QL není univerzální 8-)
@David Majda Jo ten model tvého pokoje jsem kdysi viděl u tebe na webu. S onou reinkarnaci se jedná víceméně o pravidlo. Přemýšlím, kde jsem o něm četl. Je to aplikace onoho být ve správný čas na správném místě. Pokud někdo moc předběhne svou dobu a neví o tom, je odsouzen k neúspěchu. Pokud o tom ví, pak má šanci buď tiše čekat nebo lépe - pomalu tlačit globální vývoj svým směrem (na to druhé jsem měl i nějaký příklad z IT, ale teď si ho nedokážu vybavit). Je to vysvětlení toho, proč vývoj často probíhá ve spirálách. Ty jsou totiž využitím dříve objeveného a zapomenutého znovu a v pravý čas. (BTW Znáš historku Pandin palec? Podívej se na ni a kupodivu najdeš souvislosti) Škoda, že se tyhle principy nehustí i do všech programátorů. Celý IT obor by byl hned mnohem dál.
@karf + @Darken Myslím, že vám už odpověděl David výše 8-)
@Jan Kodera: Flash tu bude ještě nějakou dobu z důvodu zpětné kompatibility tam, kde nelze říct "stáhni si jiný prohlížeč, nebo máš smůlu," takže na stránky, které budou mít klíčové prvky řešené pomocí canvasu/html5/webGL/atd ... si ještě počkáme pěknou dobu. Samozřejmě, někdo to bude řešit více variantami, podobně jako se už dnes podstrkují IE upravené css a dělají výjimky v JS. Co s ním ale bude za takových pět, deset let, kdy podíl prohlížečů bez podpory těchto vlastností klesne pod "kritickou hodnotu" je otázka. Myslím ale, že Adobe tento scénář vidí také - v tom vidím hlavní důvod existence flashe pro linux, nebo práci na nové, plnohodnotné verzi pro mobilní telefony. Prostá snaha rozšířit se co nejvíc dřív, než konkurence.
Ale to je jen můj soukromý náhled na tuto problematiku.
@Zopper Nebudu komentovat, jak dlouho vydrží Flash, ale to se striktním čekáním na rozšíření nových prohlížečů dnes rozhodně neplatí tak striktně, jak popisujete. Web se za ty roky naučil jednu důležitou věc, kterou dřív neuměl, a sice jak úspěšně emulovat nové technologie ve starých prohlížečích.
Kdyby to Web uměl před lety, tak by dnes SVG na Webu byla absolutní normálka. Takhle se SVG emulované pomocí VML pro IE naučil až v posledních letech. A WebGL půjde pomocí Flashe emulovat i v takovém IE6. Jediná otázka je, kdy někdo tu emulační vrstvu napíše a jak rychle poběží.
Jak je to s bezpečností? Grafické ovladače 3D jsou známy svou děravostí, protože komerční výrobce (ati/nvidia/intel) zajímá jen maximalizace výkonu svého hw, na bezpečnost se příliš nehledí. Na desktopu to moc nevadí, protože to je "jenom" local exploit, ale pokud javascript bude moct volat přímo funkce opengl, tak se možná ještě dočkáme pěkného masakru!
no tak to je sice hezky ze html bude umet vykreslit 3d ale premejsli nekdo co dal? umite si predstavit takovou hru typu Quake nebo Wow napsanou v Javascriptu? to se jako pri navsteve stranky stahne halda javascriptu? Jak se postahujou modely, grafika, zvuky? V pripade lokalni hry se hra stahuje jednou, tohle se bude stahovat porad? Chci to videt opravdu, to uz mi prijde mnohem jednodussi reseni vlozit do vsech prohlizecu nejaky plugin typu Flash, kterej se chova dejme tomu jako lokalni aplikace (takze ma svoje uloziste na disku atd atd)
@Socan Je předvídatelné, že Microsoft bude zatím vše ignorovat. Napřed musí implementovat 2D canvas (zda, tak učiní v IE9, to zjistíme již za pár měsíců viz též http://html456.blogspot.com/2009/11/neoficialni-zpravy-o-internet-exploreru.html ), teprve po té se může pustit do 3D.
Martin Hassman ex-biochemik, umělecký programátor a publicista. Spoluzakladatel CZilly, zakladatel Zdrojáku, správce HTML5.cz, organizátor hackathonů, čekovacích muzejních nocí aj. akcí.
Přečteno 24 505×
Přečteno 24 030×
Přečteno 20 752×
Přečteno 19 837×
Přečteno 19 809×