目录:
Flash Player 10' s new 3D effects(一)
Flash Player 10' s new 3D effects(二)
Flash Player 10' s new 3D effects(三)
参考资料:
Adobe ActionScript 3.0 Programming 第二十三章 在三维环境中工作
AdvancED_ActionScript 3.0 第七章 3D IN FLASH 10
3D基础知识
ActionScript中的3D简介
如果将某个显示对象的Z属性显示设置为数值 ,则该对象会自动创建一个3D转换矩阵 。您可以通过更改此矩阵来修改该对象的3D转换设置
重要术语和概念
- 透视 :在 2D 平面上将平行线表示成聚合于一个消失点,从而获得深度和距离的视觉效果
- 投影:为多维对象生成 2D 图像; 3D 投影将 3D 点映射到 2D 平面
- 旋转:通过按圆周运动的方向移动对象内的每个点来更改对象的方向(通常也会更改其位置)
- 转换:通过平移、旋转、缩放、倾斜或这些操作的组合来更改 3D 点或点集
- 平移:通过将对象内的每个点往同一方向移动相同的距离来更改对象的位置
- 消失点 :在用线性透视法表示时,逐渐远离的平行线看似相交的点
// 设置显示元素的中心为消失点就可以像下面这样: s.transform .perspectiveProjection .projectionCenter =new Point (stage.stageWidth / 2, stage.stageHeight / 2);
- 矢量 :3D 矢量使用笛卡尔坐标 x、y 和 z 表示三维空间中的点或位置
- 顶点:转角点
- 纹理式网格 :在 3D 空间中用于定义对象的任意点
- UV 映射 :将纹理或位图应用于 3D 表面的一种方式。UV 映射将值分配给图像上的坐标,以水平 (U) 轴和垂直 (V) 轴的百分比值形式表示。
- T 值 :当对象靠近或远离当前视点时用于确定 3D 对象大小的缩放系数
- 剔除 :呈现或不呈现具有特定缠绕方式的表面。通过使用剔除,您可以隐藏对当前视点不可见的表面
弧度和角度之间的转换公式:
Flash 10 3D 旋转的角度是度数 而不是弧度
radians = degrees * PI / 180
degrees = radians * 180 / PI
了解 Flash Player 和 AIR 运行时的 3D 功能
以下 ActionScript 类支持与 3D 相关的新功能 :
- flash.display.DisplayObject 类包含 z 属性和新的旋转和缩放属性,这些属性用于操作 3D 空间中的显示对象。DisplayObject.local3DToGlobal () 方法提供了一种将 3D 几何图形投影到 2D 平面 的简单方式 。
// 屏幕坐标系和3D坐标系: // 将_sprite的(200, 0, 0)的那个点三维点转换成一个二维点 // 可以知道何时一个3D物体移出屏幕,这对判断一个对象是否仍然在屏幕上是很有用的 var p:Point = _sprite.local3DToGlobal(new Vector3D(200, 0, 0)); // 二维坐标 转换成 三维坐标 var p:Vector3D = _sprite.globalToLocal3D(new Point(mouseX, mouseY)); // pointAt 方法接收一个 Vector3D 对象作为指向的目标,这边设成了鼠标光标 _sprite.transform.matrix3D.pointAt(new Vector3D(mouseX, mouseY, 0));
- flash.geom.Vector3D 类可用作管理 3D 点 的数据结构 。该类还支持矢量数学运算。
- flash.geom.Matrix3D 类支持复杂的 3D 几何转换 ,例如旋转、缩放和平移。
- flash.geom.PerspectiveProjection 类控制着将 3D 几何图形映射到 2D 视图 的相关参数 。
在 ActionScript 中,有两种不同的模拟 3D 图像的方式:
- 在 3D 空间 中排列平面对象并进行动画处理 。这种方式需要使用显示对象的 x、y 和 z 属性来对显示对象进行动画处理,或者使用 DisplayObject 类设置旋转和缩放属性。使用DisplayObject.transform.matrix3D 对象可以实现更为复杂的运动 。DisplayObject.transform.perspectiveProjection 对象可自定义显示对象在 3D 透视 中的绘制方式 。如果需要对主要包含平面的 3D 对象进行动画处理,可以使用这种方式。这种方式的例子包括 3D 图库或者 3D 空间中排列的 2D 动画对象。
- 从 3D 几何图形生成 2D 三角形 ,然后用纹理呈现这些三角形。要使用这种方式,必须首先定义和管理有关 3D 对象的数据,然后将这些数据转换成 要呈现的 2D 三角形 。可以将位图纹理映射到这些三角形,然后使用 Graphics.drawTriangles ()方法将三角形绘制为图形对象。这种方式的例子包括从文件中加载 3D 模型数据 并将模型呈现到屏幕上,或以三角形网格形式生成和绘制 3D 图形。