- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于Vega的虚拟战场对抗仿真应用研究
1 引言
数字化战场[1]是继"信息战"概念出现之后, 作为信息战建设的初期阶段而提出的一种新的战场形态,其本质是将数字化技术引入部队和战场,将所有相关功能系统通过网络联结成一个有机整体,以达到整个作战范围内的信息资源共享,最终实现部队和战场的指挥、控制、通信和情报(即C3I)高度一体化
虚拟战场环境[3]是战场可视化仿真的运行基础,虚拟战场环境的生成主要包括场景建模和场景驱动两个步骤。虚拟战场环境主要由战场地形模型、战场地物模型、武器模型、士兵模型等三维模型组成,可以使用以MultiGen Creator[4]为代表的仿真建模软件包来完成,虚拟场景驱动则可以通过特定的渲染引擎来实现,常用的渲染引擎有Vega、Performer、 OpenGVS等。
本文将要主要讨论的Vega是一套完整地用于开发交互式、可视化仿真应用的软件平台和工具集,它最基本的功能就是驱动、控制、管理虚拟场景并能够方便的实现大量特殊视觉和声音效果。
需要指出的是,本文实现的虚拟战场仿真离严格意义上的可视化战场还有一定的距离,下一步的工作一方面是对虚拟战场环境继续丰富和完善,添加虚拟士兵等更复杂的仿真实体,加入逼真的三维声场,提高参与者的沉浸感,另一方面还要进一步研究虚拟战场环境仿真的分布式网络化应用和对各种底层信息数据库的集成等,最终形成一个完整的数字化战场环境系统。
2 仿真目标和解决方案
确定仿真目标是仿真应用的首要环节,也是进行仿真应用程序开发的基础。本文中我们通过模拟发生在一个虚拟小镇上假想的军事武装对抗过程,详细讨论基于Vega的军事仿真应用方法、实现及其关键技术。假想的虚拟作战对抗仿真过程大致如下:一架E2C预警机在小镇高空中盘旋,执行日常的侦察预警任务。一辆不明身份的M1主战坦克悄悄的从边境潜入小镇,不久便被E2C预警机发现并锁定目标,通知驻守在小镇中的阿帕齐武装直升机前往堵截,并发射激光制导导弹将其摧毁。预警机左翼发动机突然出现机械故障,起火燃烧,最终落地坠毁并引发了剧烈的爆炸,随后直升机赶往坠毁地点进行救援。
通过对预定仿真目标的分析可知,要实现设想的仿真效果需要分别代表E2C预警侦察机、M1主战坦克、阿帕齐武装直升机、制导导弹等虚拟战场环境中的动态元素模型,同时还需要用于模拟旋转的机翼、发动机和导弹等产生的尾迹、坦克和直升机发生的爆炸、燃烧、烟雾等的特殊效果。虚拟战场环境的三维模型数据库我们使用了预先创建好的OpenFlight模型,E2C预警机的运动完全由仿真应用程序控制,坦克入侵路线可以使用Vega的路径工具事先定义导航路径来控制,而武装直升机的起降、导弹的发射和预警机的失事则通过仿真应用程序与用户通过鼠标和键盘来交互控制。由于导弹发射和预警机坠落时间的不确定性,导弹的运动轨迹和直升机的救援路线则需要在仿真过程中实时的生成。为了更好的反映当前的仿真应用运行情况和虚拟战场态势,仿真应用过程中相关的战场信息需要实时的显示在屏幕上。
运行基于Vega的仿真应用程序需要在初始化阶段设置大量参数的初始值,包括虚拟场景内各种模型对象和角色对象的起始状态和位置、虚拟场景内的灯光和环境的设置、硬件平台的属性配置等,在运行阶段也要保持或更新大量的参数值。Vega将这些数据信息储存为ADF格式的应用程序定义文件,可以使用Vega提供的LynX[5]图形界面ADF配置和预览工具,初始化虚拟场景中的元素属性及其相互关系。
3 系统实现关键技术
3.1 自然环境模拟
自然环境对战场态势发展和对战双方的作战指挥等有着重要的影响,虚拟战场场景中的自然环境表达直接关系到仿真应用的真实性和可信度。为了能够逼真的模拟出自然界中的大气层环境,Vega 使用了如图1所示的七层结构的大气层模拟模型,同时还提供了多种可由参数控制的自然环境效果,我们可以直接在相应的LynX面板中对包括天空颜色、雾模型、云彩模型、环境光等在内的多种元素进行预设,在应用程序执行的过程中还可以通过调用相应的API函数[6]对自然环境的各种参数进行交互式设置,实时改变虚拟战场的自然环境效果,从而达到检验不同自然条件下作战效能之目的。
3.2 动态视点控制
视点是仿真系统用户观察虚拟场景的唯一接口,包含了对视点进行抽象的观察者(Vega Observer)是用户在虚拟场景中的替身,观察者的位置和姿态决定了整个虚拟战场环境可以提供给用户的信息。一方面要纵观作战战场全局给用户特别是指战员提供一个视野宽广的虚拟环境,另一方面又要考虑能够以与动态仿真实体相一致的视角来观察虚拟作战环境,从而获得更好的沉浸感。一般而言,虚拟战场环境范围较大、仿真实体数量多且运动状态复杂多变,所以视点应该能够尽可能的进行多角度、多模式观察,可以采用多观察者方案,即一个主要观察者和若干个辅助观察者。我们在应用程序中使用了Vega基本模块提供的形式多样的观察者定位方式,包括跟随、绑定、旋转、固定路径、观望等多种模式及其混合模式,使用者可以通过弹出菜单或快捷键在多个观察者之间进行实时切换和组合,以满足使用者的不同需求。表1中给出了不同状态下主要观察者的定位方式:
3.3 实时路径导航
路径导航在战场对抗仿真中有着大量的应用,对战前期的战斗部队、坦克编队等的行进通常是沿着固定或者相对固定的路线进行进的,对战过程中的以制导导弹为代表的火炮武器炮弹在发射后也都会按照一定的路径进行导航的。导航路径的生成有两种方式,一种是非实时的,即使用路径工具(PathTool)预先定义,另一种则是实时的生成导航路径。以导弹飞行路径生成为例,由于直升机运动的不确定性,在发射导弹的位置和时间是随机的,不可能事先预知导弹的运动轨迹,所以必须在仿真应用程序中实时的生成导航路径,图2 是生成导航飞行路径的程序流程图:
3.4 战场特殊效果
在虚拟战场模拟仿真应用中,经常需要模拟出一些特殊的三维视觉效果来增强整个虚拟战场环境的感染力和真实性,比如各种火炮武器的开火效果、各种炸弹的爆炸效果、直升机螺旋桨的旋转效果、导弹发射后飞行时产生的尾气痕迹等。通常这些效果很难用传统的多边形建模技术来实现,一般的解决方案是应用高级的纹理技术或者使用复杂的粒子系统[7]。粒子系统的基本思想是,采用大量的、具有一定生命和各种属性的微小粒子图元作为基本元素来描述不规则对象。粒子系统中的每一个粒子都具有形状、大小、颜色、透明度、运动速度、运动方向、生命周期等相关的属性。一般而言,创建特定的粒子系统是一个比较复杂的过程,一方面要考虑真实的物理模型和相应的动力学规律,另一方面需要对粒子的大量属性分别进行设置。Vega特殊效果模拟模块[8]预制了包括爆炸、烟雾、导弹尾迹在内的多种实时三维特殊效果,提供了扩展的粒子系统参数设置面板,可自定义的粒子参数包括粒子生命周期、粒子个数、粒子源及其发射模式、粒子速度分布和各种速度矢量等。
战场特效的管理和控制应该符合虚拟战斗态势的发展,所以一般只在特效设置面板中进行初始参数设置但并不启用它们,而是在仿真应用运行的过程中根据实际情况,通过相应的API函数进行特效控制和参数调整。下面是预警机发动机失效时,应用程序控制特殊效果的部分代码:
vgProp(fx_trail, VGFX_DURATION, vgGetTime()-vgGetFxTime(fx_trail1,VGFX_STARTTIME) +1.0 ); // 设置预警机引擎尾气特效的持续时间
vgProp( fx_airhit, VGFX_STATE, VG_ON ); // 启用预警机引擎闪光特效
vgProp( fx_engburn, VGFX_STATE, VG_ON ); // 启用预警机引擎燃烧特效
vgProp( fx_engsmoke, VGFX_STATE, VG_ON ); // 启用预警机引擎冒烟特效
vgProp( fx_engburn, VGFX_DURATION, VGFX_ALWAYS ); // 设置燃烧特效持续时间
vgProp( fx_engsmoke, VGFX_DURATION, VGFX_ALWAYS ); // 设置冒烟特效持续时间
vgFxTime( fx_airhit, VGFX_STARTTIME, VGFX_NOW ); // 立即执行闪光特效
vgFxTime( fx_engburn, VGFX_STARTTIME, VGFX_NOW ); // 立即执行燃烧特效
vgFxTime( fx_engsmoke, VGFX_STARTTIME, VGFX_NOW ); // 立即执行冒烟特效
4 仿真结果
本文实现的虚拟战场对抗仿真应用基于NT平台开发,使用Visual C++6编译环境,在P4 2.4G处理器、512M内存、GeForceFX 5700图形卡的硬件配置条件下可以流畅的运行,图3-5为仿真应用程序运行过程中的屏幕截图。
图3 多观察者模式下的仿真效果
在多观察者模式下,用户可以同时以多种视角来观察虚拟战场,如图3所示:位于屏幕左下角的通道以俯视观察者的视角显示,可以纵观战场全局态势,对战双方在虚拟战场中所处的位置,也会在该通道中分别用红色和蓝色实时的标识出来。屏幕的右侧则是一系列辅助观察者分别用于观察特定的仿真实体,本文实现的系统可支持最多同时使用五个辅助观察者,当然也可以是它们的任意数量的组合。
图4 侦察机引擎发生故障
5 结语
在未来战争的数字化战场,无论是军事训练、战术演练,还是作战指挥或者战术论证评估,都需要虚拟战场可视化仿真来做支撑和保障。本文探讨了基于Vege的虚拟战场可视化仿真应用的方法,重点讨论了自然环境模拟、动态视点控制、实时路径导航和基于粒子系统的特殊效果等虚拟战场环境生成中的关键问题。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...