基于Flash实现Skyline的飞行座舱仪表显示
2013-04-25全吉成袁昱纬
肖 瑞,全吉成,袁昱纬
(空军航空大学 特种专业系,吉林 长春130022)
目前,三维可视化技术在各个领域应用广泛。Skyline作为三维地理信息系统平台,体现出高效的快速索引、三维模型加载、对复杂的地形模型的支持能力等特点,在国内市场上地位越来越明显。因此,如何对Skyline平台进行二次开发以满足各种需求。
据调查显示,信息80%是通过视觉获取的,因此视觉效果作为评价标准,具有以真实地景、地理空间位置为平台的飞行模拟,才能对飞行员体验飞行、对飞行的认知起到帮助,而Skyline能满足平台需要,为用户提供真实的地景和地理空间,因此基于Skyline开发的飞行模拟具有重要意义。飞行模拟的一个重要方面就是飞机的座舱仪表显示系统,它能让飞行员体会到从第一视角观察自己的飞行状态及周围的地景变化。为满足人们体验模拟飞行的视觉效果,文中基于实现Skyline模拟飞行的前提下,对如何实现座舱仪表的显示进行了探讨,并得出如何高效简单地解决座舱仪表显示的问题。目前仪表显示可以通过OpenGL、DirectX和Flash实现,文中给出用Flash实现Skyline飞行座舱仪表显示的方法,该方法高效、快捷。
1 Skyline和Flash简介
1.1 Skyline
Skyline是独立于硬件之外、多平台、多功能的一套基于网络的三维地理信息系统平台。用户可以利用航空和卫星遥感影像、地形高程数据和其他的二、三维地理空间和属性数据,创建自定义的虚拟现实三维可视化场景,进行浏览、查询、分析和网络发布。它能够允许用户快速融合数据、更新数据库,并且有效地支持大型数据库和实时信息流通讯技术,此系统还能实时地展现给用户3D地理空间影像,并开放所有的API,无论在网络环境还是单机应用,用户都能根据自身的业务需求开发定制功能,建立个性化的三维地理信息系统。文中基于Skyline提供的开放API实现模拟飞行功能的基础上,进行再次开发,实现座舱仪表的显示。
1.2 Flash
Flash是重要的动画制作工具,它是基于矢量的图形系统,各元素均为矢量,只用少量的向量数据就可以描述一个复杂的对象,占用的存储空间仅为位图的几千分之一,同时矢量图像可以做到真正的无级放大,这样图像始终可以完全显示,并且不会降低画面质量。在Flash中,一般动画都是依靠关键帧实现,方便快捷,用户只需给出一个对象的几个关键动作,生成关键帧,系统就会根据需要在各个关键帧之间自动插入平滑的动画。Flash使用了“层”的概念,不同的角色可以出现在不同的层面上,相互掩映,可以单独对某一层面进行操作,并且可以看见效果。文中根据Flash的这些特性,实现了座舱仪表的显示。
2 座舱仪表显示功能实现
2.1 座舱仪表制作
为了达到座舱仪表显示更为逼真的目的,采用3D MAX制作。3D MAX是集各项3D功能为一身的软件,建模、渲染、材质、动作等使得建模更加精致、逼真。建模完成的效果如图1所示,该图作为Skyline窗口的背景贴图。
利用3D MAX的裁剪渲染功能,将图1中的每一个仪表(除地平仪以外)及仪表指针单独渲染输出保存图像如图2所示,用于之后加入到Flash场景中制作动画。由于地平仪中的圆柱是随着飞机俯仰角的变化而转动,在Flash中实现较困难,因此将其独立出来,放在3D MAX中制作动画,设置旋转一圈为720帧,然后再通过裁剪渲染,按每帧输出得到720张图像并保存。
图1 座舱仪表建模图
在新建的Flash工程中,将仪表图像及其相应的指针分层放入场景,并按照指针的指示设定足够的帧数和关键帧制作动画输出保存为*.swf文件。其中,Flash支持图片的批量加载,并自动将每幅图像按编号顺序添加为关键帧,这使得地平仪的制作简单化。制作效果图如图3所示。
2.2 仪表动态显示实现
以上制作的仪表必须通过数据的驱动才能转动,数据来自于飞行模拟。本文的仪表动态显示是通过C#编程语言实现,通过建立同一命名管道实现飞机参数与仪表指针帧数之间的通信,具体实现过程如下:
(1)建立Myfly和Flash两个工程文件。Myfly工程用于模拟飞行并将飞行参数输出;Flash工程用于加载制作的*.swf文件,并匹配飞行参数与指针帧数之间的关系。
(2)建立同一命名管道。Myfly中的管道作为客户端,用于发送带一定格式的数据;Flash中的管道作为服务器端,用于接受数据并按数据格式解码。
(3)运行两个工程文件,实现仪表的动态显示。其显示结果如图4所示。
图4 飞行显示效果
可以看到飞行的场景为Skyline提供的海量遥感影像,座舱为3D MAX制作的座舱,仪表为Flash动画,在飞行参数的驱使下,指针发生了偏转,实现了座舱仪表的动态显示。而图5为机舱照片直接粘贴,仪表都是静止的,而且显示效果不好,相比之下,通过3D MAX和Flash相结合制作的飞行座舱仪表显示取得了良好的效果。
图5 其他座舱仪表显示
3 结束语
论述了基于Flash实现Skyline的飞行座舱仪表显示,该实现使得飞行模拟更加逼真形象。与其他仪表显示相比,显示更精致;优点是较好地使Skyline的开发平台与Flash相结合,实现了不同工程程序间的相互通信,对Skyline的二次开发能力进行了补充。
[1] 王娟.飞行仿真中虚拟航空仪表显示系统的研究和实现[D].吉林:吉林大学,2005.
[2] 东方道迩.SkylineGlobe+6技术白皮书[M].北京:北京东方道迩信息技术股份有限公司,2010.
[3] 吴东岩.飞行模拟器座舱仪表驱动的设计与应用[D].吉林:吉林大学,2006.
[4] 李俊涛,李学仁,李永宾.基于DirectX的虚拟仪表技术在飞行仿真中的应用[J].空军工程大学学报,2004,5(6):1-4.
[5] 王述运,林亚军,吕明,等.基于OpenGL的飞行模拟器图形仪表设计[J].电脑编程技巧与维护,2010,10(8):1-3.