飞行器虚拟现实仿真的研究
来源:第三维度
作者:王昊鹏(空军航空大学,130022,吉林长春)
E-mail:wingrocc@email.jlu.edu.cn
摘 要:随着了学技术和Internet的发展,以VRML(虚拟现实建模语言)为代表的虚拟现实技术正在日益受到广泛的重视。本文讨论了利用VRML进行飞行器三维构型的方法,使其在因特网浏览器进行三维全景浏览,从而实现飞行人员针对飞行器的动态、交互的仿真训练。
1.引 言
虚拟现实又称“灵境”技术,它的提出可以追溯到二十世纪八十年代。虚拟现实技术综合了计算机图形技术、计算机仿真技术、遥感技术和传感技术等诸多领域,使人们可以进入一个计算机生成的逼真的三维虚拟环境中。
二十世纪的今天,虚拟现实技术已经渗透到军事生活的方方面面,并在军事领域中发挥着月来越大的作用[1]。如:高新技术武器的研制、开发、论证、评估及预测,虚拟军事地图,虚拟军事医学、救治,虚拟远程控制机械军事装备等都是虚拟现实技术在军事中的典型应用。特别是虚拟现实技术在高新技术武器(如飞行器、导弹等)的研制、开发及讨论方面的应用更是前景广阔。
虚拟现实建模语言(Virtual Reality Modeling Language,简称VRML)是一种基于WWW的具有一定规范的描述性格式语言,它吸取了面向对象的优点,可以生成、修饰三维实体对象[2]。VRML改变了原来WWW的简单、交互性差的弱点,将人们的运动行为作为浏览的主体,提供给用户虚拟的三维空间。本文将以VRML技术为基础,研究并实证对飞行器进行三维仿真构型的方法[4]。
2.VRML实现三维仿真的工作方式
1996年8月发布的VRML 2.0增强了交互性、动画功能和编程功能等。VRML 2.0的主要功能大体可以分为以下两大部分:
(1)创建、修饰三维实体;
(2)对模型对象编程与外部进行消息交递以实现交互功能。
根据VRML 97规范,目前VRML 2.0支持三种水平上的编程方式:第一种是利用内嵌的VRML Script接口节点中的描述性语言进行仿真建模;第二种方式是利用JAVA Script动态生成VRML三维场景和实体对象(仿真的事件处理仍然用VRML Script接口节点完成);第三种方式是通过VRML 2.0的外部编程接口API进行开发,通过发送或者读取三维场景中的节点的事件消息,使VRML 2.0构建的虚拟空间与外部网络空间上的其他对象沟通,进而提高VRML的可用性[3]。
利用VRML构建的三维仿真场景和实体以VRML文件(*.WRL)形式存在。VRML文件使用ASCII或UTF8字符,与其他技术相比,其占用的存储空间很小,这不仅大大加快了3D场景和实体在网络上的传输速度,而且使用户在PC机上就可以方便、快捷地浏览和研究3D场景,实现跨平台发布和多用户网络间交互操作。VRML的工作流程如图1所示。
图1 VRML的工作流程示意图
3.飞行器的三维虚拟模型的建立
对于简单的三维实体,VRML支持多种规则几何体结构的构型,包括立方体、圆锥体、圆柱体和球体等。这些规则几何体可以由VRML的geometry节点中的基本几何节点box、cone、sphere、cylinder等实现。利用VRML中的Extrusion节点,可以创作较为复杂的三维实体,其变化的弹性较大,控制Extrusion节点外形的字段分别是crossSection和spine。crossSection字段控制断面形状,形成二维轮廓。spine字段是一个三维路径,通过crossSection定义好的断面、面的中心,沿着此路径延伸成三维实体。crossSection字段和spine字段在三维构型中的实现过程如图2所示。
图2 crossSection字段和spine字段三维构型实现过程
3.1 飞行器虚拟模型的建立
飞行器是典型的复杂三维仿真对象,其构型不只是简单的三维几何体。因此,单纯的使用代码来建模是件十分繁杂的工作。所以,针对飞行器的造型,通常需要借助一些可视化三维造型软件,如:3D Studio MAX。3DS MAX具有即时修改的特点,而且其模型函数丰富,贴图纹理多、模型表面处理方式多样。利用3DS MAX对飞行器的外部及内部进行建模后,将建模结果输出为VRML文件或者作为VRML文件的内嵌对象,然后根据细节层次的选择与生成算法进行引用。具体的建模方法是:启动3DS MAX,在“创建”下拉菜单中进入“辅助物”次级菜单,在VRML 97中提供了12种VRML造型方案。根据提供的造型方案对飞行器进行三维仿真建模,利用3DS MAX对飞行器建模如图3所示。仿真建模完成后,在“文件”菜单中选择“输出”,将模型以VRML 97文件(即*.WRL)保存。
图3 利用3DS MAX对飞行器建模
3.2 VRML构造三维场景
在VRML中可以通过Group节点将一组相关的节点组合在一起,这样的一组节点在虚拟世界中通常是某个特定的空间场景。除夕之外,在VRML中还包括以下编组节点,它们分别是:Switch转换编组节点、BillBoard布告牌编组节点、Transform转换编组节点、LOD转换编组节点、Anchor读取文件编组节点、Inline读取文件编组节点和Collision编组节点。这些节点汇集在一起,即可建立三维仿真飞行器所在的虚拟场景空间。其基本的语法形式如下:
Group {
addChildren MFNode eventIn//输入接口,将指定的节点加到组的了节点列表中
removeChildren MFNode eventIn//输入接口,将指定节点从组的子节点列表中删除
children MFNode exposedField []//包含了该Group节点的子节点
bboxCenter SFVect3f field 0 0 0//包围以组子节点的包围盒的中心
bboxSize SFVect3f field -1 -1 -1//包围该组子节点的包围众在x、y、z方向的大小
}
根据以上语法形式创建的虚拟场景空间模拟效果如图4所示。
图4 虚拟场景空间模拟效果
3.3 与虚拟场景交互
利用VRML建立的三维仿真实体具有极强的真实感,而真实性的一个重要方法就是要允许用户和三维对象进行直接的交互。例如:用户对飞行器的仿真模型的动作方式不只是停留在“静观”上,而是要通过控制设备对三维仿真模型的各个角度、部件,甚至内部结构进行实时的动态交互。实现交互的一个基本方法就是使用VRML中的传感器节点。
所谓传感器节点,就是指一些能够感知用户各种操作的节点。VRML中提供的传感器节点包括:时间传感器Time Sensor、触摸传感器Touch Sensor、鼠标响应传感器Cylinder Sensor、鼠标运动转化传感器Plane Sensor、鼠标单击转化传感器Sphere Sensor、感知用户活动传感器Proximity Sensor和检测用户视野传感器Visibility Sensor。传感器节点的基本语法如下:
Sensor
{
Field Value //域值 Field Type //域值类型 Field Show //域值说明
}
4.应用举例
基于某战斗机模型资料,结合VRML、3DS MAX 6.0和JAVA Script等技术,可实现该飞行器虚拟现实仿真模型。模型所在VRML文件可以基于IE、NetScape、Maxthon浏览器进行全景的网上漫游。图5和图6是飞行器的虚拟现实仿真模型的实例。其中,图5是该飞行器模型局部浏览效果;图6是该飞行器虚拟现实仿真模型的全景浏览效果。
图5 飞行器模型局部浏览效果
5.结束语
本文通过虚拟现实技术的分析、讨论,提出了利用VRML语言对飞行器进行可视化仿真及虚拟现实仿真的实现方法。根据VRML语言在开发三维仿真方面的强大优势、虚拟现实技术本身的特点和未来战争的发展趋势都决定了基于VRML的虚拟现实技术在军事上会有更广阔的前途。
参考文献
[1] 栾悉道.谢毓湘.吴玲达.宋玉强.农海斌.虚拟现实技术在军事中的新应用 [J].系统仿真学报.2003年04期.604~607.
[2] 崔汉国.基于VRML的分布式装备维修仿真训练系统 [J].计算机仿真.2003年03期.15~17.
[3] 王飞.杨湘龙.冯允成.虚拟现实仿真技术及在飞机装配中的应用 [J].北京航空航天大学学报.2001年02期.213~216.
[4] 王昊鹏.基于VRML的三维仿真建模算法研究 [J].空军航空大学学报.2005年02期.第2卷.总第3期.41~44.
[5] 马登武.吴国良.虚拟现实技术在飞行仿真中的应用 [J].现代防御技术.2000年06期.58~60.
[6] Seongah Chin.Advancing Fog Effect on VRML and X3D Using Local Fog Density [J].潍坊学院学报.2004年04期.
[7] Mark Forster.Alan Heath.Muhammad Afzal.Application of distance geometry to 3D visualization of sequence relationships.Bioinformatics.1999,89-90.