Away3D, partie I

Away3D
– Site »
– Téléchargement »
– Documentation »
– Tutorial »

Concurrent direct de Papervision3D, Away3D était, avant les dernières versions de PV3D, plus simple à mettre en place, et cela reste le cas, même si PV3D a pas mal fait évoluer les choses…
La mécanique reste la même : une Scene3D, une Camera3D, une View3D et… c’est tout pas de CameraController, ni de BasicRenderEngine…. on s’arrête là, rien de plus simple !

Pour faire le rendu, il faut appeler la fonction :
- View3D.render();

Voici une utilisation du moteur :

package {

   /**
   *
   * Auteur: Vincent Helwig
   * Date: 30.09.2008
   * Website: http://www.tsoin.com
   * Description: Away3D – Intégration du moteur
   *
   **/

   import away3d.cameras.Camera3D;
   import away3d.containers.Scene3D;
   import away3d.containers.View3D;

   import flash.display.Sprite;
   import flash.display.StageAlign;
   import flash.display.StageScaleMode;
   import flash.events.Event;

   [SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]

   public class Away3D_001 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var view:View3D;

      public function Away3D_001() {
         addEventListener(Event.ADDED_TO_STAGE, init);
      }

      private function init(event:Event):void {
         removeEventListener(Event.ADDED_TO_STAGE, init);
         stage.scaleMode = StageScaleMode.NO_SCALE;
         stage.align = StageAlign.TOP_LEFT;

         setupScene();

         stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
      }

      private function setupScene():void {

         scene = new Scene3D();
         camera = new Camera3D({zoom:10, focus:50, x:0, y:0, z:-300});

         view = new View3D({scene:scene, camera:camera});
         addChild(view);

      }

      private function onEnterFrame(event:Event):void {
         view.render();
      }

   }

}

Voir & Télécharger les sources »

Voyons maintenant l’ajout d’un cube, vous remarquerez l’ajout du package net.hires.utils.Stats, afin de visualiser les performances de l’animation :

[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Away3D/002/Away3D_002.swf" height="400" width="600" /]

package {

   /**
   *
   * Auteur: Vincent Helwig
   * Date: 30.09.2008
   * Website: http://www.tsoin.com
   * Description: Away3D – Création d’un cube
   *
   **/

   import away3d.cameras.Camera3D;
   import away3d.containers.ObjectContainer3D;
   import away3d.containers.Scene3D;
   import away3d.containers.View3D;
   import away3d.materials.WireColorMaterial;
   import away3d.primitives.Cube;

   import flash.display.Sprite;
   import flash.display.StageAlign;
   import flash.display.StageScaleMode;
   import flash.events.Event;
   import flash.events.MouseEvent;

   import net.hires.utils.Stats;

   [SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]

   public class Away3D_002 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var view:View3D;
      private var objectContainer:ObjectContainer3D;
      private var cube:Cube;

      public function Away3D_002() {
         addEventListener(Event.ADDED_TO_STAGE, init);
         var __stats:Stats = new Stats();
         __stats.width = 75;
         __stats.x = 525;
         addChild( __stats );
      }

      private function init(event:Event):void {
         removeEventListener(Event.ADDED_TO_STAGE, init);
         stage.scaleMode = StageScaleMode.NO_SCALE;
         stage.align = StageAlign.TOP_LEFT;

         setupScene();

         stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
         stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
      }

      private function setupScene():void {

         scene = new Scene3D();
         camera = new Camera3D({zoom: 10, focus: 50, x:0, y:0, z:-300});

         view = new View3D({scene:scene, camera:camera});
         view.x = stage.stageWidth / 2;
         view.y = stage.stageHeight / 2;
         addChild(view);

         cube = new Cube({ width:100, height: 100});
         cube.material = new WireColorMaterial(0×000000, {wirecolor:0×789789});
         scene.addChild( cube );

      }

      private function onEnterFrame(event:Event):void {
         view.render();
      }

      private function onMouseMove(event:Event):void {
         cube.rotationX = ( stage.mouseY * 180 ) / stage.stageHeight – 90;
         cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth – 90;
      }

   }

}

Voir & Télécharger les sources »

Partager :
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Laisser un commentaire