Stage 3D aka Molehill – początki rewolucyjnej technologii 3D we Flashu

Screenshot z gry MAX racerKolejna wersja Flasha, znana pod kryptonimem Molehill (ang. kopiec kreta), oddaje twórcom do dyspozycji zestaw niskopoziomowych interfejsów programistycznych, które umożliwią Flash Playerowi wykorzystanie mocy drzemiącej w wyspecjalizowanych układach graficznych. Obliczenia, które były dotąd wykonywane programowo przez główny procesor (CPU), przeniesione zostaną do graficznej jednostki przetwarzania (GPU), w którą wyposażony jest każdy nowy komputer. Molehill opiera się na interfejsie DirectX na platformie Windows, na OpenGL w systemach typu Linux i Mac oraz na OpenGL ES w urządzeniach przenośnych. Dostępny jest również programowy renderer SwiftShader, w wypadku gdyby kompatybilny sprzęt nie został znaleziony.

Czytaj dalej »

Ciekawe projekty Flash 3D

Grafika pochadzaca z eksperymentalnego projektu 3D Pixel FunOprócz projektów z głównego nurtu, w sieci znaleźć można aplikacje mniej wszechstronne, napisane hobbystycznie, które twórcy udostępniają, chociaż nie zapewniają do nich dokumentacji. Wiele z nich jest jednak wartych uwagi, że względu na ciekawy pomysł, jak na przykład 3D Pixel Fun (link). Można w nim zbudować trójwymiarowy świat złożony z sześcianów (na wzór pikseli w 2D). Autor, zainspirowany projektem Q-BLOCK (link) stworzył nawet konwerter modeli z formatu Collada do swojego „blokowego” świata. Z kolei silnik FFilmation (link) przeznaczony jest do prostego tworzenia gier – umożliwia szybkie tworzenie izometrycznych scen, których struktura zapisana jest w pliku XML, wspomaga animację postaci, detekcję kolizji i oświetlenie.

Sophie 3D

Przykladowy obraz z galerii Sophie 3DPoza opisanymi powyżej technologiami, istnieją na rynku rozwiązania które kosztem uniwersalności, skupiają się na konkretnym zastosowaniu. Doskonały przykładem może być Sophie3D – jest to komponent, który pozwala w szybki sposób opublikować trójwymiarowy model zapisany w formacie Collada lub Wavefront Obj i dodać do niego prostą nawigację (link). W zamian za poświęcenie pewnych aspektów interaktywności i animacji, Sophie 3D oferuje bardzo dokładny i szybki rendering obiektów.

 

Copper Cube

Obraz z galerii Copper Cube 2Wyjątkiem wśród przedstawianych tutaj technologii 3D we Flashu jest program CopperCube austriackiej firmy Ambiera (link). Jest to kompletne, wizualne środowisko do edycji trójwymiarowych scen, w którym można zarówno stworzyć prostą wizualizację produktu, jak i zaawansowaną symulację – a wszystko to bez potrzeby pisania nawet linijki kodu (chociaż istnieje też możliwość kontrolowania elementów sceny za pomocą skryptów). CopperCube oferuje kilka ciekawych funkcji przydanych szczególnie przy tworzeniu gier, jak na przykład wbudowane modele zachowań („sztuczna inteligencja”) które można przypisać postaciom. Cały pakiet jest naturalnie płatny, że strony producenta pobrać można 14-dniową wersję próbną.

FIVe3D

Logo Five 3DFIVe3D podchodzi do zagadnienia symulacji 3D we Flashu w nieco odmienny technologicznie sposób – zamiast transformować bitmapy, tak jak poprzednie opisane silniki – wykorzystuje operacje na wektorach (link). Dzięki temu, operacje są szybsze, a sama biblioteka zajmuje bardzo niewiele. Jedną z zalet jest obsługa fontów opartych na wektorach. Pozwala to na uniknięcie efektu „pikselozy” i wyświetlanie ostrych krawędzi liter nawet przy dużym powiększeniu.

 

Flare 3D

Flare 3D logoFlare3D to kolejny, zaawansowany silnik, który nie jest otwartym oprogramowaniem (link). Biblioteka jest dostarczana wraz z bardzo dobrą dokumentacją i zestawem tutoriali, importerem plików 3Dstudio max oraz wizualnym narzędziem do edytowania sceny. Wydajność generowania grafiki jest wysoka, chociaż nie odbiega od innych wiodących projektów opartych na Flash 10 (link). Cały zestaw można wykorzystać za darmo, dla niekomercyjnego użytkownika. W przeciwnym wypadku, za możliwość tworzenia we Flare3D trzeba uiszczać coroczną opłatę (link).

 

Alternativa 3D

Alternativa 3D logoCzwartym z dużych graczy na rynku bibliotek do obsługi 3D we Flashu jest Alternativa3D (link). Nie jest to oprogramowanie otwarte i do niedawna za jego wykorzystanie trzeba było płacić – obecnie jednak rosyjskie studio odpowiedzialne za stworzenie Alternativa Platform, umożliwiło użycie technologii za darmo nawet w komercyjnych projektach (jedynym warunkiem jest umieszczenie odnośnika do ich strony). Projekt jest intensywnie rozwijany, obsługuje Flash 10 i zdaje się zmierzać w kierunku silnika do tworzenia wieloosobowych gier online. Zbiera bardzo pozytywne recenzje, szczególnie za wydajność i szybkość działania (link)

Away 3D

Away3D logoJednym z najpopularniejszych obecnie projektów poświęconych 3D we Flashu jest Away3D (link). Silnik ten wywodzi się z PaperVision3D, jest jednak wciąż intensywnie rozwijany i udoskonalany. Wykorzystuje możliwości obróbki 3D, które daje Flash 10, co zapewnia mu znacznie lepszą wydajność, posiada także bardzo lekką wersję Away3D Lite. Atutem Away3D jest wizualny edytor stworzony w zintegrowanym środowisku wykonawczym Adobe (AIR – Adobe Integrated Runtime). Umożliwia on stworzenie interaktywnej trójwymiarowej aplikacji działającej we Flash Playerze, bez konieczności pisania kodu (link).

 

Sandy 3D

Sandy 3D logoZanim powstało PV3D, w 2005 roku, obsługę 3D we Flashu oferował silnik Sandy3D. Projekt ten miał swoje wzloty i upadki, nigdy jednak nie zdobył takiej popularności jak PaperVision (link). Sandy3D, poza współpracą z ActionScript w wersji 2.0 oraz 3.0 obsługuje także uniwersalny język programowania zorientowany na tworzenie aplikacji przeznaczonych do internetu HaXe. Dużą zaletą jest to, że dostępna jest pełna dokumentacja oraz cały zestaw szkoleń zebranych na stronie domowej projektu (link). Obecnie biblioteka nie jest już rozwijana, a jej tworzenie zatrzymało się również na wersji Flash 10 (chociaż nie wykorzystuje wszystkich jej możliwości). Podobny los spotkał WireEngine3D, które chociaż bardzo dobrze radziło sobie z poprawnym wyświetlaniem tekstur na przecinających się płaszczyznach (wiele początkowych silników miało problemy z zachowaniem poprawnej perspektywy, podczas generowania tekstur na obiektach), nie jest już kontynuowany, a prace nad nim zostały przerwane jeszcze przed nastaniem Flash 10.

Papervision 3D

Papervision 3D logoIstnieje obecnie kilka rozwiązań pozwalających na otrzymanie 3D we Flashu. Najpopularniejszy i uważany za najszybszy, był PaperVision3D (link). Można naturalnie spierać, który rozwiązanie jest lepszy do jakich zastosowań – wiele takich dyskusji znaleźć można do dziś na forach poświęconych programowaniu w AS – jednak do pewnego czasu, to właśnie PaperVision3D wiódł prym wśród silników przeznaczonych dla środowiska Flash w wersji 8 i 9 (link). Niestety, w wyniku pewnych niezgodności odnośnie przyszłości projektu PV3D, zespól podzielił się i rozpoczęto pracę nad dwoma niezależnymi nowymi wersjami, które miałyby wykorzystywać możliwości które daje Flash 10 (link). PaperVision pozostaje kompletnym i wciąż bardzo dobrym interfejsem programistycznym, do którego dostępnych jest wiele tutoriali. Jednak nie jest obecnie rozwijany i wszystko wskazuje na to, że nowa wersja nie ujrzy już światła dziennego (link).

Pierwsze kroki w 3D – przykładowy projekt ActionScript, z użyciem Away3D

Flex logoZa wyjątkiem CopperCube oraz narzędzia PreFab do silnika Away3D, wszystkie przedstawione rozwiązania były mniej lub bardziej skomplikowanymi bibliotekami napisanymi w ActionScript. Aby stworzyć za ich pomocą trójwymiarowe sceny i opublikować je jako obiekt, który może być odtwarzany przez Flash Player, musimy użyć odpowiednio skonfigurowanego środowiska programistycznego (IDE). Najpopularniejsze z nich to komercyjny Adobe Flash Builder (link) (znany wcześniej jako Flex Builder) oraz FlashDevelop (link). Każde z nich ma swoje wady i zalety (link), pierwsze z nich jest oparte o Eclipse – może korzystać z wszelkich rozszerzeń stworzonych dla tego środowiska, posiada też dużą społeczność, co pozwala na łatwiejsze uzyskanie pomocy na wszelkiego rodzaju forach. Flash Builder jest też pomocny jeśli korzystamy z języka Flex, gdyż zawiera wizualny edytor MXML. FlashDevelop jest natomiast dużo lżejszy i przejrzystszy, a przede wszystkim jest oprogramowaniem otwartym (Builder jest natomiast bezpłatny dla celów edukacyjnych, oraz dla bezrobotnych twórców). Do tworzenia aplikacji Flashowych we FlashDevelop, należy dodatkowo pobrać udostępniony przez Adobe zestaw narzędzi programistycznych Flex SDK (link).

Czytaj dalej »

ActionScript 2.0 – 3D pierwszej generacji we Flashu

Ikona pliku ActionScriptWraz z nastaniem ActionScript 2.0, jego kontrola nad generowaniem grafiki stała się na tyle duże, że zaczęły powstawać niezależne biblioteki programistyczne, które pozwalały na symulacje dynamicznej trójwymiarowej grafiki przy pomocy technologii Flash. Polegało to na tym, że obliczenia matematyczne i geometryczne wykonywane były przy pomocy języka ActionScript, a następnie ich wyniki stosowane były do generowania dwuwymiarowych obiektów, które mogły być wyświetlane przez Flash Player. Rozwiązanie to jest dosyć powolne i zużywa ogromna ilość zasobów procesora (link).

Czytaj dalej »

Historia Flasha, czyli Super Paint, Macromedia i Jonathan Gay

Screenshot z programu Super PaintPrekursorem formatu który znamy dzisiaj, jest prosty edytor graficzny, napisany przez ojca Flasha Jonathana Gay’a, w szkole średniej – Super Paint. Po ukończeniu studiów, Gay pracuje dla Silicon Beach Software, gdzie tworzy udoskonalony edytor Intellidraw, a następnie zakładał swoja własną firmę FutureWave Software (link). Tworzy ona oprogramowanie pozwalające na rysowanie na komputerze z użyciem „elektrycznego pióra” – technologii stworzonej i promowanej przez firmę GO, która jednak ostatecznie upada. Z powodu pozytywnego odzewu użytkowników, program SmartSketch nie znika z rynku razem ze zniknięciem platformy na której można go używać, zamiast tego przeniesiony zostaje na system Windows oraz Macintosh. Jest polowa roku 1995 i na świecie popularny staje się nowy koncept o nazwie Internet. SmartSketch ewoluuje natomiast w narzędzie do tworzenia animacji, które mogą być odtwarzane na stronach World Wide Web przy pomocy playera opartego na technologii Java, a następnie jako wtyczka do przeglądarki Netscape.

Czytaj dalej »

Adobe Flash – ogólnodostępny standard grafiki wektorowej

Ikona Adobe Flash Jednym z głównych problemów z jakimi zmagają się technologie wyświetlania grafiki 3D na stronach www, jest konieczności instalowania dodatkowego oprogramowania, najczęściej w formie wtyczki. Jak dotąd, żadna z przeglądarek nie obsługuje domyślnie (w sensie – bez potrzeby instalowania rozszerzeń) powszechnej technologii umożliwiającej umieszczanie dynamicznych trójwymiarowych obrazów na wyświetlanych witrynach. Użytkownicy niechętnie instalują nowe oprogramowanie pobrane z sieci. Powodem może być obawa o bezpieczeństwo swojego komputera i strach przed wirusami komputerowymi oraz innym niebezpiecznym programami. Czynnikiem zniechęcającym może być wielkość pluginu, który trzeba pobrać z sieci, a co za tym idzie czas na to potrzebny. Również czas instalacji rozszerzenia, a niejednokrotnie konieczności ponownego uruchomienia przeglądarki sprawiają, że zadajemy sobie pytanie o sens instalacji wtyczki, która użyjemy do wyświetlenia jednej trójwymiarowej animacji…

Czytaj dalej »

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.