APP下载

战车三维视景仿真系统的设计与实现

2012-11-22陈念年

火炮发射与控制学报 2012年3期
关键词:视景碰撞检测战车

杨 程,范 勇,刘 涛,陈念年

(1.西南科技大学 计算机科学与技术学院,四川 绵阳 621010;2.华北电力大学 控制与计算机工程学院,北京 102206)

三维视景仿真系统对于车辆动力学仿真系统、驾驶模拟系统的研制和使用具有非常重要的作用[1-2];目前军用战车的三维视景仿真系统,一般有两种开发模式:一种是基于专用商业化三维视景仿真开发平台(如Multigen Creator/Vega Prime,Quest3D等)进行二次开发[3],这种开发方式成本相当高昂,内部重要功能模块接口一般都不对用户开放,很难对系统功能进行扩展和增强,限制了系统的适应性和灵活性;另一种则是采用基于底层的3D图形接口(OpenGL或DirectX 3D)[4],从最基础的底层功能做起,逐步搭建实现整个三维视景渲染引擎,这种开发模式开发成本固然较低,然而开发难度极大,复杂性高,往往投入极大的人力成本,最终研制的视景仿真效果却无法与前述专业级仿真平台的产品相提并论,差距较大。因此,寻求一种在性能和价格间达到比较理想的平衡并且具备较低研制风险的战车视景仿真系统研制手段就显得很有意义。

面向对象的图像渲染引擎OGRE(Objecte-oriented Graphics Rendering Engine),开源框架的出现为实现这一技术目标提供了可能。目前最新版本(1.7.1版)的OGRE不但可适应于商业游戏娱乐开发,也可应用于工业或国防领域内的三维仿真[5]。国内已有过将OGRE同ODE物理引擎结合起来应用于民用汽车模拟器研制的成功范例[6],但应用于战车视景仿真的文献还未见有过。本文所做的工作正是基于OGRE基础上设计并实现了一套战车视景仿真软件系统。

1 总体设计

战车三维视景仿真系统的体系结构如图1所示。

系统主要的功能子系统分别为:

1)3D渲染引擎子系统:在OGRE基础之上进行开发实现,3D场景的实时渲染,材质和灯光,摄像机运动,以及动画管理都在本子系统实现。

2)人机界面交互子系统:作为渲染引擎的外容器框架,给用户提供人机交互的手段,用户可以通过键盘,鼠标,游戏杆对战车进行控制操纵,系统的参数设置也通过本子系统进行;既支持第一人称视角的三维虚拟现实操作方式,也支持传统的Windows GUI(菜单、对话框)交互操作方式。

3)模型导入管理子系统:提供导入和管理系统所需各类数据的能力,既包括真实高程数据格式的地形模型数据,也包括3D场景内的实体模型数据,如战车、建筑物、植被和天空等。

4)场景漫游控制子系统:支持3D场景内自由漫游的控制能力,提供多视角切换能力,标准设置条件下支持第一视角、第三视角、攻击视角以及摄像机自由视角等多个操作视角。

5)碰撞检测处理子系统:提供具备真实物理动力学特性的实体碰撞检测能力,包括运动战车与地面(物)之间,发射炮弹与地面(物)的面片级精细碰撞检测。

6)战车虚拟仪表子系统:支持以虚拟仪表方式对战车物理运动参数的实时检测能力,该子系统同样也与物理动力学引擎进行整合,为真实车体状态仿真或测量提供了入口支持。

7)粒子声音特效子系统:借助OGRE强大的粒子生成脚本系统,支持包括烟雾、火焰、云雾和流体等多种视景粒子效果;通过FMOD插件实现了声音特效的集成,提高了系统的仿真度和真实沉浸感。

2 关键技术设计与实现

2.1 真实感三维地形数据的载入与渲染

地形表面的渲染绘制是三维视景仿真系统的重要环节。依赖于给定区域的数字高程模型(Digital Elevation Model, DEM)来构造地形,在DEM基础上直接建立的网格模型通常包含大量的三角形,往往不能满足对交互显示的实时性要求[7-8]。为确保实时渲染的效率,对于地形的处理有种方法,基于连续层次细节(LOD)技术是一种比较有效的技术。战车三维视景仿真系统利用地形编辑软件FreeWorld3D构造具有不同细节层次水平的地形网格模型,导出为OGRE能够使用的*.raw文件(保存地形高程数据)及与其匹配的*.material文件(保存地表纹理)。通过模型导入管理子系统将地形数据文件在运行时载入内存,OGRE本身直接提供对模型的LOD处理能力,也能处理光照和纹理等渲染细节。

2.2 多视角场景漫游

为便于用户对视景环境与实体进行全方位观察与感知,视景仿真系统一般必须提供多视角切换和场景自由漫游的能力。战车三维视景仿真系统实现了第一视角、第三视角、攻击视角以及摄像机自由视角等多个操作视角。多个视角由场景 漫游控制子系统统一管理,具体做法是采用将摄像机实体挂接在场景节点上,通过控制操作场景节点的平移、旋转,间接实现对摄像机的控制。将第一视角、第三视角、攻击视角以及自由视角等多个摄像机实体挂接在坦克炮塔场景节点上,即作为炮塔场景节点的子节点,跟随坦克炮塔的移动而移动。

2.3 基于物理引擎ODE的精细碰撞检测技术

对于存在运动实体的三维场景,具备符合物理动力学规律的碰撞检测机制使系统不但具备很强的真实感,而且可被应用于真实车辆运行或动力学仿真之中。OGRE自身就提供基于AABB的包围盒方式碰撞检测机制[9],对于检测要求不高的情形,这种方式也已足够,然而当对较复杂外形实体间进行碰撞检测时,这种方式就显得过于粗放,误差较大,带来的失真感也很大,容易出现物体的交叉渗入或不合理阻隔,为此,三维视景系统需要一种基于面片级的精细碰撞检测机制。

开源物理动力学引擎ODE(Open Dynamic Engine) 是一个免费的具有工业品质的刚体动力学的库,其内部封装的第三方库OPCODE(Optimized Collision Detection)能够实现精确到面片级别的碰撞检测,可以满足上述对碰撞检测精确程度的要求。ODE物理引擎是战车三维视景仿真系统的理想选择。

在系统实现中,若将实体绑定在场景节点上来进行控制,用户无法直接对场景的实体进行操作,即便通过射线查询也只能获得射线穿过的实体质心坐标,无法得到射线在实体物面穿入点的坐标。因此依靠OGRE无法获得轨迹与地面碰撞点的精确坐标值,对于火炮弹丸的射击着地,就无法得到真实的模拟效果。借助开源第三方库OGREODE,便能够在利用OGRE开发系统时,使用ODE提供的刚体动力学计算模型,通过将整个场景中参与碰撞检测的所有物理实体放置在同一个预定义的刚体碰撞空间中,系统按照预先定义的各个碰撞空间,仅对属于同一个碰撞空间的物理实体进行碰撞检测处理,检测的过程涉及到所有物理实体的全部三角面片,这样不仅提高了碰撞检测的执行效率,而且实现了精细到面片级别的检测,能够获得碰撞发生位置的精确坐标值。当碰撞发生时,发生碰撞的刚体将返回一个碰撞点信息给碰撞检测回调函数,其中包含了碰撞发生的精确的空间坐标值数据。战车三维视景仿真系统依此实现了坦克炮弹击发坠地的精细碰撞检测[10]。

2.4 三维场景大规模草本植被生成与渲染

为进一步逼真模拟真实的战场环境,不仅需要有高山、峡谷等地貌地形,还需要在地表设置大量的树木草丛等植被元素。然而,实时渲染大量的植被仍是图形学领域的一大挑战。目前较理想的一种解决方法是为每棵树自动生成多细节层次的LOD模型,然后根据树木距离视点的距离选择对不同细节层次的树木进行渲染[11-12]。基于OGRE的第三方库PagedGeometry通过引入LOD的思想实现了大规模植被渲染功能。它对大区域海量网格的渲染提供优化策略,非常适合于稠密的森林和室外场景渲染。通过对场景中所有的几何实体进行分页管理,只有当实体出现在摄像机视锥体内部,需要在显示设备上渲染时,才将其载入内存。这种处理方式同单独、逐一的处理场景中每个mesh实体的方法相比较渲染效率提高了100多倍[13]。这使得在场景地形无限大时,进行草本植物渲染仍然能够获得很高的效率。战车三维视景仿真系统将PagedGeometry成功地应用于战车仿真视景中广阔的地形地表之上,实现了大规模草本植物的分页调度及实时渲染。

2.5 粒子与声音特效

具备强烈真实感与沉浸感的仿真系统,视觉特效与声音特效是必不可少的。如,坦克开火时的烟雾特效,炮弹击中物体发生爆炸时的光与烟,自然环境中存在的雨雪天气等。借助于OGRE提供的强大的粒子脚本系统,足以实现多种视觉特效。战车三维视景仿真系统利用OGRE提供的粒子系统实现了几种典型的粒子特效。具体的做法如下:首先编写代表爆炸粒子、白色烟雾粒子和灰色烟雾粒子的粒子脚本“* .particle”,并设定各个粒子系统的作用范围、粒子数量、发射周期、生命周期以及粒子运动方向等参数;然后在坦克炮弹发射场景节点上绑定这三个粒子系统,并设定此场景节点初始为不可见;当碰撞发生时,迅速将粒子系统设为可见即实现炮弹爆炸的粒子特效。炮弹发射时的烟雾特效,以及雨雪等天气特效的实现方式与此类似。

作为一款图形渲染引擎,OGRE并未提供声音引擎供用户使用。为模拟战车视景仿真中的声音效果,本系统中采用简单通用的FMOD音频引擎来处理场景中的声音元素。FMOD引擎具有读取声音文件,背景播放,混音和设置各种环境音效的功能。本系统中对坦克引擎声音的播放使用了FMOD中的3D Sound。在创建Sound对象时给出FMOD_3D属性,表明是3D Sound。然后在设定声音属性时,使用坦克节点的位置作为声源的位置,这样引擎发声就跟随坦克移动了。坦克开火时的声音、炮弹爆炸的声音以及雨雪天气里的雷声等均依此方法实现。

3 测试及分析

3.1 测试环境

测试平台系统的硬件配置为:Pentuim(R) Dual-Core E5200,2.0G RAM,Nvidia Geforce GTS 250;软件环境为:Windows XP,VS2008,OGRE,DirectX9.0C。

3.2 运行效果

图2和图3分别显示了以第1人称和第3人称视角进行观测的战车系统,同时也可以看到地面大规模草本植物的生成效果。

图4展示了战车发射炮弹时弹丸坠落点的碰撞检测与粒子效果,结合了ODE的OGRE引擎能够在坠地点精确地引发爆炸粒子效果,系统对于烟雾、云雾以及流体也能有效实现。

3.3 测试结果

用户可以通过键盘和鼠标对战车的运动、转向和加速等动力特性进行操控,整个系统运行稳定可靠,在所选择的测试平台环境下以分辨率1280×1024运行时图像刷新帧率能达到60 FPS的水平,即便加入全视场大规模雨雪天气等粒子效应时,也能保持在30 FPS以上,确保了系统的流畅运行。

4 结束语

通过在开源渲染引擎OGRE基础上采用插件集成开发的模式,本文设计的战车三维视景仿真系统能够载入渲染大范围真实地貌地形(具备LOD处理能力),可实现符合真实物理动力学规律的战车运动及碰撞检测,也能在场景内实现大规模植被渲染,同时还能实现多种粒子声音特效,外部数据接口使系统能够满足实时运动控制与动力学仿真的需求,在一定程度上能够克服传统的战车视景仿真系统研制所面临的困难和不足,为国产战车模拟器以及相关研制领域提供了一种新的技术思路。

参考文献(References)

[1] 居乃鵕. 装甲车辆动力学分析与仿真[M].北京:国防工业出版社,2002:383-393.

JU Nai-jun. Dynamic analysis and simulation of armored vehicles[M]. Beijing:National Defense Industry Press,2002:383-393. (in Chinese)

[2] 刘鲁,栾立秋,李舰,等. 自行高炮武器系统三维视景仿真与实现[J]. 火炮发射与控制学报,2007,(4):34-38.

LIU Lu,LUAN Li-qiu,LI Jian,et al. 3D scene simulation and realization of SPAA gun weapon system based on OpenGVS[J]. Journal of Gun Launch & Control,2007,(4):34-38. (in Chinese)

[3] 张德峰,王华兵,薛原,等. 基于VegePrime的视景仿真技术的研究与应用[J]. 计算机仿真,2006,23(7):191-195.

ZHANG De-feng,WANG Hua-bing,XUE Yuan,et al. Research and application of scene simulation technique based on VegaPrime[J]. Computer Simulation,2006,23(7):191-195. (in Chinese)

[4] 褚彦军. 基于OpenGL的海洋战场视景仿真系统研究[J].计算机工程与设计,2009,30(5):1216-1218.

ZHU Yan-jun. Research and development of virtual ocean battlefield simulation system based on OpenGL[J]. Computer Engineering and Design,2009,30(5):1216-1218. (in Chinese)

[5] Steve Streeting. OGRE Tutorials[EB/OL]. http://www.Ogre3d.org/wiki/index/php/OGRE_ Tutorials. 2009-12-23.

[6] 高嵩. 基于OGRE和ODE的驾驶模拟系统的设计与实现[D]. 武汉:武汉理工大学,2006.

GAO Song. The design and implement of a vehicle driving simulator based on OGRE and ODE[D]. Wuhan:Wuhan University of Technology,2006.(in Chinese)

[7] FU Hui,WANG Quan-min. Dynamic terrain visualization based on ROAM and OGRE[J]. 系统仿真技术,2009,5(1):55-59.

FU Hui,WANG Quanmin.Dynamic Terrain Visualization Based on ROAM and OGRE[J]. System Simulation Technology,2009,5(1):55-59.(in Chinese)

[8] 王超,朱竟夫,项王. 坦克对抗射击系统三维地形仿真[J]. 火炮发射与控制学报,2006,(增刊):58-61.

WANG Chao,ZHU Jing-fu,XIANG Wang. 3D terrain simulation for tank confrontation fire system[J]. Journal of Gun Launch & Control,2006,(S):58-61. (in Chinese)

[9] 魏迎梅. 虚拟环境中碰撞检测问题的研究[D].湖南:国防科技大学,2000.

WEI Yin-mei. Research on collision detection in virtual evironment[D]. Hunan:National Defense University of Technology,2000. (in Chinese)

[10] LUO Feng,LIU Chu,SUN Zechang. Intelligent vehicle simulation and debugging environment based on physics engine[J].IEEE,2009.

[11] 陈世红,王海. 林木场景漫游系统的研究与实现[J]中国图像图形学报,2009,14(6):1212-1216.

CHEN Shi-hong,WANG Hai. Research and implementation of forest scene walkthrough system[J]. Journal of Image and Graphics,2009,14(6):1212-1216. (in Chinese)

[12] 凌飞. 图形引擎中大规模草本植被渲染研究与实现[D].成都:电子科技大学,2009.

LIN Fei. Graphics engine rendering study of large-scale herbaceous vegetation[D]. Chengdu:University of electronic science and technology of china,2009.(in Chinese)

[13] Steve Streeting.OGRETutorials[EB/OL]. http://www.ogre3d.org/tikiwiki/PagedGeometry Engine.

猜你喜欢

视景碰撞检测战车
美军M2A3战车
最炫战车秀
基于动力学补偿的机器人电机力矩误差碰撞检测
全新预测碰撞检测系统
虚拟现实技术在游戏设计中的应用及研究
未来战车大猜想
某炮模拟训练系统中三维视景的设计与实现
基于BIM的铁路信号室外设备布置与碰撞检测方法
基于预测和双缓冲区的直升机视景仿真
我们的战车驰过来