刘娜 江南机电设计研究所
虚拟现实技术可利用计算机建立模型来描述人、物、环境及其相互关系,创造一个让人如同体验真实场景的三维虚拟世界,在游戏开发、军事仿真等领域得到广泛应用。OpenGL 作为一种开发可视化仿真系统的图形API,提供了严格遵循计算机图形学原理设计的点、线、多边形等基本图形函数以及图形变换、纹理映射、动画显示等图形操作函数,具有很强的二次开发功能。
本文在Visual C++平台上利用OpenGL函数库建立了导弹飞行视景仿真模型,根据输入的导弹飞行数据参数,可对导弹飞行弹道进行可视化仿真,对所规划的弹道进行可行性验证。
高品质的三维实体模型是形成逼真的视景仿真效果的关键条件。OpenGL提供了一系列绘制基本图元的函数,然后利用绘制的基本图元按照一定的空间位置组合形成复杂的几何物体。采用这种方法对于形状简单的物体较为容易,且可将绘制模型形成的代码进行封装,重复使用,提高建模效率,本文中的导弹模型就是采用此方法建立的。根据导弹结构特点,把导弹分为弹头、弹身、舵翼等部分。
对于如飞机等形状复杂的目标物体,单纯利用上述基本图元组合方法,编程复杂,图形显示实时性不能保证。本文对于目标的外形的建立是通过3ds max实现的,利用转换软件将其转换为OpenGL可读取的文件格式,采用三角形近似逼近的方法绘制目标。
导弹与目标的飞行过程模拟是通过保持视点坐标不变,移动、旋转以及缩放导弹及目标模型等方式实现的。首先确认视点坐标位置,通过gluLookAt()函数定义了仿真视点的位置,通过读取事先开发的导弹模拟程序的计算文件获取导弹与目标的位置信息,并利用OpenGL提供的glTranslatef将导弹与目标更新的位置坐标变化转换到视图界面中对应的(x,y,z)位置,实现导弹与目标在视景仿真过程中沿着x轴、y轴、z轴平移动作,通过glRotatef函数设置导弹与目标在飞行过程中旋转变换;通过glScale 实现导弹与目标沿着x,y,z轴缩放操作。
环境仿真效果对视景仿真的逼真性和实际的仿真显示效果具有重要影响,场景仿真越接近真实环境,对图形处理的要求就越高。
1)地形绘制
地形作为自然界中复杂程度最高的景物,其模拟绘制方法广受关注,地形生成可分真实地形与模拟地形可视化两类,而本导弹飞行视景仿真对地形背景要求只需满足基本感官效果,不必达到真实地形的逼真程度,因此,本系统采用了随机高程数据生成方法来模拟地形。随机高程三维地形模拟方法是将三维地形中的地平面分解为网格,根据网格顶点 ( x , z),利用计算机生成的随机特征点作为地形高度y值,同时在不同高度值间采用多阶曲线拟合方法使形成的地形比较平滑,最后对地形网格进行多重纹理贴图,形成具有较高逼真性的三维地形。在三维地形绘制中,通过建立顶点位置数组、颜色数组及纹理坐标数组方法,减少函数的调用及顶点传递次数,提高视景显示的流畅性。
2)天空背景模拟
天空的构造为视景仿真提供了极好的感官效果。本文采用构建贴有天空纹理的半球形网格方法进行天空体的绘制,通过OpenGL中球面坐标系建立网格顶点坐标f(x,y,z),然后选择合适的天空纹理映射到网格的方法建立半圆顶形天空模型。由于半球形天空绘制方法形成的顶点数据越多,纹理贴图效果越逼真,雾化效果越均匀,但是顶点数据过多会造成天空背景绘制效率变慢,本文采用半球形网格天空绘制方法生成的32×64个天空顶点。
本文根据导弹与目标模型位置差进行碰撞检测,当导弹与目标模型位置差小于导弹战斗部杀伤距离时,确定弹目遭遇,进行爆炸效果的模拟,否则导弹未命中。对爆炸效果的模拟采用了对象的不同绘制方法,在爆炸前是按照几何图形绘制方法绘制导弹,读取OBJ文件并根据三角近似逼近的方法绘制目标;而在导弹击中目标后,爆炸效果绘制分为破裂和碎片飞散两个步骤,模型破裂采用三角近似逼近的方法模拟爆炸碎片,将导弹与目标分成不同的面片,分散来进行绘制的,在爆炸后根据爆炸原理绘制碎片飞散效果,将导弹与目标残骸向外膨胀,爆炸碎片随着距离的增加而逐渐衰减,根据计算模型对象的各个三角形面片在爆炸作用下的新的位置,利用最初的三角形面片的纹理,将爆炸对象绘制出来,同时赋予爆炸碎片旋转属性。
本文利用VC与OpenGL开发了以某型导弹为例的导弹飞行视景仿真模型,能方便的对场景中的导弹各部分尺寸进行设置,可通过改变性能参数来达到不同型号的导弹作战仿真。提供了真实的三维场景,实现了导弹的六自由度可视化演示,对规划导弹飞行弹道具有很好的工程应用价值。
[1]胡海,钱江.对机动突防反舰导弹的防御[J].现代防御技术,29(5): 20-23.
[2]玄一民,李红亮,宋贵宝.潜舰导弹与航母编队攻防对抗仿真系统设计[J].飞航导弹, 2005.
[3]刘剑威.反舰导弹典型攻击模式及运动仿真研究[J].指挥控制与仿真,2006.