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});
}
下面给出文档类:
- package
- {
- import com.as3dmod.ModifierStack;
- import com.as3dmod.modifiers.Bend;
- import com.as3dmod.plugins.pv3d.LibraryPv3d;
- import com.as3dmod.util.Phase;
- import caurina.transitions.Tweener;
- import org.papervision3d.cameras.CameraType;
- import org.papervision3d.materials.MovieMaterial;
- import org.papervision3d.objects.primitives.Plane;
- import org.papervision3d.view.BasicView;
- import org.papervision3d.view.layer.ViewportLayer;
- import flash.events.Event;
- import flash.filters.DropShadowFilter;
- public class MainWaft3DPlane extends BasicView
- {
- private var plane:Plane;
- private var mstack:ModifierStack;
- private var bend:Bend;
- private var phase:Phase;
- public function MainWaft3DPlane()
- {
- super(550, 400, true, false, CameraType.FREE);
- var mat:MovieMaterial=new MovieMaterial(new Mc(),false,true);
- mat.doubleSided=true;
- plane=new Plane(mat,285,400,4,4);
- scene.addChild(plane);
- camera.moveForward(450);
- viewport.getChildLayer(plane).filters=[new DropShadowFilter(4.0,45,0x333333)];
- mstack = new ModifierStack(new LibraryPv3d(), plane);
- bend=new Bend(0,.5,(90/180) * Math.PI);
- mstack.addModifier(bend);
- //tweenA();
- startRendering();
- phase = new Phase();
- }
- /* 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});
- }*/
- protected override function onRenderTick(event:Event = null):void
- {
- phase.value+=.05;
- bend.force=phase.phasedValue;
- mstack.apply();
- super.onRenderTick(event);
- }
- }
- }