DDM君,Flab3D.com (允许转载,转载请注明)
  所有PV3D三维模型都是继承至DisplayObject3D类,所以所有三维模型都有同样的移动,旋转,缩放的方法/属性。(如果不理解什么叫继承可以无视这句话=_=)讲这句的意思是“摄像机这些也是DisplayObject3D”,所以也可以做同样的操作。
我们第一篇的小球在这里不是特别能明显表示下面的区别。所以我们这次用个立方体Cube。
    原理介绍: 
    
    先记下上面这个图,它保证我们不迷失在三维的世界里,如果你正好是maya,3dsmax的使用,恭喜你!和里面的道理一模一样。
    
    移动: 
    cube.x  //物体在世界坐标的X轴位置
    cube.y  //物体在世界坐标的Y轴位置
    cube.z  //物体在世界坐标的Z轴位置
    pv3d的三维坐标 图1
    cube.moveForward(一定距离) //向物体本地Z的正方向移动 
    cube.moveBackward(一定距离) //向物体本地Z的负方向移动
    cube.moveDown(一定距离)//向物体本地Y的负方向移动
    cube.moveUp(一定距离)//向物体本地Y的正方向移动
    cube.moveLeft(一定距离)//向物体本地X的负方向移动
    cube.moveRight(一定距离)////向物体本地X的正方向移动
    这两种有什么区别呢?其实就是world和local坐标系的区别,上面那张图应该能帮助您理解。
    旋转: 
    cube.rotationX  //物体绕世界坐标的X轴,顺时针旋转
    cube.rotationY  //物体绕世界坐标的Y轴,顺时针旋转
    cube.rotationZ  //物体绕世界坐标的Z轴,顺时针旋转
    cube.yaw(一定角度)  //以本地的Y为轴心,顺时针旋转
    cube.pitch(一定角度)  //以本地的X为轴心,顺时针旋转
    cube.roll(一定角度)  //以本地的Z为轴心,顺时针旋转
    (yaw-pitch-roll其实是欧拉角euler的一种描述方法,愿意研究图形数学可以到网上百科查询具体含义,我们flash3d研究所以后也会在图形学原理里放出关于三种旋转方式和万向节锁gimbal-lock的相关资料)
    
    这两种有什么区别呢?还是自己尝试尝试吧~不要放弃任何一种哦,都是每天都会用到的东西。
    缩放:(默认下,单位为1,2,3…倍这种,不是百分比)
    cube.scaleX  //物体延X轴放大
    cube.scaleY  //物体延Y轴放大
    cube.scaleZ  //物体延Z轴放大
    这是分别延x,y,z的缩放,如果要整体缩放,直接用下面这个就可以了。
    cube.scale  //物体整体放大
    代码流程: 
    仍然有困难写出代码的朋友,可以
    下载源代码
    。
    和上次一样,建包,放傻瓜包,然后初始化最基础的4要素。不想重新来一次的可以就修改上次的^_^。如果不记得了可以看
    《第一篇 人人都能PV3D》—点击到第一篇
    
    我们这次要添加一个cube(立方体)。
    cube=new Cube(new MaterialsList({all:new BitmapFileMaterial('map.jpg')}),500,500,500,3,3,3);
    介绍一下生成立方体的构造器,和我们第一篇的球体少许不同。
    第一个参数需要一个‘材质列表’(MaterialsList),而不是像我们上次小球只要单个材质。(不理解材质列表暂时没关系,其实它就是一个很多单个材质添加在一起的‘数组’或object。我们以后会在中级研究中作一些具体分析)
    参数二,参数三,参数四分别是立方体的宽,长,高。
    参数五,参数六,参数七分别是决定长宽高有多少段(段数越多运行越慢,但是贴图变形越小,越准确)。
    因为需要用‘材质列表’(MaterialsList),所以开始要记得把MaterialsList类导入进来。
    import org.papervision3d.materials.utils.MaterialsList;
    当然,也得把立方体的类导入
    import org.papervision3d.objects.primitives.Cube;
    
    为了能更清楚的测试这些控制的含义,我在初始化的时候先给立方体了一个角度。
    cube.rotationX=30; 
    cube.rotationY=30; 
    enterframe里面就可以测试我们学到的各种操作了。
    属性需要这样写才能累加,才能看到动画变化:
    cube.x+=10;
    方法直接写就可以了:
    cube.MoveForward(10);
     这次的也非常简单吧,记住它们,熟悉它们,因为我们每天都会用到。
    好好练习哦~加油!
    有任何不清楚的地方,欢迎到讨论区发言。(无需注册)
    
    DDM君
    Flab3D.com
    
    Flash3d研究所推荐的Pv3d傻瓜包下载
    
    源文件下载