基于Vega的虚拟战场对抗仿真应用研究

时间:2011-08-08来源:网络

 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的虚拟战场可视化仿真应用的方法,重点讨论了自然环境模拟、动态视点控制、实时路径导航和基于粒子系统的特殊效果等虚拟战场环境生成中的关键问题。

1 2

关键词: Vega 虚拟战场 仿真 应用研究

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版