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

venerdì 16 maggio, 2008

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!

Actionscript:
  1. /*
  2. ** @name        : initCube()
  3. */
  4. protected function initCube():void {
  5.     __cube                   = new Sprite3D();
  6.     __cube.rotationX         = 40;
  7.     __cube.rotationY         = -40;
  8.     __cube.mouseChildren     = false;
  9.     __cube.filters = [ ( new BlurFilter(2, 2, BitmapFilterQuality.HIGH ) ) ];
  10.     __scene.addChild(__cube);
  11.     createFace(0, 0, -150, 0, 0, 0);
  12.     createFace(150, 0, 0, 0, -90, 0);
  13.     createFace(0, 0, 150, 0, 180, 0);
  14.     createFace(-150, 0, 0, 0, 90, 0);
  15.     createFace(0, -150, 0, -90, 0, 0);
  16.     createFace(0, 150, 0, 90, 0, 0);
  17. }

__cube viene aggiunto alla scena __scene, e all'interno di __cube aggiungo le "facce":

Actionscript:
  1. /*
  2. ** @name        : createFace()
  3. */
  4. protected function createFace(x:Number, y:Number, z:Number, rotationx:Number, rotationy:Number, rotationz:Number):void {
  5.     var face:Sprite3D = new Sprite3D();
  6.     face.graphics3D.beginFill(0xff0000);
  7.     face.graphics3D.drawRect(-150, -150, 300, 300);
  8.     face.graphics3D.endFill();  
  9.     face.x = x;
  10.     face.y = y;
  11.     face.z = z;
  12.     face.rotationX = rotationx;
  13.     face.rotationY = rotationy;
  14.     face.rotationZ = rotationz;
  15.     face.singleSided = true;
  16.     face.flatShaded = true;
  17.     __cube.addChild(face);
  18. }

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

Actionscript:
  1. /*
  2. ** @name        : initScene()
  3. */
  4. protected function initScene():void {
  5.     __scene                         = new Scene3D();
  6.     __scene.x                       = stage.stageWidth / 2;
  7.     __scene.y                       = stage.stageHeight / 2;
  8.     __scene.viewDistance            = 400;
  9.     __scene.ambientLightIntensity   = 1;
  10.     addChild(__scene);
  11. }

Post correlati

2 commenti a: “FIVe3D: effetti speciali su un cubo! In attesa di Flash 10”

  1. getAvatar 1.0 mercoledì 09 luglio, 2008 alle 10:44
    groggit.com ha detto:

    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. getAvatar 1.0 giovedì 02 ottobre, 2008 alle 20:25
    xos ha detto:

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

    http://www.sophie3d.com

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>

Usa <pre> per racchiudere codice