Sandy3D, partie I

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

Premier moteur 3D à pointer sa camera sur le web, Sandy3D est aussi un des moins actifs ces derniers mois, à l’heure où les autres moteurs 3D continuent leur chemin… La mise en place du moteur Sandy3D est aussi simple que celui de Away3D, mais alors que tous les autres moteurs ont opté pour une classe de vue logiquement appelé (Papervision3D: Viewport3D, Away3D: View3D, Alternativa3D: View), Sandy3D définit un Group…


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

Voici une utilisation du moteur :

package {

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

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

   import sandy.core.Scene3D;
   import sandy.core.scenegraph.Camera3D;
   import sandy.core.scenegraph.Group;

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

   public class Sandy3D_001 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var group:Group;
      private var _timer:Number = 0;
      private var _diff:Number = 0;
   vprivate var _tempsMoyen:Number = 0;

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

      private function init(e: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 {

         camera = new Camera3D(600, 400);
         camera.z = -300;

         group = new Group(« Group »);

         scene = new Scene3D(« scene », this, camera, group);
      }

      private function onEnterFrame( event :Event ):void {
         scene.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/Sandy3D/002/Sandy3D_002.swf" height="400" width="600" /]

package {

   /**
   *
   * Auteur: Vincent Helwig

   * Date: 14.10.2008
   * Website: http://www.tsoin.com
   * Description: Sandy3D – Création d’un 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;

   import sandy.core.Scene3D;
   import sandy.core.scenegraph.Camera3D;
   import sandy.core.scenegraph.Group;
   import sandy.materials.Appearance;
   import sandy.materials.ColorMaterial;
   import sandy.materials.Material;
   import sandy.materials.attributes.LineAttributes;
   import sandy.materials.attributes.MaterialAttributes;
   import sandy.primitive.Box;

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

   public class Sandy3D_002 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var group:Group;
      private var box:Box;
      private var _timer:Number = 0;
      private var _diff:Number = 0;
      private var _tempsMoyen:Number = 0;

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

      private function init(e: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 {

         camera = new Camera3D(600, 400);
         camera.z = -300;

         group = new Group(« Group »);
         box = new Box(« box », 100, 100, 100);
         var skin:MaterialAttributes = new MaterialAttributes(new LineAttributes(1, 0×789789) );
         var material03:Material = new ColorMaterial( 0×000000, 1, skin )
         box.appearance = new Appearance( material03 );
         group.addChild( box );

         scene = new Scene3D(« scene », this, camera, group);
      }

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

      private function onMouseMove(event:Event):void {
         box.rotateX = ( stage.mouseY * 180 ) / stage.stageHeight – 90;
         box.rotateY = ( 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