Üdvözlök mindenkit. Ebben a cikkben, és még ahogy az időm engedi még néhányban, az AWAY3D – nyílt forráskódú 3D-s Flash motorról lessz szó. Már több változata létezik, jelenleg a 4.0.9. a legujjabb. Ennek ellenére a 3.6.0. verziót fogom bemutatni, mert ebből több leirás és példaprogram létezik. A példaprogramokat Flash CS6 ban írtam, a lehető legegyszerűbben. Akinek van kedve bonyolíthatja, külső .as file-okkal.

LetöltésElső dolgunk az AWAY3D letötése, a képre kattintva könnyen követhető a letöltés menete. Ha megvan a letöltés, meg kell mutatnunk a Flash nek, hogy hol keresse az AWAY3D-t.

Kezdjünk egy új Actionscript 3.0 .fla file-t. Ha megvan, akkor File menü->Actionscript settings, itt tudunk külső forrásokat hozzáadni. A Source path fülön kattintsunk a plussz jelre(add new path), azután a mappa ikonra(browse to path) és tallózzuk be a kicsomagolt src mappát, ahogy a képek is mutatják.

Ha megvan, ugyanebben az ablakban érdemes a Warnings Mode checkbox-ból etávolitani a pipát, mert ez duplájára növeli az .swf file elkészítési idejét.

Most hogy minden készen áll,  vessük bele magunkat a 3D-programozásba. Aki dolgozott már 3DS MAX, MAYA, Blender stb. programokkal, annak nem lesznek meglepőek az AWAY3D névterei. Ilyenek a Primitívek, anyagok, kamerák, animáció, renderelés stb.

Fontos dolog amivel tisztában kell lennünk, az elkészített jeleneteinket(amit kiteszünk a 3Dképernyőre) le kell képezni, különben nem fogjuk látni mit csináltunk. Ezt a Viev3D.render() utasítással tehetjük meg. Ha animációt akarunk készíteni, akkor ezt kell valamilyik ismétlődő eseménybe illesztenünk.

A primitívek létrehozásánál nem szükséges anyagokat, méreteket megadnunk ugyanis rendelkeznek alapértelmezett beállításokkal. A cikkben sajnos nincs elég hely arra hogy elmagyarázzam, az összes tulajdonság és metódus leírását, erre egy könyv is kevés lenne. Aki kíváncsi hogy milyen tulajdonságokkal rendelkeznek az egyes osztályok, az API leírás ban utánanézhet.

Akkor be is mutatnám az első példaprogramot, amivel látható hogy nem olyan bonyolult ez a 3D programozás mint amilyennek elsőre látszik. Ez egy copy/paste kód megjegyzésekkel, hogy könnyebben érthető legyen. Az új .fla file-unkban amit az előbb már előkészítettünk, jelöljük ki az első képkockát az idővonalon, majd válasszuk a Window-> Actions menüpontot, a megjelenő ablakba másoljuk be a kódot, aztán mentsük valamilyen néven az .fla file-t. Majd Control->Test movie->in Flash proffesional.

import away3d.containers.*;
import flash.display.*;
import flash.events.*;
import away3d.materials.*;
import away3d.primitives.*;
[SWF(width="640", height="480")]

var view : View3D = new View3D(); //3D felület
view.x = stage.stageWidth / 2; //koordinátarendszer középpontja
view.y = stage.stageHeight / 2;
var mat1 :WireframeMaterial = new WireframeMaterial(0x000000); //csak drótváz
var mat2 : WireColorMaterial = new WireColorMaterial(); //drótváz színes lapokkal
mat2.color = 0xFF0000; //lapok színe (piros(hex))
mat2.wireColor= 0x000000; // drótváz színe
mat2.alpha=0.2; // lapok átlátszósága

addChild(view); //hozzádjuk a stage-hez a 3D felületet
// ha animációt akarunk, akkor enterframe eseményt,
// vagy valami mást kell használnunk
addEventListener(Event.ENTER_FRAME, _onEnterFrame);

var gomb : WireSphere = new WireSphere(); //Új drótváz gömb
gomb.radius = 100;
gomb.segmentsW = 24;
gomb.segmentsH = 12;
gomb.x=-100;
gomb.material = mat1; //nem fontos, alapértelmezett anyag is van
view.scene.addChild(gomb); // a gömböt hozzáadjuk a 3D felület jelenetéhez

var kocka : Cube = new Cube(); //Új kocka
kocka.material = mat2;
kocka.x=100;
kocka.bothsides=true; //hátsó oldalak is látszanak
kocka.scale(2); //Nagyítás
view.scene.addChild(kocka);
function _onEnterFrame(ev : Event) : void
{
view.render(); // elkészítjük a jelenetet
gomb.yaw(1); //forgatás Y tengelyen 1 fokkal
gomb.pitch(1); // forgatás X tengelyen 1 fokkal
kocka.yaw(1);
}

Az eredménynek így kell kinéznie:

A tartalom megtekintéséhez Flash Player-re van szükség.



Szólj hozzá a posthoz