WebGL

WebGL – biblioteki niskiego poziomu

WebGL logoIstnieje grupa engine’ów niskiego poziomu, czyli będących strukturalnie blisko związanych z WebGL. Oferują one rożne narzędzia ułatwiające prace z API – biblioteki matematyczne, interfejs komunikacji z użytkownikiem, obsługę kamery. Nie modyfikują natomiast logiki działania i schematu konstrukcji aplikacji – nie opakowują WebGL w kolejna warstwę abstrakcji. Należą do nich miedzy innymi threedlibrary (link), PhiloGL, SpiderGL (link). Ostatni z nich oferuje ciekawe narzędzie do tworzenia programów cieniujących (shader) online. Kolejna grupa rozwiązań, to silniki generujące trójwymiarowy obraz, jedynie z użyciem JavaScript – bez odwoływania się do WebGL. JS3D (link) wykorzystuje na przykład odpowiednio sformatowany tekst (wielkość znaków, kolor) do symulacji trójwymiarowych obiektów. Pre3D (link) to natomiast pełnym programowym renderer, który do rysowania grafiki 3D wykorzystuje element Canvas2D.

Czytaj dalej »

Raczkujące projekty WebGL

J3D experiment screenshotScena silników opartych na Web3D jest jeszcze młoda, ale wciąż się rozwija i dostarcza coraz to nowych rozwiązań, wśród których znajdują się takie, które odpowiadają rożnym wymaganiom. Jednym z takich specjalistycznych rozwiązań jest GammaJS (link), przeznaczona do tworzenia gier platformowych. Część z bibliotek nie jest jeszcze w pełni dojrzała, jak na przykład J3D (link) lub Jax (link), który obiecuje ze zamieni WebGL w zabawę dla dzieci. Są one wciąż jeszcze w budowie, podobnie jak wszystkie dostępne rozwiązania i prawdopodobnie nadal będą, co najmniej do momentu, kiedy wszystkie wiodące przeglądarki zaimplementować swoja wersje WebGL.

X3DOM

x3DOM logox3DOM (link) jest kolejną inkarnacją VRML – składnia i logika organizacji elementów bazuje na formacie x3D (patrz x3D). Założeniem projektu jest pełną integracja z HTML5 i wykorzystanie WebGL, w ten sposób, aby scena napisana w x3DOM, wstawiona bezpośrednio w źródło strony WWW, mogła być wyświetlona i funkcjonować jako pełnoprawny element modelu DOM. Wiązałoby się to nie tylko z dostępem do sceny przy pomocy języka JavaScript, ale także, na przykład z możliwością nakładania stylów CSS! Docelowo x3DOM ma obsługiwać wszystkie założenia profilu Interchange formatu x3D, aktualnie możliwa jest już obsługa sensorów, dźwięku, wideo oraz tworzenie animacji przy pomocy interpolacji. Na stronie domowej dostępne są tutoriale i przykłady, wciąż też pozostają w mocy wszystkie zasoby związane z VRML/x3D. Społeczność skupiona wokół projektu „lobbuje” za tym, aby x3DOM było dla WebGL tym, czym SVG jest dla elementu Canvas2D – czyli opisowym językiem zintegrowanym z HTML (link).

C3DL

C3DL logoKolejna biblioteka ułatwiającym tworzenie grafiki z użyciem WebGL, jest Canvas 3D JavaScript Library (C3DL) (link). Oferuje zestaw funkcji i klas, do obsługi działań matematycznych, sceny oraz modeli. Ponadto, C3DL obsługuje mechanizm cząstek (particles), umożliwiający wydajne wyświetlanie wielu instancji jednego obiektu – na przykład kropli deszczu lub płatka śniegu Udostępnia także prosty sposób na wybieranie obiektów w trójwymiarowym środowisko, przez użytkownika. Wszystkie możliwości które posiada C3DL są nie tylko zawarte w dokumentacji, ale są też w przystępny sposób opisane w zestawie tutoriali dostępnych na stronie domowej.

Scene JS

Scene JS, xeolabs project logoSceneJS (link) jest popularnym silnikiem opartym na WebGL, który korzysta z metafory grafu (scene graph), żeby logicznie uporządkować elementy wyświetlanej sceny. Obiekty opisane są w formacie JSON (link), który jest natywna częścią języka JavaScript. W grafie sceny, poza samymi modelami, zdefiniować można światło lub animacje, natomiast do tworzenia i modyfikacji obiektów, w ręce programistów oddano odpowiedni interfejs. Wybrana struktura hierarchicznej organizacji danych, pozwala na dużą optymalizacje generowanych trójwymiarowych obiektów, dzięki możliwości wykorzystania tzw. list wyświetlania (display list) (link). Raz skompilowana lista może być ponownie wyświetlona bez potrzeby wykonywania niektórych czasochłonnych obliczeń, co pozwala na wzrost wydajności Przy pomocy SceneJS stworzono ciekawy projekt BioDigitalHumane (link) – trójwymiarowy atlas anatomii człowieka.

GLGE

GLGE, WebGL for the lazy logoBardzo dynamicznie rozwija się biblioteka GLGE (link) która reklamuje się hasłem „WebGL dla leniwych” – istotnie korzystanie z niej znacznie ułatwia zapanowanie nad skomplikowanym procesem wizualnego tworzenia. Nie posiada ona wizualnego edytora, natomiast dostępna jest do niej pełną dokumentacja. GLGE już dziś obsługuje funkcje służące do generowania wysokiej jakości obrazów: odbicia i refrakcje, mapowanie środowiskowe (environmental mapping), czy mgłę. Posiada także pokaźny zestaw narzędzi wspomagających animacje obiektów, miedzy innymi animacje poklatkowa i szkieletowa – a także możliwość importu animacji w formacie COLLADA. GLGE jest intensywnie ulepszana, a wszelkie błędy są na bieżąco korygowane, o czym można się przekonać odwiedzając forum dostępne dla każdego, na stronie domowej projektu.

Three.js

Three.JS tutorial logoPopularnym wyborem twórców zaangażowanych w popularyzacje WebGL jest biblioteka three.js (link). W Internecie podziwiać można wiele dem (atrakcyjnych wizualnie prezentacji) wykonanych przy pomocy tej właśnie technologii. Część z nich znaleźć można na stronie projektu ROME (link), który również prezentuje możliwości drzemiące w WebGL, uwolnione przy pomocy three.js. W projekt zaangażowane jest Google, które prowadzi portal Chrome WebGL Experiment (link), gdzie zamieszczać można ciekawe realizacje wykorzystujące zaawansowany JavaScript i HTML5, w tym technologie WebGL. Three.js posiada dokumentacje, dostępne są także tutoriale przedstawiające podstawy oraz objaśniające jak rozpocząć prace z biblioteka (link). Jednak najbardziej pomocne jest prześledzenie i przeanalizowanie kodu źródłowego wielu dostępnych przykładów.

Copper Licht

Ambiera logoCopperLicht stworzony został przez austriacka firmę Ambiera, która odpowiedzialna jest też za komercyjny wizualny edytor CopperCube, który pierwotnie przeznaczony był dla Flasha. Engine do obsługi interfejsu WebGL sam w sobie jest darmowy i posiada pełną dokumentacje, autorzy proponują jednak wykorzystanie narzędzia CopperCube (z bezpłatnej wersji testowej można korzystać przez 14 dni). Biblioteka zdaje się być przeznaczona przede wszystkim do tworzenia gier – posiada wbudowane mechanizmy wykrywania kolizji oraz symulacje fizyki. Ciekawa opcja jest kompilacja trójwymiarowych modeli do postaci binarnej, co pozwala na zaoszczędzenie ilości przesyłanych danych. CopperLicht jest w stanie obsłużyć wiele innych formatów plików.

Dziura w zabezpieczeniach WebGL

Context Information Security homepage imageCzy WebGL pozwala na kradzież zasobów między domenami? Bezpieczeństwo to istotny aspekt kazdej nowej technologii. WebGL jest w trakcie ciągłego wdrażania i ulepszania. W proces ten, poza Khronos Groupe, mocno zaangażowana jest Mozilla, Google i Apple. Najnowsze wersje ich przeglądarek, a także Opera, już wspierają technologie WebGL (link). Chociaż implementacje te nie są jeszcze wolne od błędów, to są one na bieżąco wychwytywane i poprawiane.

Czytaj dalej »

Co nam da HTML 5, oprócz dostępu do sprzętowego 3D

HTML5 logoInternet jest tworem dynamicznym i jako taki wciąż się rozwija. Jedne standardy zastępują inne, kolejne wersje oprogramowania wypierają poprzednie – wraz z czasem i rozwojem technologii, pojawiają się aplikacje oferujące coraz to nowe, bardziej zaawansowane funkcje. Sieć ewoluuje, a równolegle z tym zmieniają się oczekiwania i wymagania jej użytkowników Rozwija się także HTML, a jego najnowsza wersja – HTML5 jest już w dużej części wyspecyfikowania i zaimplementowana w wiodących przeglądarkach (link).

Czytaj dalej »

WebGL, czyli niskopoziomowe 3D w każdej przeglądarce

WebGL logoWebGL jest biblioteką graficzną bardzo niskiego poziomu – daje bezpośredni dostęp do wierzchołków i wykorzystuje programy cieniujące (tzw. shadery) do manipulacji geometrii (vertex shader) oraz fragmentów (fragment shader), które pisać można w języku GLSL (link). Wszystkie koncepcje z których czerpie WebGL, są już uznanymi standardami, które rozwijały się wraz z ewolucją technologii OpenGL. Oznacza to przede wszystkim, że są to rozwiązania sprawdzone i wielokrotnie wykorzystywane zarówno w wizualnie zaawansowanych grach, jak i programach graficznych. Całe stworzone oprogramowanie, może być niewielkim nakładem środków (tzn. bez potrzeby pisania całego kodu od początku) przeniesione w środowisko przeglądarki, za przykład czego może służyć chociażby konwersja gry Quake 2 (link).

Czytaj dalej »