Hi

Is is possible to get the twist modifier to do a twist to a max of 180 deg
on an axis on a plane, to achieve a twist flip effect? Or should I be
looking at doing this a different way?

Thanks

Darcey




On 24 November 2010 16:33, jens lofberg <[email protected]> wrote:

>  Happy to help... like your articles.
>
> jens
>
> Le 24/11/2010 17:05, Darcey Lloyd a écrit :
>
> Never mind my last response... Was me being dumb lol
>
>  I re-created the project as a pure AS3 Project (no mxml) and I get no
> errors for type conversion and input params on new Twist(). And no error on
> addModifier(twist). Then I realised I called the project Twist --- lol name
> conflict. ( self slap lol ).
>
>
>  I will post up articles on my site over the next few days with examples
> of all the AS3DMod modifiers in use.
>
>  Thanks.
>
>  Darcey
>
>
>
>  Here is full working code:
>
>  package
> {
>  import away3d.cameras.HoverCamera3D;
>  import away3d.containers.Scene3D;
>  import away3d.containers.View3D;
>  import away3d.core.render.BasicRenderer;
>  import away3d.core.utils.Cast;
>  import away3d.debug.AwayStats;
>  import away3d.materials.BitmapMaterial;
>  import away3d.primitives.Plane;
>  import away3d.primitives.Trident;
>   import com.as3dmod.ModifierStack;
>  import com.as3dmod.core.Vector3;
>  import com.as3dmod.modifiers.Bend;
>  import com.as3dmod.modifiers.Twist;
>  import com.as3dmod.plugins.away3d.LibraryAway3d;
>  import com.as3dmod.util.Phase;
>   import flash.display.Sprite;
>  import flash.display.StageAlign;
>  import flash.display.StageScaleMode;
>  import flash.events.Event;
>  import flash.events.MouseEvent;
>  import flash.geom.Vector3D;
>
>
>  [SWF(frameRate="31", backgroundColor="#FFFFFF")]
>  //[SWF(width="800", height="600", frameRate="31"}]
>  //
> ------------------------------------------------------------------------------------------------
>  public class AS3TwistTest extends Sprite
>  {
>  //
> ------------------------------------------------------------------------------------------------
>  // Embedded asssets
>  /*
>  [Embed(source='assets/front.jpg')]
>  private var page1aAsset:Class;
>   [Embed(source='assets/back.jpg')]
>  private var page1bAsset:Class;
>  */
>  //
> ------------------------------------------------------------------------------------------------
>    //
> ------------------------------------------------------------------------------------------------
>  // Var defs
>  //
> ------------------------------------------------------------------------------------------------
>  private var away3DContainer:Sprite;
>  private var away3DStatsContainer:Sprite;
>   // Var ini
>  private var scene:Scene3D;
>  private var camera:HoverCamera3D;
>  private var view:View3D;
>  private var renderer:BasicRenderer;
>   private var bMove:Boolean = false;
>  private var lastPanAngle:Number;
>  private var lastTiltAngle:Number;
>  private var lastMouseX:Number;
>  private var lastMouseY:Number;
>   // Primitives
>  private var plane:Plane;
>  private var nSegments:Number = 10;
>   // Materials
>  private var bmat1:BitmapMaterial;
>  private var bmat2:BitmapMaterial;
>   // Vars AS3DMod
>  private var bend:Bend;
>  private var twist:Twist;
>  private var twistPhase:Phase;
>  private var modStack:ModifierStack;
>  //
> ------------------------------------------------------------------------------------------------
>    //
> ------------------------------------------------------------------------------------------------
>  public function AS3TwistTest()
>  {
>  // stage
>  stage.align = StageAlign.TOP_LEFT;
>  stage.scaleMode = StageScaleMode.NO_SCALE;
>   // Containers
>  away3DContainer = new Sprite();
>  away3DStatsContainer = new Sprite();
>  addChild(away3DContainer);
>  addChild(away3DStatsContainer);
>   // Setup Away3D
>  camera = new HoverCamera3D();
>  renderer = new BasicRenderer();
>   scene = new Scene3D();
>  view = new View3D();
>  view.scene = scene;
>  view.camera = camera;
>  view.renderer = renderer;
>  view.x = stage.stageWidth / 2;
>  view.y = stage.stageHeight / 2;
>   // Setup away3d stats (appears to slow the cpu)
>  var awaystats:AwayStats = new AwayStats(view);
>  away3DStatsContainer.addChild(awaystats);
>   var tr:Trident = new Trident(500,true);
>  scene.addChild(tr);
>   // Setup camera
>  camera.minTiltAngle = -80;
>  camera.maxTiltAngle = 80;
>  camera.panAngle = 150;
>  camera.tiltAngle = 20;
>  camera.zoom = 5;
>   // Add Away3D to its container UIComponent
>  away3DContainer.addChild(view);
>   // Resize handler
>  this.addEventListener(Event.RESIZE,handleBrowserResize);
>  handleBrowserResize();
>   // Enter frame handler (make things move)
>  stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
>  stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
>  stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
>    // Setup materials
>  //bmat1 = new BitmapMaterial(  Cast.bitmap( new page1aAsset() )  );
>  //bmat2 = new BitmapMaterial(  Cast.bitmap( new page1bAsset() )  );
>   // generate
>  generateScene();
>  }
>  //
> ------------------------------------------------------------------------------------------------
>      //
> ------------------------------------------------------------------------------------------------
>  private function generateScene():void
>  {
>  //plane = new
> Plane({segmentsW:10,segmentsH:10,width:800,height:800,material:new
> WireframeMaterial()});
>  plane = new Plane();
>  plane.segmentsW = plane.segmentsH = nSegments;
>  plane.width = 800;
>  plane.height = 800;
>  plane.bothsides = true;
>  //plane.material = bmat1;
>  //plane.back = bmat2;
>  scene.addChild(plane);
>   // AS3DMod Start
>  modStack = new ModifierStack(new LibraryAway3d(), plane);
>   twist = new Twist(Math.PI/2);
>  twist.vector = new Vector3(1,0,0);
>  twistPhase = new Phase();
>  modStack.addModifier(twist);
>  }
>  //
> ------------------------------------------------------------------------------------------------
>
>     //
> ------------------------------------------------------------------------------------------------
>  private function onEnterFrame(event:Event):void
>  {
>  // AS3DMod - Animate twist and apply
>  twistPhase.value += 0.05;
>  twist.angle = Math.PI / 4 * twistPhase.phasedValue;
>  trace("twist.angle = " + twist.angle); // Traces anglle from -0.7 to +0.7
>  this.modStack.apply();
>     // Camera movement
>  if (bMove) {
>  camera.panAngle = 0.3 * (stage.mouseX - lastMouseX) + lastPanAngle;
>  camera.tiltAngle = 0.3 * (stage.mouseY - lastMouseY) + lastTiltAngle;
>  }
>   // Hover camera
>  camera.hover();
>   // Render
>  view.render();
>  }
>  //
> ------------------------------------------------------------------------------------------------
>        //
> ------------------------------------------------------------------------------------------------
>  private function mouseDownHandler(event:MouseEvent):void
>  {
>  lastPanAngle = camera.panAngle;
>  lastTiltAngle = camera.tiltAngle;
>  lastMouseX = stage.mouseX;
>  lastMouseY = stage.mouseY;
>  bMove = true;
>   stage.addEventListener(Event.MOUSE_LEAVE, onStageMouseLeave);
>  }
>  //
> ------------------------------------------------------------------------------------------------
>  //
> ------------------------------------------------------------------------------------------------
>  private function mouseUpHandler(event:MouseEvent):void
>  {
>  bMove = false;
>  stage.removeEventListener(Event.MOUSE_LEAVE, onStageMouseLeave);
>  }
>  //
> ------------------------------------------------------------------------------------------------
>  //
> ------------------------------------------------------------------------------------------------
>  private function onStageMouseLeave(event:Event):void
>  {
>  bMove = false;
>  stage.removeEventListener(Event.MOUSE_LEAVE, onStageMouseLeave);
>  }
>  //
> ------------------------------------------------------------------------------------------------
>      //
> ------------------------------------------------------------------------------------------------
>  // Browser resize handler (simply adjust view3d center x:0 y:0 at browser
> 1/2 width and height to keep things in the middle
>  private function handleBrowserResize(e:Event=null):void
>  {
>  this.view.x = stage.stageWidth/2;
>  this.view.y = stage.stageHeight/2;
>  }
>  //
> ------------------------------------------------------------------------------------------------
>       }
>  }
>
>
>

Reply via email to