基于OpenGL的枪弹侵彻伤道可视化研究

2023-06-01 13:40刘荣华温垚珂闫文敏刘苏苏
计算机仿真 2023年4期
关键词:枪弹空腔明胶

刘荣华,温垚珂,闫文敏,刘苏苏

(1. 南京理工大学机械工程学院,江苏 南京 210094;2. 瞬态冲击技术国防科技重点实验室,北京 102202;3. 中国兵器工业第208研究所,北京 102202;4. 南通大学机械工程学院,江苏 南通 226019)

1 引言

人体易损性评估软件可以快速评估各类杀伤元对人体靶标的杀伤效应,结合具体作战任务还可评估人员的失能情况。为了在软件界面快速直观地再现枪弹侵彻过程及其在人体靶标内造成的瞬时空腔膨胀过程,就需要结合相应终点弹道理论模型数据,在软件中虚拟再现侵彻过程。目前,对基于各类外弹道方程的枪弹和导弹飞行过程虚拟再现技术研究较多,对枪弹终点弹道的虚拟再现技术罕有文献报道[1]。

张进强等人[3]通过构建OpenGL的三维视景仿真环境,实现了基于数值仿真实时驱动的弹道可视化仿真平台,对炮弹的飞行轨迹、实时运动姿态进行了仿真和分析。吴枫等人[4]利用虚拟现实技术、数据可视化技术等,构建了一个航天发射可视化仿真平台,并开展了相应可视化仿真应用案例。薛志斌等人[5]为降低工作量,通过专业三位建模软件3DS MAX建立模型,并用C++语言将3DS文件导入OpenGL中,实现可视化以及人机交互控制。程翔等人[6]对六自由度算法模型进行了改进,实现了导弹六自由度弹道三维仿真,该仿真能够真实可靠并且清晰直观的反映导弹的六自由度弹道特性,其可视化效果良好。文雷[7]利用计算机图形技术,构造导弹的三维模型并通过快速载入实体模型的方法载入OpenGL,最终实现了导弹飞行仿真,为导弹飞行轨迹研究提供了一种直观、便捷的仿真分析方法。

目前,已有研究大都针对三维模型实时位移、旋转实现了仿真[8],[9],但侵彻过程中的瞬时空腔是一个形状实时变化的三维模型,动态变形特点给伤道仿真带来困难。本文基于OpenGL设计了枪弹侵彻仿真程序,程序可以实现对枪弹侵彻全过程的三维可视化。通过引入阻力系数和升力系数,建立枪弹运动和瞬时空腔运动模型。经过与实验对比发现模型具有良好的准确性。依据模型,获取侵彻过程枪弹运动与空腔变形的实时数据,设计算法实现对子弹运动和空腔运动的可视化仿真,为动态变形的三维模型仿真提供了一些参考。

2 枪弹侵彻明胶靶标理论模型

在枪弹侵彻明胶过程中,枪弹的受力主要随枪弹与明胶有效接触面积变化,其中面积分离率和弹头长径比是描述有效接触面积的重要因素。刘苏苏[8]通过分析侵彻过程中的不同方向受力,提出了阻力系数和升力系数与翻转角的关系式,从而建立步枪弹在明胶中的运动模型和瞬时空腔运动模型。

2.1 枪弹运动方程

当枪弹以非零度攻角侵彻明胶时,枪弹在明胶中的运动可以分为:质点平动和绕质心的转动[11]-[13]。随着枪弹翻转角的增加,枪弹与明胶的有效接触面积增大,因而枪弹不断受到一个翻滚力矩的作用;与此同时,枪弹翻转过程中,枪弹尾部会受到明胶的阻碍作用,从而形成一个阻尼力矩,始终阻碍枪弹的翻转。结合这两个在枪弹上作用相反的力矩,建立方程(1)。

质点平动中受力分为水平方向的阻力和竖直方向的升力。关于阻力,通过引入空气动力学中的阻力系数,建立阻力模型。阻力的大小主要取决于有效接触面积的大小。根据枪弹在明胶中翻转的角度,可将翻转分为三个阶段即窄伤道段、快速翻转阶段、阻尼振荡阶段,并分别建立有效接触面积与翻转角的关系方程。结合升力的作用,引入升力系数最终建立方程(2)(3)(4)。

(1)

(2)

(3)

图1图2是以上理论模型与实验结果的对比。从图中可以看出,理论模型得到的数据与实验结果重合度很好,这表明该理论模型能够较为准确的反映侵彻过程。

图1 侵彻深度随时间变化曲线

图2 翻转角度随时间变化曲线

2.2 瞬时空腔运动方程

取明胶深度S处,轴向厚度为ds的截面为研究对象,依据动能定理计算得到弹头在该截面释放的能量dEs。当该截面空腔膨胀至最大时,认为截面动能为0,变形能量最大,且该层明胶具有最大能量dEp。考虑到由于攻角的存在,弹头会出现翻滚现象,明胶分层之间存在能量交换,分层能量不守恒,即dEs≠dEp。通过假设分层之间的能量交换与弹头释放能量和所有截面中弹头最大释放能量的差值正相关,建立明胶截面的最大变形能与弹头释放能量的关系表达式。又考虑弹头翻转带来的影响,引入弹头有效接触面积和明胶粘弹性的影响,表示截面变形能和动能之间的关系。最终瞬时空腔运动模型如下

(4)

图3是是以上理论模型与实验结果的对比(某7.62mm枪弹,入靶速度701m/s)。从图中可以看出,理论模型可以很好地模拟空腔从开始膨胀到闭合运动过程的空腔轮廓。

图3 理论模型结果与实验结果典型时刻对比[8]

3 仿真实现

OpenGL库一般包含两个基本库,一个用来实现开窗,另一个管理OpenGL函数指针[1][2]。实现这两个功能的库有很多。采用当前成熟、稳定的GLFW、GLEW库。基本环境的搭建需要将这两个库加载、驱动,其中初始化的关键语句如下:

表1 OpenGL初始化关键语句

3.1 子弹

OpenGL渲染模型的过程,是由CPU对模型数据(顶点、法线、纹理)进行读取、处理,再将数据传递至GPU进行渲染显示。对于复杂的几何模型,手动输入模型的顶点、法线和纹理坐标数据是极为困难的,其效率也较低。模型加载可以将建立好的几何模型导入程序之中,极大提高了复杂场景可视化的效率。

在3dmax软件中,画出枪弹弹头的几何模型,保存为obj格式文件。利用ASSIMP模型加载库将子弹模型加载到程序之中。在OpenGL中,模型的几何数据以矩阵的形式进行操作,模型的几何变换是由矩阵乘以相应的变换向量、矩阵实现的。GLM是一个专门为OpenGL量身定做的数学库,该库可以帮助得到几何变换相应的矩阵。

利用函数glm∷mat4建立一个单位矩阵,通过glm∷translate、glm∷scale、glm∷rotate函数对单位矩阵进行变换,得到平移、缩放、旋转的变换矩阵。其中glm∷rotate()函数需要一个向量作为自变量,几何模型会以该向量作为旋转轴进行旋转。这个旋转轴向量的起点为子弹质心,方向与旋转平面垂直。而子弹在做平移时,质心会不断变化,使该旋转向量需要不断随之变化。为解决该问题,使用一个函数,因变量是初始旋转轴向量和质心动态坐标,函数返回一个不断随着质心平移的旋转轴向量。

子弹的运动分为质心的平动和绕质心的旋转,由运动方程求解,得到子弹随时间的位移和翻转角度数据。将子弹的位移值和翻转角度数据,作为变换矩阵的变换量,随时间不断切换到对应的值。最终实现子弹模型的运动可视化效果。图4是子弹典型时刻姿态与实验对比图,从图中可以看出,通过程序实现的子弹运动可视化效果与实验中较为符合。

图4 子弹典型时刻姿态与实验对比图

图4中,a:实验高速摄影拍摄的子弹在明胶中运动过程,b:枪弹侵彻过程可视化效果。

3.2 瞬时空腔

目前OpenGL渲染图形,主要应用于不变化模型的渲染,而对实时变换形状的模型渲染少有应用。瞬时空腔是一个典型的几何形状随时间不断变换的模型,传统的方式难以处理。OpenGL渲染的基础图元是三角形,将瞬时空腔划分为有限多个三角形,并实时变换三角形的数据,最终实现瞬时空腔运动的渲染动画。算法原理如图5所示。

图5 依据数据渲染空腔原理图

图6是枪弹侵彻明胶数值计算结果中,垂直弹道一截面典型时刻的等效应力图[14]。从图中可以看出,在垂直侵彻方向,瞬时空腔的形状可以看作一个圆。为此,将瞬时空腔视作沿着侵彻深度排列的一系列圆组成,这些圆的位置和大小都会随时间变化。将每一时刻的空腔分为一系列圆,通过方程求解,可以获得这一系列圆的圆心位置和半径。

图6 空腔一截面等效应力图[14]

如图7a所示,在一系列圆上取点,再从相邻两个圆上取四个点如图7b所示,由这四个点分别组成两个互补为矩形的三角形。沿着圆上对所有点进行以上操作,即可将两个圆之间,由三角形进行缝补,最终形成一个圆台的形状。对沿着侵彻深度的所有圆进行以上操作,最终可以获得空腔的形状。依照以上原理,将空腔沿着侵彻深度方向划分为50个圆,每个圆上取8个点。为确定每个点的顶点三维坐标,对一系列圆心位移、半径数据进行以下处理

图7 圆上选取三角形顶点

Xi=X0;

(5)

Yi=Y0+R*sin(i*2pi/n);

(6)

Zi=R*cos(i*2pi/n);

(7)

X0、Y0、Z0=0是圆心的坐标,R是圆半径,Xi、Yi、Zi是圆上第i个点的坐标,n是在圆上划分点的个数。建立一个循环将沿着圆上各点坐标求得,放入数组。(OpenGL坐标系遵循右手定则,在屏幕上向右为X正方向,向上为Y正方向,垂直屏幕向里是Z正方向)

OpenGL中渲染三角形,顶点数据需要按照逆时针三角形的顺序排列。按照如图7b的顺序将所有顶点排序从新放入数组。根据理论模型求解每一时刻的空腔数据较为繁琐,因此只选取10个时间间隔相同的典型空腔数据,并通过对数据进行插值计算,得到丰富的数据,来驱动可视化仿真,以保证画面的流畅性和变形过程清晰的展现。最后将该数组作为顶点数据传递至GPU进行渲染。

经过对算法的测试,结果表明,该算法可以很好的呈现空腔的动态变形过程。截取典型时刻的空腔形状,如图8。

图8 典型时刻空腔形状

3.3 应用案例

依据上述子弹运动模型和瞬时空腔运动模型,以某7.62mm枪弹为例,使用Matlab对微分方程组求解获取数据。结合C++语言编写的侵彻过程可视化程序,实现枪弹侵彻明胶的可视化,从而更快速直观的观察侵彻发生过程中的现象。

初始条件为:X方向位移为0,Y方向位移为0,偏转角为0,X方向速度为700m/s,Y方向速度为36.678 m/s,偏转角速度为0。

图9是通过可视化程序实现的枪弹侵彻明胶场景,并和实验照片进行了对比。从图中可以看出空腔的形状与实验高速摄影相似,可以较为真实地展示空腔的变形过程。经过验证,设计的算法可以将子弹侵彻明胶过程中空腔的动态变形完整的呈现。利用该程序可以进行各种初始条件的仿真,形象地预测伤道的形状,为后续将其投影到人体上进行不同位置损伤评估有重要支撑作用。

图9 可视化空腔与实验典型时刻对比图

4 结论

1)建立的枪弹侵彻明胶运动方程可以较准确的描述枪弹侵彻过程中枪弹在明胶内的侵彻深度和翻滚角度变化历程。

2)建立的明胶内瞬时空腔运动方程可以较准确描述明胶内瞬时空腔的形状轮廓随时间和空腔的演化过程。

3)基于OpenGL技术开发的伤道可视化软件可以快速直观的再现枪弹侵彻人体模拟靶标过程中伤道的形成过程,为人体易损性评估软件提供准确的人体损伤数据。

猜你喜欢
枪弹空腔明胶
“喝水长胖”的QQ糖
基于边光滑有限元法的二维复合弹性空腔声振特性分析
基于Unity3D的枪弹虚拟装配实验系统开发
美国陆军测试中口径枪弹
空腔参数对重力坝稳定的影响分析
俄罗斯完成3D打印枪弹的射击试验
前置污水去油池
前置污水去油池
超高压明胶理化性质分析
复凝法制备明胶微球