晏卫东,金振中,石伟峰
(1.中国人民解放军92941部队,辽宁 葫芦岛 125001;2.海军驻航天二院军代表室,北京 100854)
视景仿真是仿真动画的高级阶段,也是虚拟现实技术的最重要的表现形式,它是使用户产生身临其境感觉的交互式仿真环境,实现了用户与该环境直接进行自然交互。视景仿真采用计算机图形图像技术,根据仿真的目的,构造仿真对象的三维模型或再现真实的环境,达到非常逼真的仿真效果[1-2]。某型导弹武器系统自引进以来,一直采用常规军事演习的方式来训练部队、体验实战。这种传统的实装训练方式不但耗费大量资金和军用物资,也大大缩短了装备使用寿命,训练安全还难以保证。目前,基于计算机技术和虚拟现实技术的训练模拟器,正朝着高逼真度、互联互通和可扩展性越来越好的方向发展,有效解决了部队武器装备的训练使用需求[3]。
某型导弹武器仿真训练模拟器的总体结构设计,如图1所示。该系统是一个基于以太网构建的分布式系统,由综合控制台、仿实装控制台、软模拟控制台和视景仿真台组成。综合控制台是系统的导演台和时间服务器,并且作为系统接口部分与其他系统互联,以适应攻防联合训练的扩展需要。考虑到研制成本和训练应用效果,武器系统的核心部分仿实装(如导弹发射控制台等),其硬件部分仿制实装,控制软件在功能和用户界面(user interface,UI)上模拟实装,利用I/O控制卡获取操作手的按键和开关输入并进行信号处理。视景仿真控制台通过视景仿真手段构造三维视景环境,为参训人员营造逼真的沉浸效果。其他外围设备,如目标指示台、电磁兼容和电源装置等在软模拟控制台上实现,采用虚拟仪器形式,仿真设备操作面板实现功能。
视景系统的主要性能指标有:视场角、分辨率、光点数、像素填充率、多边形处理能力、纹理内存、图像更新率、显示模式、显示刷新率、传输延迟等。在本仿真训练模拟器设计中,视景系统主要完成以下工作:
(1)数据库
1)场景数据库:包括有细节层次的地形模型和特征地物(海洋、岛屿、码头、建筑、地表、灯光等),采用纹理贴图增加逼真度;
2)通用模型库:用于存储建立地景数据库所需的各种三维物体;
3)活动目标库:用于存储三维运动物体,包括飞机、车辆、船舶、雷达、发射装置、导弹等;
4)纹理库:用于存储建立视景仿真的各种纹理资料;
5)材质库:用于存储建立三维物体的各种材质资料。
(2)效果
增强临场感而模拟的各种特殊效果(烟、火焰、尾迹、爆炸、水花)。
(3)声音模型
为了增强人在环境中的的沉浸感,获得逼真的仿真效果而模拟的各种声音,如发射架开关盖、机械装置锁止、导弹点火等。
(4)大气模拟
用于模拟大气状况和各种天气气象包括雨、雪、雾等。
(5)非实时任务
完成模拟视景的初始化。
图1 总体结构图Fig.1 Diagram of overall structure
(6)实时任务
1)自检及开发:完成系统自监测和开发过程的视景显示;
2)模拟发射及飞行:模拟导弹发射和飞行过程的视景显示;
3)模拟装弹:模拟码头装载导弹的过程;
4)发射过程复现:记录数据回放过程的视景显示;
5)场景数据库管理:实时场景库的调度、管理和修改。
2.2.1 不规则物体的建模
对一些不规则形状的物体建模,有时可能很难描述出它的外形(如弹体、机翼等),这时可先画出2个或多个裁面,然后用softTools把相邻的2个面平滑连接起来,导弹的一个弹翼构建出后可用Mirror工具把另一个弹翼映射出来。另一种对不规则物体的建模方法是先把物体的照片纹理(正向,侧向等)贴在一个面上,然后把这个物体的轮廓勾画出来,用wall工具进行拉伸,再用其他工具进行修正等,最后得到物体的三维模型。图2是某型导弹和发射架的三维模型。
图2 发射装置模型Fig.2 Missile launcher model
2.2.2 碰撞检测
在三维作战场景中,存在众多的虚拟实体,它们之间的碰撞是难免的。如导弹击中目标、车辆遇到障碍物。只有对实体间的相互碰撞进行检测,才能使实体作出正确的响应。Vega中提供了bump,volume等几种碰撞检测的方法,但是这些方法都会占用大量的系统资源。针对这个问题,系统设计了一种简化的碰撞检测方法。战场中的碰撞可以分为运动物体与静止物体的碰撞和运动物体之间的碰撞2种。所以可以采用几何模型的最小包围长方体或球体来进行碰撞检测。碰撞检测一般在主循环中进行,即每一帧都要判断是否有碰撞行为发生。战场中由于运动物体多,地形庞大,碰撞检测的计算量非常巨大,往往会影响到显示的流畅。为了避免大量的运算,系统按照地形的分块,将空间在水平面上划分成5×5个子空间。系统初始化时所有子空间设为无效,即不进行任何碰撞检测。当系统运行中地形分块被调用时,对应的子空间才变为有效,程序只处理处于有效子空间中的碰撞检测。使用这种方法降低了计算机的计算量,使画面显示更为流畅[8]。
2.2.3 LOD 技术
LOD技术是一项既可以满足显示速度要求,又可以自动调节物体细节的技术,景物离得较远时,只提取一些轮廓即可,无法也无需分辨细节,此时可用简单图像代替详细图像,既可节省运算时间,对显示效果也无明显影响,方便了实时显示。景物距视点较近时,使用细节图像。但是使用LOD时,必须预构各种细节等级的模型以供调用,这势必将增大场景数据库,增加了建模的工作量。
2.2.4 外部调用及单元分割技术
在一个复杂的场景中,一般要包括地形模型,各种不动的实体模型和各种运动的实体模型,如果将它们直接合并在一个数据库中无疑会影响仿真的实时性,采用外部调用方法将各物体调到地形场景中,可以使实时性得到大大改善。这种方法在地形建模过程中非常有效,当真实数字地图向三维数据文件转换后,生成有高低起伏的地形时,地形的真实性很大程度上取决于所用多边形的数量,但是多边形的数量过多将严重影响实时性,外部调用则可以使这一矛盾得到缓解。具体的讲,先生成多边形较多的一整块地形模型,再将它分割成若干小单元地形,将这若干小单元地形分别存成不同的地形模型文件,再以外部调用方式分别调入,并重新构成一个完整的地形。这样,当对该地形实时显示时,可以根据视点所能看到的地形区域,动态的选择各单元地形文件的调用,而不需要将整个地形文件全部调用,十分有效地提高了软件运行的实时性[9]。
视景仿真控制台作为某型导弹武器仿真训练模拟器的组成部分,是对模型及实弹发射全过程进行再现;通过视角变换,使操作人员能够更加全面、直观地了解系统各部件的工作原理,增加对导弹实弹射击的感性认识。
针对以上的研究和设计,在某型导弹武器仿真训练模拟器的视景仿真系统的设计过程中,我们采用MultiGen Paradigm公司的GREATOR工具,对视景中的各个实体及环境进行仿真建模,采用场景管理软件 Vega对模型进行驱动验证,最后通过VC++编程实现与训练模拟器的其他分系统的信息交互和控制。图3是视景仿真系统总体结构图。
图3 视景仿真系统总体结构图Fig.3 Overall structure of Scene simulation system
三维场景建模负责完成创建视景仿真中的三维地形、实体模型建模的任务[10]。在本应用中,导弹、舰船等属于实体建模,而海洋、岛屿等属于三维地形建模。而特殊环境模型包括:雨、雪、雾、爆炸、烟火等动态环境模型,其关键在于运动微粒子的动态生成技术,为了给操作手提供不同时间和天气下的训练环境,在本视景系统的设计过程中,采用Vega软件中的Special Effect模块,通过使用各种不同的实时技术,从基于没有纹理的硬件加阴影集合体到借助纹理分页技术的复杂粒子动画,来产生实时应用中的烟火、爆炸等三维特殊效果。也可以通过粒子动画编辑器或API定义创建自己的特殊效果[11]。也可以配置为在某些用户指定的状态下才可见。例如,只有在发射架处于故障状态下,烟火才会在发射架处出现。特殊效果可无限制的重复其动画顺序,如导弹发射时发射管尾端的闪光。另外,结合Vega中的SensorVision模块,可提供在整个红外频谱中的特殊效果的响应显示。
在该仿真训练模拟器中,根据各部件的特点,可分为开关类部件、动作类部件、仪表类部件及指示灯类部件等4类部件:
开关类部件(包括旋钮和按钮)可分为2态开关和3态开关,它们的共同特点是只具备一个自由度,在进行程序设计时,将这3个状态标识为“0”,“1”,“2”,根据鼠标的交互输入设置相应的状态,通过刷新机制完成状态的改变。因此,在开关部件类建模时,要设置部件的DOF属性,通过程序进行驱动。
动作部件类和仪表部件类有相似之处,一般单步操作只涉及1个自由度,它的特殊之处在于需要建立仿真模型仿真其运动的过程。动作类部件包括发射架、测角仪等部件;仪表类部件包括速度表、方位表等仪表,这些部件需要响应鼠标、键盘、其他类部件的动作,以及需要根据实体的状态和仿真模型驱动部件运动。
指示灯类部件有2种状态:亮和灭。主要是利用Vega中的vgAttach模块解决这一问题,首先用vgAddDISAttach-PartMap函数定义一个switch节点与其子节点的映射,然后使用 vgDISAttach或vgDetach函数将其子节点隐藏或显示出来,指示灯的每一个状态都对应一个switch节点,通过该方法就能显示需要的状态。
本系统利用函数库VegaAPI和VC++6.0搭建视景仿真驱动平台。Vega是一个建立虚拟现实和实时仿真的应用软件[12],而 VC++6.0的面向对象编程方法为建造一个性能优良的虚拟环境提供了更强的灵活性。在本系统中,使用Lynx定义了窗口、通道、场景、物体、碰撞检测、环境及环境特效、交互设备等,并对他们进行了初始化,以生成虚拟训练时需要的逼真的地形、地物及天气情况、特效。
当创建基于MFC任务的Vega应用程序时,需要开启一个线程,把Vega着色放进MFC应用程序的View窗口中。整个仿真程序由以下几个步骤组成:系统初始化、文件定义、系统配置和实时刷新显示。框架如下:
本文介绍了实现视景仿真设计中的几个关键技术,用Multigen Creator建立了虚拟战场环境,采用Vega仿真引擎来实现场景驱动,开发了某型导弹武器仿真训练模拟器视景系统,该视景仿真系统具有很强的可扩展性和兼容性。另外,本系统采用的场景实现方法在场景数据的大小、场景的复杂度等方面对于运行环境的依赖性较高。对于画面的流畅性影响较大,还存在一定的局限性,在今后的研制过程中还需要加以改进。
[1] 王小同,杜芳,潘永仁,等.可视化仿真及其应用综述[J].计算机工程,1998,42(8):22-23.
[2] 黄海峰,杨新,等.基于卫星仿真的三通道3维视景系统[J].中国图象图形学报,2005,10(1):122-124.
[3] 曹海旺,黄建国,王新晓.基于HLA的一体化水声对抗仿真系统研究[J].计算机仿真,2005,22(1):54-57.
[4] 林亦.一种新的视景仿真软件体系结构[J].西安工业大学学报,2008,20(2):13-14.
[5] 邓辉宇,缪治.三维视景仿真中的主辅式多视口结构及其实现[J].指挥控制与仿真,2007,23(3):240-310.
[6] 王蒙,夏青.基于PC网络的多通道视景仿真技术[J].测绘学院学报,2005,29(3):108-113.
[7] 吕品,张金芳.分布式仿真系统的多通道视景生成[J].系统仿真学报,2007,19(6):1291-1295.
[8] CHEN Y Q,CHEN H,DOUGLAS W.Software Environments for Cluster based Display Systems[C]∥IEEE International Symposium on Cluster Computing and the Grid,2001.USA:IEEE,2001:202-210.
[9] 林柏纬,潘志庚,杨建,等.基于PC架构的高性能CAVE系统[J].计算机辅助设计与图形学学报,2003,15(6):725-729.
[10] 张茂军.虚拟显示现实系统[M].北京:科学出版社,2001:34-35.
[11] 彭国圣,苏洪潮,李续武.基于Vega的某空地导弹视景技术研究[J].战术导弹技术,2003,37(6):20-21.
[12] 龚卓蓉,朱衡君.Vega程序设计[M].北京:国防工业出版社,2002:72-74.