基于OpenGL 的导弹飞行仿真的实现
2014-12-03孙晓燕SUNXiaoyan
孙晓燕 SUN Xiao-yan
(西安工业大学计算机科学与工程学院,西安 710032)
(School of Computer Science &Engineering,Xi'an Technological University,Xi'an 710032,China)
1 概述
导弹的实际射击训练,需要耗费大量的人力物力和财力,随着数字化仿真模拟技术的进步,一些科研课题可以在虚拟的环境中进行研究,本文基于OpenGL 的导弹飞行仿真的实现,就是利用虚拟现实技术进行的。从虚拟现实技术的特征上来看,交互性和身临其境性是其中最为明显的。从这种意义上说,人的视觉感知对于虚拟效果的好坏非常敏感,所以仿真的关键是真实性,也就是说,所虚拟的相关对象,在其环境特征和外观状况方面要与实际的实物目标十分接近,即模拟目标的运动规律应能正确反映实际运动情况,这样才可以达到虚拟的效果。
为了顺利完成上述目标,在实际设计过程中,首先要尽可能使用合理的建模工具,运用恰当的算法,提高实体模型和环境模型的真实度;第二,根据相关技术经验,选择优秀的软件平台,在软件平台上,实现对模型的材质、纹理等方面的转换和处理,提高三维彩色图像的质量。因此,本人选用了3DS MAX 作为建模工具,在运行于VC6.0环境中的OpenGL 中实现上述要求。
OpenGL 在图形处理系统领域的应用受到专业技术人员的认可,这套系统是由SGI 公司设计并研发的,该系统作为图形硬件的软件界面,其最大的特点在于该系统能够在不同的硬件平台上实现那些和硬件无关的特性。并且这套系统使用灵活方便,适应性较强,能够适应计算机的大部分操作系统,通过该系统可以实现对物体的绘制、变换、光照处理等,从而能够更加真实地描述三维图象及动画。
程序主要分为以下几个步骤来模拟导弹的飞行以及被击中的场景:①OpenGL 窗口的建立和初始化;②导弹建模和显示;③天空、海面的显示及运动;④导弹的运动及爆炸效果显示。
2 导弹飞行仿真的具体实现
2.1 OpenGL 窗口的建立和初始化 首先需要将OpenGL 所需要的库文件添加到工程中;再通过MFC AppWizard 创建一个MFC 应用程序框架,然后在此基础上通过添加相应的变量和函数,完成OpenGL 窗口的创建和初始化操作。其中关键之处在于设备描述表的像素格式设置以及建立绘制描述表和设备描述表的联系,即建立windows 应用程序与OpenGL 的接口。
2.2 导弹模型的建立 在实际模型的建立过程中,本文使用的是当前该领域应用相对成熟的造型软件3DSMax,通过这个造型软件,建立导弹的三维模型,然后在使用相应的转换工具,把导弹的三维模型转换成OpenGL 能够识别的顶点坐标形式,之后通过显示列表的方式建立对象的三维模型。
本文将3DS 文件转换成OpenGL 文件的具体过程如图1所示。
图1 3DS 文件转换成OpenGL 文件的过程
2.3 环境模型的建立 视景仿真中,动感的大海、逼真的天空、导弹的爆炸场景等的模拟是本文研究的关键内容,主要是因为这些对象不存在明显的边界和法向,用传统的几何造型方法难以描述。对于这些视景的仿真,采用了不同的实现方法。
2.3.1 海面的产生 海面的产生,我们采取了纹理映射的方法。在OpenGL 图形处理系统中,专业技术人员通过使用纹理映射技术,能够把从真实世界中拍摄到的某种物体的表面细节,通过贴图的方式贴到三维场景中同种物体的表面,这种技术方法大大提高了图像中的物体和真实世界中物体的相似度。仿真模拟海面的产生,能够为导弹的仿真飞行提供逼真的场景,对于导弹模拟飞行数据的采集和分析,有着非常重要的作用。因此,在海面图像产生过程中,通过纹理映射技术的合理运用,可以得到海面起伏不定的效果。
2.3.2 天空的生成 对天空的处理,在本文的研究中是使用纹理映射的方法结合Billboarding 技术,Billboard技术在使用过程中,其核心原理是把一幅图像,映射到简单的几何平面,也就是Billboard 上,之后再将其放置到视景体中,并使Billboard 与视线在x-z 平面上的投影垂直。对于天空的一般处理中,往往没有太阳,一般都是蓝天白云。这里,笔者选择了一幅比较好的天空图像,不仅有蓝天、白云,还有远处若隐若现的山脉,这样的图像应用到程序中,会非常逼真。将选定的天空图像作为纹理映射到Billboa-rd上,使该平面与视线在x-z 平面上的投影垂直。
2.3.3 爆炸场景的设计 导弹的运动是直线运动,当导弹被击中时,就会产生爆炸场景。爆炸场景是由多幅静态不同的图像循环映射到Billboard 上实现的。设置映射时,利用Alpha 融合技术实现每幅图像间的渐变过程,使爆炸效果比较逼真。
2.4 视景转换 在建立好导弹飞行模型之后,如果想要用户更清楚的观察模型效果,还需要进行视景转换,具体来说,在三维空间中选择合适的位置,将导弹飞行的模型安放好,之后为观看者选择适当的视点及观察方向,以提高实际观察效果。视景转换是一项系统性的工作,涉及到的工作程序很多,相关技术人员认真准备,做好每一个环节的转换工作,视景转换是对虚拟效果的进一步提升,优秀的虚拟环境,通过设计合理的视景转换可以提高观察者的实际感知效果,进而为导弹的飞行试验提供良好的虚拟场景,提高相关实验的真实性。
3 结果
该程序使用建模技术建立了导弹模型,并在场景中,使用纹理映射技术使之具有了较强的真实感,模拟了导弹飞行、爆炸的场景,最终实现了导弹飞行的仿真。图2是导弹掠海飞行的场景,图3是导弹被击中爆炸的场景。
图2 飞机掠海飞行场景
图3 导弹被击中爆炸场景
[1]付战平,等.基于OpenGL 的飞行过程再现与仿真[J].系统仿真学报,2002,14(9):1197-1199.
[2]OpenGL Programming Guide Architecture Review Board 参考手册[M].机械工业出版社,2001.
[3]张王卫,苏群星,刘鹏远.基于OSP 场景图结构的虚拟装配碰撞检测算法的研究与实现[J].计算机测量与控制,2012(12).
[4]谢汉桥,文立华.基于OpenGL 的反舰导弹弹道视景仿真[J].计算机仿真,2010/01.