AS3Dmod之入门篇---Bend

 
看起来像不像翅膀一样扇。
这里引进介绍Bend也是很实用的一个3D修饰。
Bend(f:Number = 0, o:Number = .5, a:Number = 0)
它有3个参数第一个参数一般默认为0;bend.force+=.01即初始值从0开始递增,
第二个参数扭曲幅度,0.5即沿物体一半处扭曲。
最后一个参数是扭曲的起始弧度;弧度=角度/180*Math.PI;
这一节中同时会介绍phase,个人认为它是个辅助扭曲运动的东西,
phase.value+=.05;会自行在正负值之间相当于sin;
当然如果你不用phase 也可以用tweener来实现介于-1~1之间的运动。
 private function tweenA():void {
        Tweener.addTween(bend, {force:.5, time:.5, transition:"easeInOutElastic", onComplete:tweenB});
  }              
private function tweenB():void {
        Tweener.addTween(bend, {force:-.5, time:.5, transition:"easeInOutElastic", onComplete:tweenA});
  }
下面给出文档类:
 

  1. package
  2. {
  3. import com.as3dmod.ModifierStack;
  4. import com.as3dmod.modifiers.Bend;
  5. import com.as3dmod.plugins.pv3d.LibraryPv3d;
  6. import com.as3dmod.util.Phase;
  7.  
  8.  
  9. import caurina.transitions.Tweener;
  10.  
  11. import org.papervision3d.cameras.CameraType;
  12. import org.papervision3d.materials.MovieMaterial;
  13. import org.papervision3d.objects.primitives.Plane;
  14. import org.papervision3d.view.BasicView;
  15. import org.papervision3d.view.layer.ViewportLayer;
  16.  
  17. import flash.events.Event;
  18. import flash.filters.DropShadowFilter;
  19.  
  20. public class MainWaft3DPlane extends BasicView
  21. {
  22.  
  23. private var plane:Plane;
  24. private var mstack:ModifierStack;
  25. private var bend:Bend;
  26. private var phase:Phase;
  27.  
  28. public function MainWaft3DPlane()
  29. {
  30.   super(550, 400, true, false, CameraType.FREE);
  31.  
  32.   var mat:MovieMaterial=new MovieMaterial(new Mc(),false,true);
  33.   mat.doubleSided=true;
  34.   plane=new Plane(mat,285,400,4,4);
  35.   scene.addChild(plane);
  36.     camera.moveForward(450);
  37.   viewport.getChildLayer(plane).filters=[new DropShadowFilter(4.0,45,0x333333)];
  38.  
  39.   mstack = new ModifierStack(new LibraryPv3d(), plane);
  40. bend=new Bend(0,.5,(90/180) * Math.PI);
  41.  
  42. mstack.addModifier(bend);
  43.     //tweenA();
  44.     
  45.   startRendering();
  46.   phase = new Phase();
  47. }
  48. /* private function tweenA():void {
  49.      Tweener.addTween(bend, {force:.5, time:.5, transition:"easeInOutElastic", onComplete:tweenB});
  50.         }
  51.           
  52. private function tweenB():void {
  53.      Tweener.addTween(bend, {force:-.5, time:.5, transition:"easeInOutElastic", onComplete:tweenA});
  54.         }*/
  55. protected override function onRenderTick(event:Event = null):void
  56. {
  57.   phase.value+=.05;
  58.  
  59.   bend.force=phase.phasedValue;
  60.  
  61.  
  62.   mstack.apply();
  63.   super.onRenderTick(event);
  64. }
  65. }
  66. }

Tags:as3dmod  PV3D  

0 Comment so far



Leave a reply