Za 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).
Żeby skorzystać z którejś z bibliotek, należy najczęściej pobrać jej kod źródłowy, a następnie skompilować go, przy pomocy jednego z wybranych wcześniej środowisk programistycznych. Zazwyczaj, rozwijające się, otwarte projekty, udostępniają najnowszą wersję swojego kodu źródłowego na serwerze SVN – w dalszej części zaprezentowany zostanie przykładowy kod dla aplikacji stworzonej przy pomocy Away3D (link).
Po skonfigurowaniu środowiska, należy utworzyć nowy projekt ActionScript 3.0 i podać ścieżkę do biblioteki Away3D. Kod potrzebny do stworzenia prostej sceny przedstawiającej szkielet trójwymiarowej kuli wymaga napisania kilku linijek. Przede wszystkim należy zaimportować elementy biblioteki Away3D oraz Flash. Następnie ustawiamy scenę i inicjujemy PaperVision3D, z którego wywodzi się biblioteka Away3D. Łączymy nowo utworzoną scenę, kamerę oraz widok, który następnie odpowiednio ustawiamy. W obrębie sceny tworzymy materiał, po czym tworzymy kulę zbudowaną z tego materiału. Umieszczamy kulę na scenie. Ostatnie linijki zawierają polecenie wygenerowania obrazu.
1 package {
2 import away3D.cmeras.Camera3D;
3 import away3D.containers.Scene3D;
4 import away3D.containers.View3D;
5 import away3D.core.base.Vertex;
6 import away3D.materials.WireColorMaterial;
7 import away3D.materials.WireframeMaterial;
8 import away3D.primitives.LineSegment;
9 import away3D.primitives.Sphere;
10 import flash.display.Sprite;
11 import flash.display.StageAlign;
12 import flash.display.StageScaleMode;
13 import flash.events.Event;
14 public class Example001 extends Sprite {
15 private var scene:Scene3D;
16 private var camera:Camera3D;
17 private var view:View3D;
18 public function Example001() {
19 // ustawiamy scene
20 stage.align = StageAlign.TOP_LEFT;
21 stage.scaleMode = StageScaleMode.NO_SCALE;
22 // inicjujemy Papervision3D
23 init3D();
24 // tworzymy obiekt 3D
25 createScene();
26 // inicjujemy Event loop
27 this.addEventListener(Event.ENTER_FRAME, loop);
28 }
29 private function init3D():void {
30 // tworzymy nową scenę
31 scene = new Scene3D();
32 // tworzymy kamerę i ustawiamy jej parametry
33 camera = new Camera3D({zoom:20, focus:30, x:-100, y:-100, z:-500});
34 // tworzymy widok
35 view = new View3D({scene:scene, camera:camera});
36 // centrujemy widok
37 view.x = stage.stageWidth / 2;
38 view.y = stage.stageHeight / 2;
39 addChild(view);
40 }
41 private function createScene():void {
42 // tworzymy materiał kuli
43 var sphereMaterial:WireColorMaterial = new WireColorMaterial(0x000000,
44 {wirecolor:0xFFFFFF});
45 // tworzymy kulę ze zdefiniowanym wcześniej materiałem
46 var sphere:Sphere = new Sphere({material:sphereMaterial, radius:50, segmentsW:10, segmentsH:10});
47 // ustawiamy kulę w przestrzeni (domyślne współrzędne -[0, 0, 0])
48 sphere.x = -100;
49 scene.addChild(sphere)
50 }
51 private function loop(event:Event):void {
52 // generujemy scenę
53 view.render();
54 }
55 }
56 }
Jak widać, proces tworzenia trójwymiarowej sceny przy pomocy zewnętrznych bibliotek we Flashu nie jest tak bezpośredni i prostolinijny, jak przy pomocy wizualnych edytorów. Należy jednak pamiętać, że samo tworzenie i umieszczanie obiektu zamknęło się w czterech linijkach kodu – pozostała otoczka jest powtarzana w każdym nowym projekcie.
Wszystkie powyżej opisane rozwiązania dają sobie doskonale radę, jednak ich trzeci wymiar opiera się w głównej mierze na symulacji wyświetlania grafiki 3D w dwuwymiarowym środowisku Flash, do którego dodano perspektywę i projekcję (link) – dzięki temu płaski obiekt można przedstawić w przestrzeni. Niektórzy twórcy mówią w tym wypadku w 2.5D, albo „pocztówkach w przestrzeni”. Dodatkowo, wszystkie te efekty są generowane programowo, w wyniku czego szczegółowość obiektów i ilość elementów z których składa się scena są ograniczone. Jednak Adobe zapowiedziało, że w nowej wersji Flash Playera wszystko ulegnie – nareszcie dostępna będzie sprzętowa akceleracja grafiki.
- Away3d SVN: http://away3d.googlecode.com/svn/
Komentowanie nieaktywne.