piątek, 10 kwietnia 2009

Canvas3D - w stronę trzeciego wymiaru

Michał siedział przygnębiony.
-- Michałku dlaczego patrzysz na mnie wilczym wzrokiem?
-- Z prostego powodu, wszystko jest trochę przygnębiające. Im bardziej patrzymy dalej tym mniej widać szczegółów.
-- Ale to normalne. Nie wolno Ci być smutnym, bo mi to się udzieli. Ja nie chcę być smutna. Zrozumiałeś?
-- No dobrze. Zmartwiony jestem tym, że chcielibyśmy mieć trzeci wymiar na stronach internetowych. Problem w tym że do końca nie wiemy jak ma wyglądać ta interakcja w trzecim wymiarze wobec strony internetowej. Programiści napiszą niskopoziomowe biblioteki z których inni programiści mogą skupić się na dostarczenie zawartości i interakcji. Ostatnio zainstalowałem sobie wtyczkę canvas3d 0.2.0 z maja 2008 roku (bo używam Firefoxa 3). Ostatnio wydano wersję wtyczki canvas3d 0.4.2 ( która podobno będzie chodzić z Firefoxem 3.5 i prawdopodobnie tez z Google Chrome). Jednak za rozwój tej wtyczki odpowiada jeden człowiek, co w sytuacji gdy nie ma żadnego szumu marketingowego to ryzykuje tym że praca pójdzie nadaremno.
-- Skąd taki pesymizm?
-- W sytuacji w której większość ludzi używa Internet Explorera i FlashPlayera, powoduje to że idzie się po najmniejszej linii oporu i jak inwestycji. Dlaczego programiści z ruchu OpenSource nie napiszą ActiveX do obsługi znacznika Canvas? Bo nikt nie będzie chciał tego instalować. Z drugiej strony mamy standard SVG, tyle czasu istniały różnego rodzaju wtyczki do SVG, to jednak Adobe wycofało się z rozwijania tego standardu i jak rozwoju wtyczki Adobe SVG Viewer. W tej sytuacji deweloperzy stron internetowych mają do wyboru: FlashPlayer, Silverlighta, Canvas i SVG, to jednak wybiorą FlashPlayera bo jest do wszystkiego. Adobe mając FlashPlayer nie będzie przecież inwestować w jego konkurenta w standard SVG. Internet Explorer miał odpowiednik Canvas w technologii DirectAnimation, ale już nikt już o tym nie pamięta (pozostał tylko VML ze względu na jego zastosowanie w dokumentach Microsoft Office). Canvas wprowadzono po to żeby można rysować za pomocą skryptów, co miało znaczenie w takich silnikach jak Webkit i Gecko pod Linuksem, bo wtedy Flash Player dla Linuksa był w trakcie rozwoju. Potem znajomość programowania pod canvas przydała się programistom aplikacji na iPhone/iPad a także pod S60 WebBrowser. SVG pomimo że jest już zaimplementowane to jedna dopiero w wersji WebKit 520. Widać w tym też problematyczność stosowania tych technologii wobec Flash Playera. Obawiam się że nawet najlepsze chęci implementacji rozwiązań w canvas3d, będzie przypominało zainteresowanie canvas czy SVG czy takimi standardami jak MathML czy XForms. Jest sposób na to żeby to zmienić - wystarczy dostarczyć kontrolkę ActiveX razem z przeglądarką opensourcową.
-- Michałku, ale te kontrolki trzeba by instalować? Przecież nikt nie zainstaluje tego wprost.
-- No cóż przecież można dostarczyć ludziom - programistom wbudowana kontrolkę ActiveX dostarczaną razem z przeglądarką tak więc nie byłoby problemu. Instalując Firefoxa użytkownik instalowałby kontrolkę ActiveX z silnikiem Gecko to programiści mogliby osadzić na stronie internetowej kod który załadowałby Firefoxa do Internet Explorera. Kiedyś była taka możliwość. ale teraz mamy to samo w tym co jest w wersji standalone Mozila Prism 0.9 gdzie jest plik C:\Program Files\Prism\xulrunner\mozctl.dll
Dla Webkita sprawa jest dość dziwna. Teoretycznie można by zrobić kontrolkę ActiveX z Webkita, np połaczyć QActive z QWebKit ale to nie jest takie proste (licencja LGPL nie dotyczy QActive), kiedyś był projekt a obecnie zarzucony swiftdotnet. Przez jakiś czas oczekiwano Google czy Microsoft wdrożą WebKit jako odrębną kontrolkę ActiveX. Pozostaje nam czekać na efekty pracy nad Canvas w Gears.
-- Ale zmierzamy w stronę trzeciego wymiaru.
-- Dusiu zmierzamy i nie wiemy co z tego wyniknie. Sprawa mi przypomina bardziej mroczne lochy klasztornego archiwum, gdzie technologie od trzeciego wymiaru dla internetu leżą sobie na półkach. Ja czuję się przy tym jak archiwista od technologii informatycznych. Może jednak nie powinien tym się przejmować. I przyjąć założenie, że trzeci wymiar jest dobry dla gier, ale czy witryna internetowa ma w nawigacji przypominać wnętrze budowli? Jeżeli tak to trzeba zadać sobie pytanie czy może lepiej zmienić architekturę działania przeglądarki internetowej, a rendering stron WWW potraktować jako interaktywna warstwę na obiektach w trzecim wymiarze. Istnieje projekt Awesomium którego celem jest osadzenie stron internetowych w trzecim wymiarze, na bazie silnika Ogre i bibliotek z Chromium. Ale to nic nowego dla mnie już ponad rok czasu to istnieje w Blink3D. albo w UOgreBrowser. Sprawia to pewną trudność bo nikt nie będzie inwestował w zrobienie przeglądarki która miałaby 2 poziomy nawigacji: jeden tryb to tradycyjna przeglądarka a drugi tryb to załadowany świat 3D gdzie strony internetowe są interaktywna teksturą.
-- Jak to ma do FlashPlayera?
-- Inżynierowie FlashPlayera może powinni połączyć swoje siły z twórcami Shockwave Playera. Zrobić coś co pozwoli wykorzystać potencjał Shockwawe Playera kompilując do niego odpowiednie pliki SWF, a także oferować jakieś dobre darmowe SDK do tworzenia plików dxr z plików SWF. Mając dostęp do API (obecnie tylko przez Lingo, a przydałoby się poprzez wykorzystanie Actionscript 3). Ostatnio wypuścili wersję Director 11.5 z główną funkcjonalnością ByteArray i jak obsługą efektów muzycznych). Na razie pozostało podziwiać tempo rozwoju PapervisionX Away3D z filtrami HDR (z PixelBendera) i wkracza w to nowy "gracz" Haxe3d (jednak najciekawsze jest wykorzystanie kodu HaXe tej bliblioteki Haxe3d do wygenerowania kodu C++ za pomocą Hxcpp ). Jednakże, próby dokonane przy pomocy Adobe Alchemy wyglądają obiecująco żeby przy ich pomocy stworzyć wydajny silnik 3D. Mógłbym jeszcze zwrócić uwagę na Silverlight 3, który ma już wbudowaną obsługę 2,5D - tak jak FlashPlayer 10, co zapowiada się interesująco pod kątem pisania biliotek wykorzystujących trzeci wymiar (z bibliotekami takimi jak jak Kit3D, Balder3D czy próba opisana w tym artykule - mam wrażenie, że żadna z tych rozwiązań nie odniosła wielkiego sukcesu). Jak chcesz Dusiu porównać możliwości pomiędzy FlashPlayerem a Sliverlightem polecam lekturę tego bloga ShineDraw
-- Co oznacza to starcie dwóch technologii dla zwykłego użytkownika?
-- Chciałoby się powiedzieć tam gdzie dwóch się bije to trzeci korzysta. Możesz wykorzystać bibliotekę do canvas3d o nazwie
Canvas 3D JS Libary (C3DL) zacząć programować aplikacje z trzeciego wymiaru w JavaScripcie.
-- Michałku, jesteś niemożliwy. Wierzysz w to, że nauczę sie tych trzech technologii?
-- Czemu nie? Wszystko zależy od tego czy znajdziesz tyle w sobie wytrwałości, żeby poznać te technologie szczególnie pod kątem wykorzystania 3 wymiaru.

1 komentarz:

ma.ol.su pisze...

Przyznaję, że Dusia ma rację twierdząc: Michałku, jesteś niemożliwy.

Boże, czy to MUSI być aż tak trudne?