PV3D CUBE + tweener

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

// Shaded Papervision Cube with Tweener (C) edvardtoth.com
package {
 import flash.display.*;
 import flash.events.*;
 import flash.filters.GradientGlowFilter;
 import org.papervision3d.scenes.*;
 import org.papervision3d.cameras.*;
 import org.papervision3d.view.Viewport3D;
 import org.papervision3d.events.*;
 import org.papervision3d.render.BasicRenderEngine;
 import org.papervision3d.lights.PointLight3D;
 import org.papervision3d.objects.*;
 import org.papervision3d.objects.primitives.Cube;
 import org.papervision3d.materials.*;
 import org.papervision3d.materials.utils.MaterialsList;
 import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
 
 import caurina.transitions.Tweener;
 
 public class Rotatecube  extends MovieClip
 {
  private var effectWidth:Number = 300// because viewport has clipping turned off
  private var effectHeight:Number = 300;
 
  private var glowFilter:GradientGlowFilter = new GradientGlowFilter (0, 45, [0xf0f0f0, 0xf0f0f0, 0xf0f0f0], [0, 0.5, 1], [0x00, 0x50, 0xff], 6, 6, 10, 1, "outer", false);
 
  private var viewport:Viewport3D;
  private var scene3d:Scene3D;
  private var renderer:BasicRenderEngine;
    private var display:DisplayObject3D;
  private var object:Cube;
 
  private var camera:FreeCamera3D;
  private var pointLight:PointLight3D;
 
  private var materials:MaterialsList;
  private var flatShaderMat:FlatShadeMaterial;
 
  private var rotXValue:Number;
  private var rotZValue:Number;
  private var rotYValue:Number;
  private var limit:Number = 1.5;
 
  public function Rotatecube ()
  {
 
   stage.showDefaultContextMenu = false;
   stage.quality = StageQuality.MEDIUM;
   stage.scaleMode = StageScaleMode.NO_SCALE;
   stage.align = StageAlign.TOP_LEFT;
 
   this.filters = [glowFilter];
 
   // material
   flatShaderMat = new FlatShadeMaterial (pointLight, 0x999900, 0x99CC00);
   flatShaderMat.doubleSided = false;
 
   materials = new MaterialsList ();
   materials.addMaterial (flatShaderMat, "all");
 
   // scene
   scene3d = new Scene3D();
   renderer = new BasicRenderEngine();
   camera = new FreeCamera3D(1, 600);
   viewport = new Viewport3D(effectWidth, effectHeight, false, false, false, false);
   display = new DisplayObject3D();
 
   object = new Cube (materials, 300, 300, 300, 1, 1, 1);
 
   // light
   pointLight = new PointLight3D (true, false)// 2nd would be true for collada
   pointLight.x = 200;
   pointLight.y = 0;
   pointLight.z = 500;
 
   display.addChild (object);
   scene3d.addChild (display, "Display");
   scene3d.addChild (pointLight);
 
   addChild (viewport);
 
   rotXValue = randomize (0, 360);
   rotYValue = randomize (0, 360);
   rotZValue = randomize (0, 360);
 
   camera.rotationX = rotXValue;
   camera.rotationY = rotYValue;
   camera.rotationZ = rotZValue;
 
   updateFrame();
 
   recalcValues();
 
  }
 
  private function updateFrame():void
  {
   camera.x=camera.y=camera.z=0;
 
   camera.moveBackward(500);
 
   pointLight.copyPosition (camera);
   renderer.renderScene (scene3d, camera, viewport);
  }
 
  private function recalcValues ():void
  {
   rotXValue = randomize (0, 360);
   rotYValue = randomize (0, 360);
   rotZValue = randomize (0, 360);
 
   Tweener.addTween (camera, {rotationX:rotXValue, rotationY:rotYValue, rotationZ: rotZValue, onUpdate:updateFrame, onComplete:recalcValues, transition:"easeInOutElastic", time:3});
  }
 
  private function randomize(min:Number, max:Number):Number
  {
   return (Math.random()*(max - min) + min);
  }
 
 }
 
}

orignal post


wordpress网站更新了,非常漂亮的界面。同时它也发布了iphone用的版本。并提供2.6版本的pc版本。

4 Responses to “PV3D CUBE + tweener”

  1. Edvard Toth Says:

    Thanks for the pingback, but removing the copyright message was not very appropriate. Also, why is it yellow, and most importantly, why is it so incredibly slow?

  2. plasticthinking Says:

    hah…forgot it and already added now
    no idea…same coding as yours only change color

  3. Edvard Toth Says:

    If you are using an FLA, perhaps the stage framerate is set to something like the default 12? Just a thought…

  4. plasticthinking Says:

    u are right
    my god i even forget to set the framerate
    now it’s 30

Leave a Reply