Mar 4
AS3Dmod之进阶篇---Twist
AS3Dmod
虽然研究完Twist还是对其一知半解,但知道怎么用,还是另我很兴奋,如果能够灵活应用的话,这玩意就太多用处了。
上面的例子单靠blend是实现不了的,看了zupko的文章http://blog.zupko.info/?p=140 ,再查了3dmodAPI果然。
还有这么灵活的东西。但是zupko的twist是自己写的,不是3dmod里面的,不过思路是一样。
Twist有三个参数可以访问到。angle,vector,center;这节知识点也就在这3个参数的应用。
大家先来观察下文档类代码和上节介绍blend不同的地方我用黑体标注。
- package
- {
- import com.as3dmod.ModifierStack;
- import com.as3dmod.modifiers.Twist;
- import com.as3dmod.plugins.pv3d.LibraryPv3d;
- import com.as3dmod.util.Phase;
- import com.as3dmod.core.Vector3; //和Numeber3D差不多,我理解的是3维向量,参数(x,y,z)
- 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 axis:Vector3 = new Vector3(0, 1, 0);
private var center:Vector3 = new Vector3(0,800,0) ;
//这两个实在不知道该怎么解释,这样想或许好理解点。center就是Y方向800的一个力源axis是定义了Y的一个向量,那么就是绕Y轴做扭曲
//其实我也搞不清楚 多调整几次参数就知道他怎么用了。 - private var plane:Plane;
- private var mstack:ModifierStack;
- private var twist:Twist;
- 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);
- twist = new Twist((90/180) * Math.PI);
- //因为摄像头被移到了前面 所以角度调到90度才是画面出现的侧边扭曲
- mstack.addModifier(twist );
- startRendering();
- phase = new Phase();
- }
- protected override function onRenderTick(event:Event = null):void
- {
- phase.value+=.05;
- twist.vector=axis;
twist.center=center;
twist.angle=phase.phasedValue * 0.5; //一个浮动值 - mstack.apply();
- super.onRenderTick(event);
- }
- }
- }
最新评论及回复