FIVe3D: effetti speciali su un cubo! In attesa di Flash 10

Molto probabilmente, quando uscirà la nuova versione di Adobe Flash, librerie 3D a “basso livello” come FIVe3D faranno una brutta fine! Tuttavia, prima di “cestinarle”, ecco un esempio di quello che è possibile realizzare (con l’ultima release 2.1):

Loading Flash Player...

Il codice della demo qui sopra è abbastanza articolato, quindi non lo propongo integralmente online. Inserisco, comunque, alcune parti di codice interessanti.

Aggiornamento: per il sorgente clicca qui

Un contenitore 3D

La prima cosa interessante è la possibilità di creare (come accade anche con Papervision3D e nelle normali operazioni con i MovieClip in Flash) dei contenitori di oggetti 3D. Per realizzare il cubo, infatti, ho creato un oggetto contenitore __cube e a questo ho aggiunto le faccie del cubo!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
** @name        : initCube()
*/

protected function initCube():void {
    __cube                   = new Sprite3D();
    __cube.rotationX         = 40;
    __cube.rotationY         = -40;
    __cube.mouseChildren     = false;
    __cube.filters = [ ( new BlurFilter(2, 2, BitmapFilterQuality.HIGH ) ) ];
    __scene.addChild(__cube);
    createFace(0, 0, -150, 0, 0, 0);
    createFace(150, 0, 0, 0, -90, 0);
    createFace(0, 0, 150, 0, 180, 0);
    createFace(-150, 0, 0, 0, 90, 0);
    createFace(0, -150, 0, -90, 0, 0);
    createFace(0, 150, 0, 90, 0, 0);
}

__cube viene aggiunto alla scena __scene, e all’interno di __cube aggiungo le “facce”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
** @name        : createFace()
*/

protected function createFace(x:Number, y:Number, z:Number,
                              rotationx:Number, rotationy:Number, rotationz:Number):void {
    var face:Sprite3D = new Sprite3D();
    face.graphics3D.beginFill(0xff0000);
    face.graphics3D.drawRect(-150, -150, 300, 300);
    face.graphics3D.endFill();  
    face.x = x;
    face.y = y;
    face.z = z;
    face.rotationX = rotationx;
    face.rotationY = rotationy;
    face.rotationZ = rotationz;
    face.singleSided = true;
    face.flatShaded = true;
    __cube.addChild(face);
}

La scena, ovviamente, è quella classica, con l’aggiunta dell’uso del parametro ambientLightIntensity:

1
2
3
4
5
6
7
8
9
10
11
/*
** @name        : initScene()
*/

protected function initScene():void {
    __scene                         = new Scene3D();
    __scene.x                       = stage.stageWidth / 2;
    __scene.y                       = stage.stageHeight / 2;
    __scene.viewDistance            = 400;
    __scene.ambientLightIntensity   = 1;
    addChild(__scene);
}

3 commenti a: “ ”

  1. 09 lug, 2008 groggit.com:

    FIVe3D: effetti speciali su un cubo! In attesa di Flash 10…

    Molto probabilmente, quando uscirà la nuova versione di Adobe Flash, librerie 3D a “basso livello” come FIVe3D faranno una brutta fine! Tuttavia, prima di “cestinarle”, ecco un esempio di quello che è possibile realizzare (con l’ultima release 2…

  2. 02 ott, 2008 xos:

    Salve a tutti,
    Avete visto questa incredibile 3d engine per flash player ?

    http://www.sophie3d.com

  3. 30 apr, 2012 sebastian:

    Great share – thank you!

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
                   <code></code> // blocco generico
                   [cc_actionscript][/cc_actionscript] // Actionscript
                   [cc_actionscript3][/cc_actionscript3] // Actionscript 3
                   [cc_css][/cc_css] // CSS Style Sheet
                   [cc_html][/cc_html] // HTML
                   [cc_js][/cc_js] // Javascript
                   [cc_objc][/cc_objc] // Objective-C
                   [cc_php][/cc_objc] // PHP
                   [cc_sql][/cc_sql] // SQL