Flash三维可视化研究
2015-09-17赵欣李敏智黄艳丽
赵欣 李敏智 黄艳丽
摘 要 在分析Flash脚本语言和技术框架的基础上,总结归纳Flash三维图形显示原理,为其技术创新与发展提供理论支持。
关键词 Flash;三维坐标;可视化
中图分类号:TP317.4 文献标识码:B
文章编号:1671-489X(2015)16-0047-02
随着Flash客户端应用领域的不断增加,其简单的二维展示已经不能满足其巨大的市场需求,因此其二维可视化向三维可视化的发展成为亟待解决的问题。
1 ActionScript(简称AS)
AS是支持面向对象的编程语言,它是Flash内置的编程语言,并且在其环境中运行,吸收了多种计算机编程语言特点。其具有内容和程序的交互、数据绑定、数据编辑等功能。它可以为生动形象的动画进行脚本编程,可以制作出各种各样逼真的动画高级特效,可以很好地控制编辑完成的动画影片,实现人性化的人机交互操作、与各种服务器的人性化“对话”功能。AS在其虚拟机上运行。该脚本语言可以通过文本编辑器等软件来进行编译,被编译成的字节码格式是一种计算机能识别的二进制代码格式,SWF文件中包含编译完成的字节码,该字节码在Flash中运行。
2 Flash技术框架
Flash是一款二维矢量动画设计与编辑软件,支持流式媒体播放技术,可以在保证图像不失真的前提下,边下载边观看动画。同时所生成的FLA和SWF动画文件很小。该软件内容丰富,可以融合色彩、声音、文字和脚本交互等元素,创造出惊人的动画编辑效果。设计人员可以利用脚本设计出不同类型的高水平的动画。Flash主要由AS虛拟机与图形渲染引擎两大部分组成。其中,前者负责执行编译后的AS字节码,而后者则用来绘制显示列表中的图形对象。
显示对象列表 在Flash运行过程中,被渲染引擎渲染出来的屏幕中显示的“树”状图形对象被称为显示对象列表。如果显示对象没有在显示对象列表中出现,那么它就不会出现在屏幕上。当显示对象从显示列表中移出后,它就不能在屏幕上显示。显示对象列表是Flash中屏幕内容的层次关系结构,简单说显示对象其实就是AS脚本语言的内部类。显示对象列表是多个需要渲染的显示对象的集合,显示对象在被添加到显示对象列表之前是不需要渲染的。显示对象列表是一个树状结构,树的最上面是舞台,囊括多个显示对象。本身不是显示对象容器的显示对象不可以再包含显示对象,但是原本就是显示对象容器的显示对象可能包含其他显示对象或显示对象容器。显示对象的类遵循类的继承规律,子类所有的方法和属性由继承父类而来。
Flash技术优势 Flash可以作为浏览器插件运行在浏览器中,与其他传统技术相比较,具有比其他传统的播放技术更多的优点:跨多种平台的浏览器;插件较小并且具有极大的市场占有率;具有优美的界面效果和丰富的组件;Flex技术应用是开源的并且获得众多的开源社区支持;强大的功能以及多种数据技术支持。
3 Flash三维图形显示原理
三维坐标变换 在Flash三维图形显示中,几何变换将图形上的点作为基本元素进行操作,它将原始图形上的点作相应的变换后,重新组合变换后的点,形成新的图形。三维图形的几何变换都是以点为基本元素进行的,把图形的一系列定点作几何变换后,变换后的新的点就重新组合成新的几何图形。几何变换分为缩放、平移和旋转变换三大类,这三类变换可以用齐次坐标所给出的三维矩阵来表示。
齐次坐标就是将n维的点或向量表示成n+1维,如三维点(x,y,z)的齐次坐标为(mx,my,mz,m)。因此,同一个点和向量的齐次坐标表示可以有多个,即取不同的m值对应于同一个三维点。然而在三维几何概念中,点与向量的齐次坐标表示是不一样的:最后一个代数分量为0的是三维向量,最后一个代数分量为1的是三维点。判断一个齐次坐标表示的是点还是向量,只需要看坐标的最后一个代数式0还是1就可以。因此,普通坐标向齐次坐标进行变换时,若是点,最后一个代数就直接写1;若是向量,最后一个代数就直接写0。从齐次坐标转换成普通坐标时,直接去掉第四个坐标变成普通坐标。在文中涉及的几何变换中,向量只有大小与方向,没有位置概念。因此,平移变换变换的对象只能是点,缩放变换与旋转变换变换的对象是点与向量。
这些齐次坐标所给出的三维变换矩阵中存储着用于变化的一系列数据,在此三维矩阵中,X轴、Y轴、Z轴的数据位于前三列。平移变换的数据在最后一列,缩放变换和旋转变换的数据在前三列中,缩放因子居于前三列的对角线上。
投影变换 由于Flash是一个二维坐标体系,要模拟三维立体效果就需要把三维坐标转换成二维坐标,这样才能在二维坐标系中显示。而要实现这种转换需要借助于投影变换。通过投影方式能将三维空间中的物体映射到二维屏幕,投影模式主要包括透视投影与平行投影俩大类。被透视物体成像的大小是根据物体离所观察视点的远近而定的,透视投影更符合人类真实的视觉感受。
1)透视投影。从三维空间中选取的某个特定的投影中心与所观察物体上的每一个点的连线汇聚成多条射线,这些射线和所选定的投影平面交点的集合就是被观察物体的投影。透视投影的投影中心是在有限远处的。透视投影的特点是:不保持物体相关比例,被透视物体成像的大小是根据物体离所观察视点的远近而定的,透视投影更为符合人类真实的视觉感受,能够生成逼真的感视图,遵循“近大远小”视觉规律。透视投影可以从投影中心、投影平面、投影方向等方面分析。
2)平行投影。保持所观察物体大小比例不发生变化,投影中心距离在无限远处的投影是平行投影。投影的这种特点是三维图形绘制中比例绘图的一个重要方法,所观察物体的精确绘制是通过平行投影获得的。平行投影可以从投影方向、视平面、物体上面的某点投影到视平面上的坐标等几方面进行分析。
纹理映射 将系统存储的纹理模式由纹理空间转换到屏幕空间的物体表面的过程被称为纹理映射。其中纹理模式由一组纹理矩阵数据来表示,还能用来修饰被映射物体的光强度值。在三维图形显示中,纹理映射成为逼真图形绘制的重要组成成分,应用纹理映射可以舍弃物体的表面细节部分,快速绘制出逼真的图形。如绘制一间室内场景时,可以使用一幅拍摄完成的逼真的室内全景照片作为纹理图片贴到一个脚本编译的球形模型上面,这样,一间逼真的室内场景就完成了。如果舍弃纹理映射的简单方法不用,室内的每一面墙都要拆分为一个独立的矩形分开绘制,无疑增加了绘制室内场景的难度系数。
在Flash三维图形显示中,每个像素纹理的宽和高对应一个纹理坐标,这些纹理坐标沿着UV坐标被映射到[0,1]范围内,这个过程叫做UV映射,坐标为UV坐标。当绘制一个多边形时,计算机会计算出三角形中每个顶点的UV坐标,这些坐标决定在渲染时如何将一张纹理应用到多边形上。
参考文献
[1]张学军,唐久磊,魏江明.基于Flash3D的中学化学虚拟实验平台的设计与实现[J].电化教育研究,2014(1):79-84.
[2]孟祥增.三维虚拟场景的创建和立体播放[J].中国电化教育,2011(8):125-128.
[3]李欣.基于Flash的三维WebGIS可视化研究[D].杭州:浙江大学,2012.
[4]钱蔚.支持GPU的Flash3D技术[J].计算机系统应用,
2013(12):219-222.
[5]陈忻.Flash三维游戏开发探索[D].杭州:浙江大学,
2008.endprint