-->

Papervision3D, partie I

|

Papervision3D – Great White (2.0)
– Site »
– Téléchargement »
– Documentation »
– Tutorial »

Papervision3D – GreatWhite se situe, au niveau complexité de mise en place, entre Away3D et Alternativa3D. On retrouve, comme pour Away3D, une scène 3D (Scene3D), contenant les objets 3D, une camera (Camera3D), et une vue (Viewport3D). La différence avec Away3D se faisant au niveau du rendu, PV3D utilise un moteur de rendu (BasicRenderEngine).

Pour faire le rendu, il faut appeler la fonction :
- BasicRenderEngine.renderScene(Scene3D, Camera3D, Viewport3D);

Pour l’installation de papervision, cliquer ici ».
Je vous conseille fortement d’avoir une copie de travail du dossier papervision pour le projet sur lequel vous travaillez, surtout si vous travaillez en équipe, afin d’être sur d’avoir la même version de PV3D, et d’éviter les mises à jours automatiques, qui pourraient créer des bugs…

Voici une utilisation du moteur :

package {

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

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

   import org.papervision3d.cameras.Camera3D;
   import org.papervision3d.render.BasicRenderEngine;
   import org.papervision3d.scenes.Scene3D;
   import org.papervision3d.view.Viewport3D;

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

   public class Papervision_001 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var viewport:Viewport3D;
      private var renderer:BasicRenderEngine;

      public function Papervision_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();
         camera.x = 0;
         camera.y = 0
         camera.z = -300;
         camera.focus = 50;
         camera.zoom = 10;

         viewport = new Viewport3D(600, 400);
         addChild( viewport );

         renderer = new BasicRenderEngine();
      }

      private function onEnterFrame(event:Event):void {
         renderer.renderScene(scene, camera, viewport);
      }

   }

}

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/Papervision3D/002/Papervision_002.swf" height="400" width="600" /]

package {

   /**
   *
   * Auteur: Vincent Helwig
   * Date: 14.10.2008
   * Website: http://www.tsoin.com
   * Description: Papervision3D – 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 org.papervision3d.cameras.Camera3D;
   import org.papervision3d.materials.WireframeMaterial;
   import org.papervision3d.materials.utils.MaterialsList;
   import org.papervision3d.objects.primitives.Cube;
   import org.papervision3d.render.BasicRenderEngine;
   import org.papervision3d.scenes.Scene3D;
   import org.papervision3d.view.Viewport3D;

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

   public class Papervision_002 extends Sprite {

      private var scene:Scene3D;
      private var camera:Camera3D;
      private var viewport:Viewport3D;
      private var renderer:BasicRenderEngine;

      private var cube:Cube;

      public function Papervision_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();
         camera.x = 0;
         camera.y = 0
         camera.z = -300;
         camera.focus = 50;
         camera.zoom = 10;

         viewport = new Viewport3D(600, 400);
         addChild( viewport );

         renderer = new BasicRenderEngine();

         var ml:MaterialsList = new MaterialsList({all: new WireframeMaterial( 0x00FF00, 1 )});
         cube = new Cube(ml, 100, 100, 100, 3, 3, 3);
         scene.addChild( cube );
      }

      private function onEnterFrame(event:Event):void {
         renderer.renderScene(scene, camera, viewport);
      }

      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 »

Laisser un commentaire

Champs Requis *.

*


Seo