首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

[转]Flash Player 十' s new 3D effects(三)

2012-12-26 
[转]Flash Player 10 s new 3D effects(三)http://sjkgxf7191.iteye.com/blog/513622?目录:?Flash Player

[转]Flash Player 10' s new 3D effects(三)

http://sjkgxf7191.iteye.com/blog/513622

?

目录:

?

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 转换

    ?

    ?

    UV 映射

    ?

    一旦开始处理纹理,就需要使用 drawTriangles() 的?uvtData?参数。

    UV 映射是一种纹理化对象的方法。它依赖于两个值:U 水平 (x) 值和 V 垂直 (y) 值。这两个值不是基于像素值,而是基于百分比?。0 U 和 0 V 表示图像的坐上角, 1 U 和 1 V 表示右下角:


    [转]Flash Player 十' s new 3D effects(三)

    可以为三角形的矢量指定 UV 坐标,从而将矢量自身关联到图像上的相应位置:


    [转]Flash Player 十' s new 3D effects(三)

    ?

    ?UV 值与三角形的点保持一致:


    [转]Flash Player 十' s new 3D effects(三)

    Graphics.drawTriangles() 方法也接受关于三维转换的一条可选信息:T 值?。uvtData 中的 T 值表示 3D 透视?,更具体地说,表示相关顶点的缩放系数?。

    ?

    用于确定 T 值的等式?为:
    T = focalLength/(focalLength + z);


    [转]Flash Player 十' s new 3D effects(三)

    Demo source code见附件压缩包

    ?

    剔除

    ?

    在 3D 空间中,三维对象“ 背面 ” 的表面对视点不可见:


    [转]Flash Player 十' s new 3D effects(三)
    ?因此, Graphics.drawTriangles() 方法采用第四个参数来建立剔除值:

    该剔除参数是来自?TriangleCulling 枚举类的值?:TriangleCulling.NONE?、TriangleCulling.POSITIVE?和TriangleCulling.NEGATIVE?。这些值与定义对象表面的三角形路径的方向有关?。用于确定剔除的 ActionScript API 假设 3D形状的所有外向三角形都是以同一路径方向绘制的。一旦三角形面经过旋转后,其路径方向也会改变。此时可以剔除(不呈现)该三角形。

    ?

    因此,如果 TriangleCulling 值为?POSITIVE?,则会移除正向路径方向(顺时针)?的三角形。如果 TriangleCulling 值为NEGATIVE?,则会移除负向路径方向(逆时针)?的三角形。对于立方体,朝前的表面具有正向路径方向,而朝后的表面具有负向路径方向:


    [转]Flash Player 十' s new 3D effects(三)

热点排行