火炮作为当前部队装备的主要重武器之一, 其弹丸射击过程是火炮研制的一个关键环节, 射击训练长期以来主要依靠实兵实装进行[1]. 这种传统的训练方式有其优势, 但是也存在危险性大、训练成本高、易受天气因素影响等问题. 近年来, 国内关于火炮外弹道的研究主要集中于火炮弹丸运行轨迹和弹丸飞行试验结果的仿真, 且现有的火炮外弹道仿真方法仍存在准确性、实用性和可视化方面的不足[2], 因此亟需深入开展有效的、实用的火炮外弹道虚拟仿真方法的研究.
为了解决火炮外弹道仿真中可视化方面的不足, 本文引入虚拟现实(Virtual Reality, VR)技术, 虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真技术, 利用电脑模拟生成一个三维空间的虚拟世界, 给用户提供视觉、听觉、触觉等感官的模拟, 让原本繁复或者不容易展示的内容以虚拟现实技术为载体让大众更容易理解和接受[3]. 虚拟现实技术与火炮的研制相结合, 将会为火炮的研制带来极大的便利.
本文在合理的假设简化后, 通过对火炮质点外弹道方程组的分析求解, 得到弹丸外弹道运动过程的数学模型. 结合采用Unity3D开发火炮外弹道虚拟仿真系统, 用虚拟环境来模拟复杂多变的真实火炮发射环境, 对火炮的发射过程进行了可视化仿真. 该仿真不仅可以体验火炮性能, 并且具有试验可重复、风险性小、节省资金等优点. 在此仿真试验过程中可以让用户根据仿真系统中的环境、声音等因素获得视觉、听觉等感官体验, 从而更真切的观察火炮发射整个过程. 仿真研究结果不仅为火炮外弹道的优化设计提供了便利, 同时也为火炮研究提供可视化的虚拟试验研究方法, 而且可以缩短现代火炮的研究周期和研究成本.
2 火炮外弹道仿真模型建立火炮的发射具有复杂的受力和运动过程, 在火炮系统设计过程中, 弹丸的外弹道设计是一项非常重要的工作. 火炮外弹道学主要研究由火炮发射的弹丸出炮口后的运行轨迹及姿态[4]. 仿真模型的建立是仿真研究的关键环节, 常用的外弹道模型包括: 弹道微分方程组、弹道诸元的解析表达式、射表、射表诸元的逼近表达式、射表与微分方程联合使用[5] . 火炮射击通常分射击准备和射击实施两个阶段, 射击准备的主要任务是给火炮决定对目标射击开始使用的瞄准装置装定划分(即决定射击诸元). 射击诸元包括方向分化、表尺分划等. 射击准备的主要内容有确定目标位置, 测地、弹道及气象准备, 决定射击开始诸元. 因此, 要实时的模拟火炮弹丸在空中的飞行运动过程以及运动形态变化, 需要建立弹丸运动的数学模型, 即弹道方程, 计算弹丸在任意时刻点的具体位置数据. 同时, 为了更加直观的观察火炮射击过程, 需要建立火炮和弹丸实体模型.
2.1 弹丸外弹道运动过程数学建模火炮发射后, 发射药在膛内燃烧产生的气体压力, 使弹丸获得速度在空中飞行, 弹丸重心经过的路线即为弹道. 弹丸在出膛后具有一定的初速度和角度, 在飞行过程中在阻力和地球引力的作用下运动. 弹道学是研究弹丸运动规律的学科, 在弹道学中, 通常情况下, 火炮弹丸的外弹道模型可以分为刚体外弹道和质点外弹道. 刚体外弹道模型将弹丸视为刚体, 其计算结果准确, 但弹道模型的公式较为复杂, 不利于弹道计算脚本的编写和实时计算. 质点外弹道将弹丸简化为质点, 其弹道模型较刚体外弹道模型简单, 虽然结果没有刚体外弹道模型精确, 但是已经可以满足本文的需求. 同时, 由于使用质点外弹道模型编写脚本较为简单并且计算速度较快, 因此本文采用浦发[6]提出的质心运动方程组作为仿真研究过程中解算弹道的数学模型.
对于飞行稳定性相对较好的弹丸, 在飞行中弹丸轴线和弹丸速度矢量之间有一个很小的夹角, 在飞行中该角称为攻角[7]. 攻角尽管很小, 但是军事武器试验精确度要求高, 因此攻角因素的影响也需要考虑. 质点外弹道模型如式(1)所示:
$ \left\{ {\begin{array}{*{20}{l}} {\dfrac{{dv}}{{dt}} = - c\pi (y)F({v_\tau }) - g\sin \theta }\\ {\dfrac{{d\theta }}{{dt}} = \dfrac{{ - g\cos \theta }}{v}}\\ {\dfrac{{dx}}{{dt}} = v\cos \theta }\\ {\dfrac{{dy}}{{dt}} = v\sin \theta }\\ {{v_\tau } = v\sqrt {\dfrac{{{\tau _{0n}}}}{\tau }} } \end{array}} \right. $ | (1) |
式(1)中, v为弹丸速度, θ为弹丸攻角, x为弹丸水平方向飞行距离, y为弹丸高度, τ为虚温, τ0n为标准条件下虚温, c为弹道系数. π(y)为气压函数, 可以表示为π(y)=H(y)×τ/τ0n, 其中, H(y)为空气密度函数.
为了方便计算, 本项目中空气密度函数采用经验公式, H(y)=(20000–y)/(20000+y). F(vτ)为阻力函数, 由于其精确公式较为复杂, 本文采用式(2)所示的经验公式方便程序编写和计算.
程序运行时, 需要给定参数: t=t0=0, v=v0, x=x0=0, y=y0, τ和c, 其中v0为弹丸初速度, y0为弹丸出膛时的高度, 由用户指定他们的数值. τ和c分别与环境和弹丸有关, 作为已知数据, 由用户输入. 弹道计算程序使用C#编写, 在获取到初值后, 使用龙格-库塔法[8]对非线性常微分对方程组式(1)进行迭代, 计算弹丸的运动轨迹, 直到炮弹落地, 即y=0为止.
$ F({v_\tau }) = \left\{ {\begin{array}{*{20}{l}} {0.00007454v_\tau ^2},&{{v_\tau } < 250}\\ {629.61 - 6.0255{v_\tau } + 1.8756 \times {{10}^{ - 2}}v_\tau ^2 - 1.8613 \times {{10}^{ - 5}}v_\tau ^3},&{250 \le {v_\tau } < 400}\\ {6.394 \times {{10}^{ - 8}}v_\tau ^3 - 6.325 \times {{10}^{ - 5}}v_\tau ^2 + 0.1548{v_\tau } - 26.63},&{400 \le {v_\tau } < 1400}\\ {0.00012315v_\tau ^2},&{{v_\tau } > 1400} \end{array}} \right. $ | (2) |
虚拟现实需要在三维的虚拟场景中形象地表达仿真实体的运动规律, 所以就需要对每个实体进行建模. 所建的虚拟实体不仅要在外形上逼真, 而且在行为能力、光泽度、质感等方面都要尽可能的真实.
本文采用Unity3D作为开发引擎. Unity3D是一个近年来使用比较广泛的三维游戏开发引擎, 具有开发简单易上手、三维效果逼真等优势, 被广泛的用于虚拟现实和游戏开发[9]. Unity3D自身具有建立模型的能力, 且使用到的模型资源也可以从多种多样的3D建模软件中导入, 其中包括3ds Max、Maya、Cinema、4D、Modo、Cheetah3D等[10]. 本文主要使用3ds Max建立火炮射击实体模型, 借助3ds Max的贴图和渲染功能创建能够充分表现火炮及弹丸质感的材质, 将模型渲染并转换为.FBX图形文件后导入Unity3D. 为了使得模型仿真效果更加逼真, 火炮模型是由各部分组件分别装配而成, 这样既便于在虚拟场景中控制火炮射角, 也便于从各个角度对火炮进行观察, 并且在火炮射击的瞬间增加了缓冲和震动的效果, 使得火炮实体模型以及火炮射击过程更加逼真. 火炮模型如图1.
弹丸模型的外形和质量分布均为轴对称体, 在射击过程中作用在弹丸上所有的力都过质心, 弹丸在空中飞行时除质心运动外也存在围绕质心运动, 即绕心运动, 将弹丸设计为轴对称体也避免了弹丸运行过程中脱离预设轨道而造成误差. 弹丸的尾翼设计独特, 在运动过程中会根据所受的力自由旋转, 使得弹丸仿真效果更加逼真. 弹丸模型如图2.
用户在按下发射按钮后, 使用用户输入的值和预设的值初始化弹道数学模型的参数. 然后运行弹道计算脚本, 计算炮弹的实时位置、速度、攻角等数据, 并在画面更新时对弹丸的位置、角度进行设置, 同时对弹丸进行相应的旋转操作, 使弹丸更加符合真实的运动轨迹. 弹丸在飞行过程中的图像如图3.
2.3 对海射击地形场景构建
Unity3D具有自带的Terrain地形系统, 而真实地形仿真是通过获取地球地理信息数据后制作为高度图, 然后将高度图导入到Unity3D中进行地形的仿真. 具体操作步骤为: 1)在U3D中创建地形并导入高度图, 在Terrain Composer中操作地形; 2)添加Splat; 3)平滑地形; 4)设置Splat Layer; 5)进行Filter操作, 选中卫星图, 添加Color Range, 依次编辑各色块的RGB值, 接着生成纹理, 完成纹理铺设. 至此, 便可以生成大地形的仿真还原.
射击场地形模型主要是火炮射击时需要的地理环境模型, 关系到整个视景仿真系统是否形象逼真, 并且还要兼顾远近视角观看的需求. 本文选取某靶场的真实地形作为虚拟训练场景的地形来源. 采用靶场真实地形的DEM数据作为真实地形环境生成的依据, 同时从该靶场航拍影像数据中提取地形的真实纹理数据, 动态铺设虚拟环境的地形表面纹理, 有效避免了遥感影像贴图随缩放而发生失真现象的产生. 火炮对海射击地形场景如图4.
2.4 爆炸场景构建
弹丸在发射后, 随着时间的推移, 高度先上升后下降, 在接触地面即高度等于零时, 触发引信, 发生爆炸. 在高度到达零后, 由弹丸飞行控制模块判定为接触地面, 然后调用爆炸模块, 并提供着陆点的坐标. 爆炸模块在获得着陆点的坐标后, 首先移除弹丸模型, 然后触发粒子系统.
火炮弹丸爆炸效果由Unity3D采用纯粒子系统制作. 虽然爆炸效果可以由贴图和粒子系统组成, 但是贴图效果不够逼真, 因此本文采用纯粒子系统来实现火炮弹丸爆炸效果, 并根据真实爆炸场景调整粒子系统的形状、颜色、大小、发射参数等属性, 最终使得弹丸爆炸仿真效果更加真实. 弹丸着陆后的爆炸效果如图5.
3 仿真试验与分析首先, 对弹丸外弹道运动模型进行测试. 在给定所有条件初始值后, 开始对弹丸弹道进行计算. 部分结果如表1.
随后, 我们将计算所得的弹丸弹道数据绘制成图表, 使得结果更加直观. 图6展示的是使用模型计算出的弹丸飞行距离和时间的关系; 图7展示的是弹丸飞行速度与时间的关系, 从图中可以看出弹丸飞行速度逐渐减慢, 由于弹丸飞行过程中受空气阻力等因素的影响, 所以其沿炮身轴线方向是减速运动; 图8展示的是弹丸飞行高度和时间的关系. 从这三张图中可以直观的看到弹丸的各项参数与时间的关系.
将弹丸弹道仿真运算结果与弹道表数值进行比较, 二者存在一些误差. 分析产生误差的主要因素有: (1)由于火炮发射过程中受载和运动十分复杂[11], 有许多物理过程尚未完全认识, 在建模过程中不得不做一些假设, 导致理论计算结果与实际情况相比还存在一定的差异; (2)本文采用的弹丸质心运动方程组是在简化一些环境变量的情况下使用, 而真正的火炮射击训练需要考虑弹重、药温、气温、气压、风等非标准条件的影响[12], 这些因素也会造成一些误差. 然而仿真结果与弹道表数值误差较小, 在可接受的范围内, 因此足以证明本次仿真实验具有一定的准确性和可行性.
4 结论本文基于外弹道经典理论模型, 通过3ds Max和Unity3D建立火炮、弹丸以及射击场景模型, 结合质点外弹道方程组计算弹丸运动轨迹并控制弹丸在空中运行状态. 通过与射表等资料的对比, 本仿真方法误差在可接受的范围内, 其精确性得以验证, 同时, 与同类仿真方法相比提供了良好的可视化性. 仿真结果表明, 该仿真方法可以模拟火炮发射的整个过程, 并且具有一定的实用性和参考性, 为火炮研究提供可视化的虚拟试验研究方法, 可以缩短现代火炮的研究周期和研究成本, 提高产品质量, 同时可以应用在火炮研发和教学活动中, 对进一步研究军事领域其他兵器也具有一定的参考价值.
[1] |
杭燚. 火炮虚拟现实技术研究[博士学位论文]. 南京: 南京理工大学, 2007.
|
[2] |
陈京生, 郑晓亚, 张鹏飞, 等. 火炮数字化标准体系建设. 火力与指挥控制, 2018, 43(8): 164-167. DOI:10.3969/j.issn.1002-0640.2018.08.035 |
[3] |
林建伟. 基于MultiGen的火炮射击视景仿真系统设计[硕士学位论文]. 南昌: 华东交通大学, 2012.
|
[4] |
崔瀚, 焦志刚, 杨秀英. 基于Unity3D的火炮外弹道虚拟视景仿真系统. 兵工自动化, 2017, 36(10): 1-5, 16. |
[5] |
方治森. 火炮外弹道模型仿真研究. 装备制造技术, 2013(7): 9-11. DOI:10.3969/j.issn.1672-545X.2013.07.004 |
[6] |
浦发. 外弹道学. 北京: 国防工业出版社, 1980. 19–20, 39–40, 66–67.
|
[7] |
郭锡福. 火炮系统外弹道设计讨论. 兵工学报, 1984, 5(4): 35-43. |
[8] |
李丹. 四阶龙格_库塔法在火控解算中的应用. 微计算机信息, 2011, 27(3): 192-193. |
[9] |
Lammers K. Unity着色器和屏幕特效开发秘笈. 晏伟, 译. 北京: 机械工业出版社, 2014.
|
[10] |
向春宇. VR、AR与MR项目开发实战. 北京: 清华大学出版社, 2018. 29–30.
|
[11] |
王鹏华, 汪文革, 高小敏, 等. 基于外弹道可视化的火炮射弹散布仿真研究. 指挥控制与仿真, 2010, 32(5): 90-93, 122. |
[12] |
刘俊邦, 张猛, 朱建峰. 非标准气象条件下火炮外弹道仿真. 指挥控制与仿真, 2013, 35(2): 80-84. DOI:10.3969/j.issn.1673-3819.2013.02.019 |