当前位置: 首页 > 工具软件 > native3d > 使用案例 >

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

晋涛
2023-12-01

资讯类型: 原创 来源页面:  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/

 

 类似资料: