- 最后登录
- 2021-9-15
- 注册时间
- 2011-7-15
- 阅读权限
- 100
- 积分
- 50625
  
- 纳金币
- 53202
- 精华
- 32
|
介绍
在Flash和ActionScript工作,你将熟悉的概念,使用标准的显示列表绘制和动画内容。Away3D的版本早于4.0都依赖于这个标准的显示列表来渲染对象到你的场景,但是从Flash Player 11.0和Away3D的4.x的你现在可以利用GPU硬件加速图形渲染性能,在游戏中常见的,可以让你创建复杂的,沉浸式的网络,并使用Adobe AIR,以及在移动设备上。 Stage3D的Flash播放器被称为GPU实现和工作原理完全不同,从传统的显示列表对象。有很多的介绍和例子在互联网上有关Stage3D的,所以此位将是短暂的(您可以先去了解一下Stage3D的情况)。主要的事情要记住的是,Stage3D的情况下(可以有最多4个)标准的舞台对象背后总是会出现。Stage3D的情况下,在彼此顶部分层,而不是透明的。这意味着,你不能把一个标准的显示对象的背景位图,例如,Away3D的4.0使用Stage3D的和自动的使用管理等诸多方面,让您可以专注于3D内容和互动。 基本视图例子的源代码在附件请下载!! 创建和设置3D场景。
要创建你的3D体验,你需要有一个三维的世界包含的对象和机制,来查看这些对象。Away3D的有一个View3D的类,让你的能力去做这件事。下面是一个例子,你如何使用它。(注:这些代码片段是直接从完整的源代码的例子)。 //setup the view_view = newView3D();addChild(_view);
一旦你创建了一个新的实例的类,你需要将它添加到舞台为你做任何其他的显示对象,但上述View3D,因为这是基本开发4.x和使用Stage3D的,它总是会出现于任何现有的显示对象。技术上,View3D并没有任何可见的属性,但创建Stage3D的实例作为必需的,是一个图像显示对象,允许使用的事件,如Event.ENTER_FRAME。View3D有一些重要的属性,需要你继续创造你的世界。首先,_view.scene的财产是你的3D物体的容器,这将在后面讨论,当我们添加对象到现场。其次,您的3D世界中,用户所看到的是通过_view.camera属性。幸运的是,这两个属性都使用默认值创建建造时,View3D。下面的几行改变一些相机的默认值重新定位它在您的3D世界和改变它指向的方向。camera.lookAt()直接在指定的三维坐标定位的相机。在这种情况下,新的Vector3D();是XYZ的位置(0,0,0)。 //setup the camera_view.camera.z = -600;_view.camera.y = 500;_view.camera.lookAt(newVector3D());
添加一个纹理对象到现场
目前,您的3D世界是不是特别令人兴奋的是什么也没有,所以让变化。为了使地板对象,在这个例子中你需要添加一个平面,默认情况下,由两个三角形排列成一个正方形。 //setup the scene_plane = newMesh(newPlaneGeometry(700, 700));_view.scene.addChild(_plane); 您可能会注意到的一件事是,于Away3D V3.6是一个有点不同的机制来创建一个新的平面。在Away3D 4,原语是几何体创建工具,而不是完整的网格,因为他们在V3.6。此的主要原因之一是利用能够重新使用的多个对象的几何数据,避免不必重新重复相同的数据上载的开销。的的网状构造函数看起来是这样的: varmesh:Mesh = newMesh(geometry : Geometry, material : MaterialBase = null);
正如你可以看到,网格的几何参数,在您的案件是一个新PlaneGeometry,尺寸为700×700。第二个参数是纹理用于上的网格。供给的纹理需要是从MaterialBase延伸的类型,它可以是一个ColorMaterial,TextureMaterial,SegmentMaterial或SkyboxMaterial。 图1。没有纹理的地板平面。
这架飞机看起来很好,除了您刚才创建的,它看起来不象地板在上面的例子中。这样做的原因是,你还没有指定一个纹理材质的平面和默认,黑白相间的棋盘来代替。要添加一个纹理,你需要修改网格参数,包括参考您所选择的质地,如下所示。使用的Cast.bitmapTexture的(),你可以很容易地创建所需要的纹理材料从的BitmapData。 _plane = newMesh(newPlaneGeometry(700, 700), newTextureMaterial(Cast.bitmapTexture(FloorDiffuse)));
还有一些原语提供给您在away3d.primitives包,包括SphereGeometry,CubeGeometry,ConeGeometry,CylinderGeometry等 旋转对象
现在,你有你的格子地板在你的面前,是时候给它的东西更有趣一些,而不是仅仅坐在那里。一个简单的旋转怎么样?你可以听为舞台的ENTER_FRAME触发的事件,在渲染每一帧,这样可以更新您的地板平面的旋转和重新渲染场景。要添加事件***,使用下面的。 //setup the render loopaddEventListener(Event.ENTER_FRAME, _onEnterFrame);
_onEnterFrame方法将加1,Y(垂直)旋转的平面和你打电话给_view.render(),这是需要绘制您的3D世界。 /*** render loop*/privatefunction_onEnterFrame(e:Event):void{_plane.rotationY += 1;_view.render();}
完整的例子也有一个事件侦听器方法时执行调整阶段。这允许的View3D的尺寸进行调整,以适应新的Flash播放器窗口的大小。 结论在本教程中,你已经设法构建一个非常基本的现场使用Away3D中4,利用GPU硬件加速图形显示一个旋转的质地地板。
|
|