APP下载

虚拟战场环境中火炮外弹道可视化研究*

2019-07-20田云霞李丽君

火力与指挥控制 2019年6期
关键词:弹丸弹道轨迹

吴 晋 ,田云霞 ,李丽君 ,田 川

(1.北方自动控制技术研究所,太原 030006;2.山西工程职业技术学院,太原 030009)

0 引言

提高和保持军队战斗力的一条重要途径是具备现代化的训练方法和训练装备。如今战争科技含量越来越高,多军兵种协同作战常态化且在当下国际环境诡谲无常的情形下,提高我国军队训练水平成为急需解决的问题,但组织复杂、规模宏大的实战训练演习周期长、耗费大、易造成人员伤亡,并会受到空域、训练场地的限制,这些特点迫切要求军事训练采用新的技术方法。现代视景仿真与虚拟战场环境技术就为军事训练提供了全新的手段和支撑,该技术具有成本低廉、环境逼真、场景多变、训练针对性强、可控制性强等特点,可最大程度地补充实兵演练,提高部队的技战水平。

在某炮兵参加的合成战术对抗仿真训练中,为了使训练条件贴近实战、使仿真对抗结果可信,需要在虚拟战场环境中,建立高保真度的火炮装备仿真模型。其中火炮的外弹道建模与仿真是火炮装备仿真模型的重要组成部分,它既能增强训练过程的炮火交战临境感,又决定了弹丸是否与目标发生碰撞,关系到火炮的命中仿真,直接影响仿真对抗结果。在该对抗仿真训练系统中,火炮进入预设阵地后,会上报自己的位置坐标(也可通过连指挥车所携带的方向盘测距机进行测量获得),从而使模拟指挥软件获得本连队的火炮位置信息。营级或连级观察所对目标位置信息进行测量,进而得到要打击的目标位置信息[1-2]。

本文在已知火炮阵地位置信息、目标位置信息和弹丸初速的情况下,对火炮弹丸飞行轨迹进行可视化渲染研究,通过空气动力学简化方程,对飞行轨迹进行建模并求解弹丸在虚拟战场中的位置,用粒子系统模拟发射、爆炸效果,进而可视化弹丸飞行全过程。

1 训练仿真对外弹道仿真的需求分析

在某仿真训练系统中需要利用视景仿真技术生成一种险象环生、几近真实的立体战场环境:在有典型地貌的自然环境中,当炮兵对地面目标进行压制时,伴随巨响弹丸被射出,随后生成一团火光并伴有烟雾,高速的弹丸直奔目标,最后与目标碰撞、爆炸。这种对战场要素(如爆炸)的高逼真度仿真,可使受训士兵感觉好像进入“真正”的战场,进而提高训练的效果。

本文主要研究从弹丸飞离炮口、弹丸在虚拟战场环境中飞行、弹丸与目标碰撞发生爆炸整个过程的视景仿真。为了提高仿真逼真度、可信度[3-4],需对全过程视效、弹丸飞行特性进行仿真。通过分析原型系统可把弹丸离开炮口到爆炸的过程分为3个阶段:1)在炮口产生团状火焰并伴有巨响的出膛阶段;2)按照弹丸轨迹飞行的飞行阶段;3)与目标碰撞并产生巨响的爆炸阶段,因此,需模拟弹丸出膛时的视效、声效,在保证帧率和逼真度的前提下模拟弹丸飞行轨迹、模拟弹丸与物体碰撞时产生的爆炸视效、声效。

为使训练达到实战化要求,弹丸飞行过程视景仿真需满足真实性、逼真性、实时性要求。

1)真实性要求

要求弹丸的飞行轨迹具有高度的真实性,能够完全反映出弹丸的运动和动力学规律。

2)逼真性要求

要求弹丸能在数值计算的基础上,以立体图形的形式在三维战场环境下实时展示出来,同时要求弹丸的发射、飞行和打击过程能够产生声光烟的效果。

3)实时性要求

要求弹丸位置解算和三维渲染能够达到30帧/s以上,画面流畅,不会产生卡顿,能够满足训练的要求。

2 弹道仿真设计

2.1 弹丸飞行轨迹分析

图1 弹丸外弹道轨迹

实际外弹道是一条空间曲线OSD,如图1所示,把过射出点o的水平面记为发射水平面或炮口水平面,弹丸经过身管加速后获得初速V0,过初始向量V0垂直于炮口水平面的oxy面记为射击平面,弹丸经过上升弧段后到达弹道轨迹的最高点,经过下降弧后,弹丸与炮口水平面交为一点,此点称为弹丸弹道落点,射出点到弹丸弹道落点处的水平距离称为水平射程,弹丸弹道落点处弹丸的速度矢量与炮口水平面的夹角称为弹道落角,把落点偏离射击平面的距离称为侧偏。

在真空中,弹道是一条抛物线,分为升弧、降弧,这两弧段弹丸速度和空间位置有严格的对称性。但弹丸在空气中运动时,由于空气阻力等因素,升弧、降弧不对称,此时弹丸速度、空间位置将在空气阻力、重力等因素的作用下不断变化。

为了简化问题分析,可把弹道轨迹投影到炮口水平面和射击平面,炮口水平面的投影为OD弧,在射击平面的投影为OS'D',如果求出了OD和OS'D'的数学表示,那么就可通过投影面轨迹的数学模型获得外弹道的数学模型,这样就把问题简化为求解各投影平面曲线的数学模型。弹丸不同的初速会有不同的飞行轨迹,随着现代火控系统技术的发展,弹丸不仅可在载具静止状态下射击,也可在运行时射击,车体运行速度矢量会影响弹丸的初速矢量,进而影响飞行轨迹,对此可将射击时车体运动速度矢量分解为两个方向:一个射击平面上;另一个在垂直于射击平面的平面上,这些分解速度用来修正弹丸初速。

在弹丸的初始速度和方向给定的情况下,如果作用力只有地球引力、空气动力载荷的作用,弹道是个曲线,把弹道向射击平面和炮口平面投影,此时问题从三维简化为二维,如果进一步将起点设为原点,则可消除大多数方程中初始x值和y值,这样将极大地简化问题。

在动力学的工程学界中,存在着6个标准的空气动力载荷量:3个力(升力、空气阻力、侧向力)和3个力矩(俯仰力矩、偏航力矩、滚动力矩)。有些物体有很高的长度-直径比被称为长细比,弹丸属于典型的细长类物体。在现实世界中,它们在空气中飞行时这些物体主要受升力、阻力以及俯仰力矩的作用。视景实时仿真中,根据帧率和视效的需求,可认为此类物体仅受升力、空气阻力、俯仰力矩的影响,并据此假设对其进行建模。

空气阻力的计算公式[5]:

Cd为阻力系数;Sref为一个参考面积常数,通常是几何体的投影面积;ρ为流体的密度,这个变量常被取为常量,对空气而言,在任何给定的时间片段中,它的值随着海拔、气候条件的变化而变化,在气温15℃时,地面空气密度为1.206 kg/m3,根据外弹道理论,空气密度函数为 H(y)=(1-2.190 4*10-5*y)4.399,y<9 300 m[6-7];V为空气相对于物体的速度,Vrelative=Vliquid-Vlocation。弹丸是类圆柱体的物体,它的中心轴垂直于相对风,其作用点位于物体的质心。对于此类物体,Cd主要是一个无量纲参数的数学函数,被称为雷诺数,用来表示流体中的惯性作用力与黏性作用力的比值。通过雷诺数查表可得Cd。也可通过射表数据调整空气阻力使脱靶量减小,选取脱靶量最小的空气阻力值,倒推出Cd。

物体表面的流加速度和流减速度造成的流体压力差,就产生了升力。可用简化的线性势能流模型估算弹丸的升力。利用此模型,一个完整的流场可以表示成若干个基本流场的叠加。流体中一个普通物体周围的流可近似为一个背景流。在背景流中增加一个环流,环流用来表示的是流体在物体一个侧面的加速度和在另一侧的减速度。环流可被想成一个涡流,叠加在背景流之上,涡流通过不断增加物体某一侧的流体速度,产生更低的压力,同时不断地降低物体另外一侧的流体速度,产生更高的压力,物体两侧的压力差就导致了升力的产生。因此,当绕自身对称轴旋转的弹丸以迎角飞行时,与右(左)旋弹丸相应的升力产生使弹丸向右(左)侧运动的偏流,弹丸偏向弹道右(左)方。环流产生的力可用库塔-儒可夫斯基定理计算:

其中,Vrelative_wind是弹丸相对风的速度矢量,γ是一个向量,表示每个单位长度的环流,有一个确定的方向,而合力Lper_unit_length是每个单位长度上的力。这里的长度是沿着环流方向上物体的长度。物体曲率的几何不对称性,就会造成环流的产生,自转同样可产生环流,弹丸可被认为自转的圆柱体。

在现实世界中,一个普通物体周围的流体流动是非常复杂的,其环流的情况也是复杂的。为了简化在视景中的应用,可把物体简单看作一个圆柱体。空气动力几何体就可认为是一个边界圆柱体,位于自转轴上。上式乘以圆柱体的长度,就可近似地得到总的力。对于一个半径为r,自转的速度为每秒ω个弧度的圆柱体每个单位长度上环流可用下式表示:γ=2*π*ω*r2,对于这个边界圆柱体包围着的弹丸,其总的力就可表示为:L=0.785*l*ρ*Vrelative_wind×(2*π*ω*r2*espin),espin是一个单位向量,表示圆柱体的自旋轴,ω*espin表示这个弧度上每秒的旋转速度。附加因子0.785近似地模拟在有限长度的圆柱体上发生的三维损耗。

俯仰力矩用下面公式计算[5]:

式中,ρ、V、Sref的含义同空气阻力计算公式,lref为一个参考长度,取物体的物理尺寸,Cm为俯仰力矩系数。一般情况可使用karamcheti公式的变种:Mm=|2*α|近似计算俯仰力矩,α是细长体的轴与相对风之间的夹角,Sref*lref取值为细长体的体积。俯仰力矩作用于物体的重心,而这个力矩的方向则由Vrelative_wind×Aslender_body的向量积给出。其中,Aslender_body是细长体的最前端到最后端的一个轴,该轴通过物体的重心。

2.2 可视化设计

当弹丸与目标碰撞发生爆炸时,一声巨响,黄色的火焰妖艳绽放,浓烟腾空而起,碎片向四周飞散出去,同时伴有炙热的波浪。为了表现这种爆炸效果需创建4个粒子系统对象:黄色火焰粒子系统对象、黑色碎片粒子系统对象、火花粒子系统对象、白色冲击波粒子系统对象,其中烟雾由黑色碎片粒子系统对象的子发射器生成,黄色火焰粒子系统对象为其他粒子系统对象的父对象。当弹丸出膛时会腾起一团黄色火焰,此视效的设计只需更改黄色火焰粒子系统对象中材质属性即可。弹丸飞行轨迹视效只需把运算好的弹丸速度传给三维渲染引擎,由三维渲染引擎实时渲染弹丸轨迹[8]。下面基于Unity3D引擎分别给出粒子系统对象和声效的设计。

2.2.1 黄色火焰粒子系统对象的设计

首先创建一个粒子系统对象,设置形状为球形、半径0.01、粒子的生命周期为2、粒子的喷射速度为50~210、粒子的大小为10、粒子的旋转角为-180~180、设置一个周期内发射的粒子数为100。爆炸后粒子由中心向四周由快到慢散射,因此,设置粒子生命周期内的速度上限值为200,超过上限速度后对粒子的减速阻尼为1。为了表现火焰团状物外表,给粒子赋予爆炸材质并设置粒子生命周期内颜色属性从黄色渐变到无色。爆炸后火焰团状物形态由小到大再到小的变化,可用曲线方式设置粒子随着生命周期进行的大小变化。一团团的聚集火焰效果用发射属性的喷射频率值设定。

2.2.2 黑色碎片粒子系统对象的设计

爆炸产生的碎片由爆炸点向四周飞溅。碎片由胶囊类型的网格和为网格赋烟材质属性表示。飞溅的形态决定了粒子的喷射形式及相关参数,因此,可设粒子系统形态属性为球形、半径为1、粒子喷射延迟属性为0.1、粒子喷射速度160、粒子的大小3、一个周期内发射的粒子数为20。喷溅的碎片任意翻滚,因此,需设粒子旋转角范围为-180~180、粒子在生命周期内粒子旋转的角速度范围为-720~720。爆炸产生的碎片会在重力的作用下消失,所以设置粒子的生命周期为1.5、重力密度为20、粒子的大小范围为0.5~3。碎片飞射时还带有烟雾感,可用碎片的子发射系统完成此种效果,可设子粒子系统的喷射频率为50、渲染器属性中材质的值为烟材质、矫正排序系数为5 000、粒子的喷射周期为2.0、粒子的喷射速度为10、粒子的旋转角度为-180~180、粒子的喷射速度范围为10~20、粒子生命周期内大小变化范围为0.5~1.5、喷射频率60。

2.2.3 火花粒子系统对象设计

火花伴随着爆炸向四周飞射最后消失,因此,设粒子系统形态属性为球形、半径为1、爆发属性粒子值为80、粒子的生命周期0.2~0.7、粒子的喷射速度为200~250、粒子的大小为0.5~2、粒子的渲染模式为拉伸面板渲染、长度缩放比为4、材质属性赋为火花材质。

2.2.4 白色冲击波粒子系统对象设计

爆炸后会从中心向四周扩散一圈冲击波最后消散,因此,设粒子系统形态属性为球形、半径为0.01、一个周期内发射的粒子数为1、粒子的渲染模式为水平面板渲染模式、最大粒子尺寸为200、材质赋为预制好的圆环材质、粒子的喷射周期为1、粒子的生命周期为0.8、粒子的喷射速度为10、粒子的大小为30、生命周期内粒子大小变化范围为0~15。

2.2.5 出膛声音组件和爆炸声音组件的设计

把弹丸出膛时和与物体碰撞爆炸时的音频文件赋给音频源组件的音频剪辑文件属性,设置空间混合为3D音效、多普勒级别为1、衰减模式为对数衰减模式。

3 弹道仿真实现

3.1 弹丸位置解算

根据简化的弹丸飞行模型,弹丸只受空气阻力Dairfriction=(dx,dy,dz)、环流产生的力Lair=(Lx,Ly,Lz)和地球的重力G作用。通过作用力可改变弹丸的加速度,进而调整弹丸的速度达到调整弹丸运动状态的目的。把弹丸的加速度记为a=(ax,ay,az),ax,ay,az分别为在3个坐标轴向的加速度分量,相应计算式为:

3.1.1 在炮口水平面相关量的计算

对于炮来讲,引起弹丸横向偏移的因素主要是环流产生的力在z方向的分量。车体相对身管的横向速度Cz。弹丸的速度为:

其中,P0z为初始位置z方向的分量,那么弹丸的随时间的位置Pz'为:

3.1.2 在射平面相关量的计算

将问题简化为二维后,可确定每一维的速度和加速度。假设初始速度为v0、仰角为θ,车体在水平方向上的速度分量为Cx,则沿x轴和y轴的初始速度如下:

垂直速度和水平速度可被表示为:

记P'为经过一段时间后弹丸的位置,P0为弹丸的初始位置,则

通常情况视景仿真场景中发射阵地和目标可近似处于一个平坦的地面。地面上的大炮向地面目标开火时,发射点和目标点之间的垂直距离为0,因此,弹丸位置在y方向上没有变化,此条件可简化垂直位置方程,从而求出时间t、初始速度V0或仰角θ,如下所示:

最大高度的定义是:垂直速度Vy=0,只需解下述关于垂直速度的方程:

t的解如下:

用上述解替换垂直方程中的t,可求出弹的最大高度:

要求θ≥0,如果发射角θ小于0(向下发射),则最大高度将为0。

假设弹丸围绕垂直于运动方向的轴旋转,弹丸角速度变化取决于转矩M及转动惯量I,弹丸的角加速度为:

根据弹丸的角加速度可更新角速度、旋转角度,如下式:

da为角阻尼系数为角加速度,θ觶为初始角速度,θ觶'为积分步长后的角速度。

弹丸旋转角度按下式计算:

该模型充分考虑了影响弹丸飞行的主要因素,加快了弹丸飞行轨迹的计算速度,满足了视景仿真对实时性的要求。

3.2 基于Unity3D的渲染

动态链接库文件是一种可执行文件,允许程序共享执行特殊任务所必需的代码和其他资源,可以被所有的windows应用程序共享。本文把上述计算虚拟战场环境中弹丸离开炮口后的运动状态模型以动态链接库的形式封装给用户使用。本模型对外提供7个接口,如下:

Vector_DLLExport GetResistence(float density,float relV-el,float relArea,float coefficient);

Vector_DLLExport GetPitTorque(float density,float relV-el,float relArea,float relLength,float coefficient);

Vector_DLLExport GetLiftForce(float density,float relVel,float angVel,float radius);

Vector_DLLExport ForceAccumulate(Vector objAccept-Force);

Vector_DLLExport GetFrameIntervalSpeed(Vector composForce,float Mass,float frameInterval);

Vector_DLLExport GetShellPos(Vector composForce,float Mass,float frameInterval);

float_DLLExport GetMaxHeight()。

Unity3D是一款比较流行的、支持属性可视化编辑、跨平台开发、一键部署等特性的三维游戏开发工具,在该工具中使用动态库模型时,需把动态链接库放在projectDirectoryAssetsPlugins目录下。下面介绍在unity3D创建的场景中实现弹丸飞行轨迹可视化步骤:首先,用3dmax对火炮(炮塔、身管、火炮底盘)、炮弹建模并导入到unity3D中,分别给炮塔、身管、火炮底盘编写脚本组件,用来接收用户输入以控制火炮运动状态及炮塔偏航角和身管俯仰角。接着创建两个空物体,其中一个添加出膛粒子系统组件、发射音频源组件、击发弹丸组件,分别用来展现弹丸出膛时的爆炸火焰、出膛时的爆炸声及响应用户按下空格键时所产生的发射事件——实例化并发射一个弹丸、播放爆炸音频;为另一个空物体添加爆炸粒子系统组件、爆炸音频源组件,用来展现弹丸与其他物体碰撞时的爆炸效果及声效。编写弹丸脚本组件在其FixedUpdate函数中调用本文提供的外弹道模型,用以实时更新弹丸的位置,其执行步骤为:

1)调用 GetResistence、GetLiftForce、GetPitTorque分别计算空气阻力、俯仰力矩、环流产生的力,并把它们的返回值转换成Vector3类型。

2)调用力累加器函数计算加在物体上的合力并把返回的值转换成Vector3类型。

3)调用GetFrameIntervalSpeed获得的物体的速度并把返回的值转换Vector3类型。

4)调用Rigidbody.MovePosition函数根据速度更新弹丸的位置。

当弹丸与地面或其他物体碰撞时调用OnColli sionEnter函数,实例化含有爆炸粒子系统组件对象,并销毁弹丸。经部队试用后能满足训练需求,效果如图2所示。

图2 弹丸出膛、飞行、爆炸效果

4 结论

本文对某合成战术对抗仿真训练系统中,火炮所发射的弹丸飞行轨迹进行建模,分析求解了火炮发射的弹丸在虚拟战场环境中的飞行轨迹及弹丸出膛、弹丸与物体碰撞时伴有的视效、音效。弹丸飞行轨迹模型被编译成动态库,可在可视化弹丸飞行轨迹时使用。此模型较为真实地模拟了弹丸飞行轨迹,增强了战场环境的真实感和用户在虚拟战场环境的沉浸感。虽然在建模推导过程中涉及了大量的数学知识,但最后的公式却相对简单也容易理解,且能够满足用户的训练需求。经部队试用取得了较好的训练效果。今后,将进一步优化弹丸位置实时计算公式,减少浮点运算,增加运算效率。

猜你喜欢

弹丸弹道轨迹
弹道——打胜仗的奥秘
解析几何中的轨迹方程的常用求法
神秘的『弹丸』
无控旋转弹丸外弹道姿态测试与模型验证
空投航行体入水弹道建模与控制策略研究
轨迹
轨迹
空化槽对弹丸水下运动特性的影响
MF-1飞行试验弹道差异分析及弹道重建研究
复杂边界条件下弹丸热力耦合模型的挤进仿真