`

[转] [Flash/Flex] 轻量级flash3d引擎native3d rev19使用教程

阅读更多

  • 资讯类型: 原创
  • 来源页面: http://game-develop.net/blog/?p=232
  • 资讯原标题: 轻量级flash3d引擎native3d rev19使用教程
  • 资讯原作者: sliz
  • 我的评论:自弹自唱 
    对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。

    本帖最后由 sliz 于 2011-4-7 13:22 编辑

    比起其他3d引擎动辄几百k,无位图资源时,只有3k+的native3d引擎在做一些轻量级的网页效果时,它甚至比five3d的体积还要小,确实有它一定的优势。
    native3d在设计的时候力求最大限度的节省开发者的时间
    比如其他引擎每次创建的时候都要新建scene camera viewport render,然后再把他们组合成正确的位置。native3d把新建的工作都直接写在view3d里好了。native3d的rx,ry,rz对应其他3d引擎的rotationX,rotationY,rotationZ。
    1,native3d基本类
    Obj3D 3d对象
    View3D 内部包括了camera scene 渲染器等
    Cam3D 摄像机
    2,新建view3d
    1. var view:View3D; = new View3D(400, 400, -1000, this);
    复制代码
    其中前2个参数是viewport的宽高,第三个参数是默认摄像机的z坐标,因为native3d和大部分3d引擎的z轴都是指向屏幕内的,所以默认摄像机位置为负数,第四个参数this是你想把view3d显示对象加到哪里。
    1. if (parent) {
    2.         parent.addChild(this);
    3. }
    复制代码
    从它的构造函数可以看出,如果你传入一个可用的容器它会执行addchild方法,否则不做操作。
    view3D提供了render,start,stop方法,如果你只想渲染一次,当你添加好3d对象的时候,可以执行render来做单次渲染。我们一般用start方法来使native一直渲染。
    3,几何体
    primitives包里提供了几个最基本的几何体,可以试试立方体Cube的功能。
    可以
    1. new Cube(new LineMaterial(0), 400, 400,400);
    复制代码
    来建立一个Ojb3D对象,第一个参数为材质 ,后面3个参数为长方体的长宽高。
    新建好后加到scene上进行渲染
    1. view.scene.add(ob3d);
    复制代码
    Obj3D包括一个public的m matrix3d变量我们可以操作它来改变Obj3D的位置,欧拉角,缩放等属性。
    执行过后他如果想得到正确的 xyz等属性需要执行decompose方法来做映射。
    如果不熟悉matrix3d的使用方法,可以直接对Obj3D的各个属性进行操作,可以达到一样的效果。
    x,y,z 3d对象的位置,rx,ry,rz 3d对象的欧拉角 sx,sy,sz 3d对象的缩放。
    可以设置culling(不替除,背面剔除,正面剔除) 对应为 TriangleCulling类。
    4,材质
    在materials包内的线材质,位图材质,色块材质,组合材质,可以把其他材质任意组合。
    5,最基本例子代码
    1. package  
    2. {
    3.         import flash.display.*;
    4.         import flash.events.*;
    5.         import net.game_develop.native3d.*;
    6.         import net.game_develop.native3d.materials.*;
    7.         import net.game_develop.native3d.primitives.*;
    8.         /**
    9.          * ...
    10.          * @author sliz http://game-develop.net/blog/
    11.          */
    12.         public class Test2 extends Sprite
    13.         {
    14.                 private var ob3d:Obj3D;
    15.                 private var ctrl:FreeRotationController;
    16.                 private var view:View3D;
    17.                 public function Test2() 
    18.                 {
    19.                         var view:View3D; = new View3D(400, 400, -1000, this);
    20.                         ob3d = new Cube(new LineMaterial(0), 400, 400,400);
    21.                         view.scene.add(ob3d);
    22.                         view.start();
    23.                         addEventListener(Event.ENTER_FRAME, update);
    24.                         ctrl = new FreeRotationController(ob3d);
    25.                 }
    26.                 
    27.                 private function update(e:Event):void 
    28.                 {
    29.                         ctrl.update(view.containerMouseX, view.containerMouseY);
    30.                 }
    31.         }
    32. }
    复制代码
    6 例子
    https://native3d.googlecode.com/ ... 3d/bin/native3d.swf
    https://native3d.googlecode.com/ ... d/bin/native3d2.swf
    https://native3d.googlecode.com/ ... d/bin/native3d3.swf
    https://native3d.googlecode.com/ ... d/bin/native3d4.swf
    https://native3d.googlecode.com/ ... d/bin/native3d5.swf
    7 native3d的未来发展方向
    加入对molehill的支持,在效率上有所建树,转型为主流的3d框架
    8 svn
    svn地址 http://native3d.googlecode.com/svn/trunk/

     

    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics