目录:
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 转换
使用 Matrix3D 类可以转换坐标空间内的 3D 点
,也可以将 3D 点从一个坐标空间映射
到另一个坐标空间。
您可以用 Matrix3D 对象的方法对显示对象执行平移
、旋转
、缩放
和透视投影
。
使用 Vector3D
类及其 x、y 和 z 属性可管理 3D 点。该类还可以表示具有方向和大小
的物理空间矢量
。
通过 Vector3D
类的方法,可以执行有关空间矢量的常见计算,例如加法
、点积
和叉积
计算。
注: Vector3D 类与 ActionScript Vector 类无关
。Vector3D 类包含的属性和方法用于定义和操作 3D 点,而 Vector
类则支持类型对象数组
。
创建 Matrix3D 对象
有三种创建或检索 Matrix3D 对象的主要方式:
-
使用 Matrix3D() 构造函数实例化
新的矩阵。Matrix3D() 构造函数需要使用包含 16 个数值的 Vector 对象,并将每个值放入一个矩阵单元中。例如:var rotateMatrix:Matrix3D = new Matrix3D(1,0,0,1, 0,1,0,1, 0,0,1,1, 0,0,0,1);
-
设置显示对象的 z 属性
的值。然后从该对象的 transform.matrix3D 属性检索转换矩阵。
-
通过获取根显示对象的 perspectiveProjection
.matrix3D
属性的值,检索用于控制舞台上 3D 对象显示方式的 Matrix3D 对象。
应用多种 3D 转换
rect1.rotationX = 15;
rect1.scaleX = 1.2;
rect1.x += 100;
rect1.y += 50;
rect1.rotationZ = 10;
var matrix:Matrix3D = rect2.transform.matrix3D;
matrix.appendRotation(15, Vector3D.X_AXIS);
matrix.appendScale(1.2, 1, 1);
matrix.appendTranslation(100, 50, 0);
matrix.appendRotation(10, Vector3D.Z_AXIS);
rect2.transform.matrix3D = matrix;
使用 Matrix3D 对象重新排序显示
为确保 3D 显示对象的层叠顺序
对应于对象的相对深度
,请使用如下方法:
-
使用 Transform 对象的 getRelativeMatrix3D
() 方法获取 3D 子显示对象的相对 z 轴
值。
-
使用 removeChild
() 方法从显示列表中删除对象。
-
根据
显示对象的相对 z 轴
值对显示对象进行排序
。
-
使用 addChild
() 方法以相反顺序将子对象添加到显示列表中。
public var faces:Array; . . .
public function ReorderChildren()
{
for(var ind:uint = 0; ind < 6; ind++)
{
faces[ind].z = faces[ind].child.transform.getRelativeMatrix3D(root).position.z;
this.removeChild(faces[ind].child);
}
faces.sortOn("z", Array.NUMERIC | Array.DESCENDING);
for (ind = 0; ind < 6; ind++)
{
this.addChild(faces[ind].child);
}
}
通过三角形获得 3D 效果
在 ActionScript 中,可以使用 Graphics.drawTriangles
() 方法执行位图转换,因为 3D 模型是通过空间中的一组三角形来表示的。
Graphics.drawTriangles() 方法使用 Vector 对象。<Number>,用于指定三角形路径的点位置:
drawTriangles(vertices
:Vector.<Number>, indices
:Vector.<int> = null, uvtData
:Vector.<Number> = null,
culling
:String = "none"):void
graphics.beginFill(0xFF8000);
graphics.drawTriangles(
Vector.<Number>([10,10, 100,10, 10,100, 100,100]),
Vector.<int>([0,1,2, 1,3,2]));
indices 值是点索引
转换位图
位图转换可在三维对象上提供透视视觉效果或“ 纹理”。
UV 映射
一旦开始处理纹理,就需要使用 drawTriangles() 的 uvtData
参数。
UV 映射是一种纹理化对象的方法。它依赖于两个值:U 水平 (x) 值和 V 垂直 (y) 值。这两个值不是基于像素值,而是基于百分比
。0 U 和 0 V 表示图像的坐上角, 1 U 和 1 V 表示右下角:
可以为三角形的矢量指定 UV 坐标,从而将矢量自身关联到图像上的相应位置:
UV 值与三角形的点保持一致:
Graphics.drawTriangles() 方法也接受关于三维转换的一条可选信息:T 值
。uvtData 中的 T 值表示 3D 透视
,更具体地说,表示相关顶点的缩放系数
。
用于确定 T 值的等式
为:
T = focalLength/(focalLength + z);
Demo source code见附件压缩包
剔除
在 3D 空间中,三维对象“ 背面 ” 的表面对视点不可见:
因此, Graphics.drawTriangles() 方法采用第四个参数来建立剔除值:
该剔除参数是来自 TriangleCulling 枚举类的值
:TriangleCulling.NONE
、TriangleCulling.POSITIVE
和TriangleCulling.NEGATIVE
。这些值与定义对象表面的三角形路径的方向有关
。用于确定剔除的 ActionScript API 假设 3D形状的所有外向三角形都是以同一路径方向绘制的。一旦三角形面经过旋转后,其路径方向也会改变。此时可以剔除(不呈现)该三角形。
因此,如果 TriangleCulling 值为 POSITIVE
,则会移除正向路径方向(顺时针)
的三角形。如果 TriangleCulling 值为NEGATIVE
,则会移除负向路径方向(逆时针)
的三角形。对于立方体,朝前的表面具有正向路径方向,而朝后的表面具有负向路径方向:
- 大小: 18.6 KB
- 大小: 16.8 KB
- 大小: 20 KB
- 大小: 13.9 KB
- 大小: 19.4 KB
- 大小: 11.7 KB
- 大小: 22.1 KB
分享到:
相关推荐
\flashplayer10\flashplayer10
flashplayer_10_ax_debugflashplayer_10_ax_debugflashplayer_10_ax_debugflashplayer_10_ax_debugflashplayer_10_ax_debug
Flash Player离线安装包下载
FlashPlayer11-5安装包FlashPlayer11-5安装包FlashPlayer11-5安装包FlashPlayer11-5安装包
最新flashplayer离线安装包下载
FlashPlayer10 支持flash播放,很好用,很方便,谢谢下载!
flashplayer V10.1.85,单文件运行
install_flash_player_10_active_xvinstall_flash_player_10_active_xinstall_flash_player_10_active_xinstall_flash_player_10_active_xinstall_flash_player_10_active_xinstall_flash_player_10_active_xinstall...
很多的朋友反映,将喜欢的Flash动画下载到自己的电脑后总是用IE浏览器或者第三方Flash播放器才能观看,感觉不好,希望用Macromedia的Flash Player播放,可是又很难找到!现在我就发一个最新版本的给大家!不过请注意...
flashplayer_10_ax_debug flashplayer_10_sa flashplayer_10_sa_debug
flashplayer_10_sa SWF动画播放工具 本地播放
FlashPlayer created with delphi 7
flashplayer11_b1_install_win_ie32_071311flashplayer11_b1_install_win_ie32_071311flashplayer11_b1_install_win_ie32_071311flashplayer11_b1_install_win_ie32_071311flashplayer11_b1_install_win_ie32_071311...
Adobe Flash Player(Flash Player官方下载)是一个集成的多媒体播放器,让你在Web上享受更广泛的多媒体体验。Adobe Flash Player官方版可显示和播放多媒体内容,从数以千计的高度交互性的flash player下载,到有音频...
flashplayer_10.exe 不错的播放工具
install_flash_player_10
flashplayer10_1_p3_activex_022310.exe
众所周知 adobe flash player 已被苏-州-思-杰-马-克-丁-代-理 在flash临死前打捞一笔 目前最新版本31 会弹出 ff资讯弹窗 Flash Helper Service服务后台常驻 收集用户隐私 如果禁止 flash将不可用 现在我收集了...