王 屹,薛宏偉
(陸軍炮兵防空兵學院 士官學校,沈陽 110867)
火炮作為當前部隊裝備的主要重武器之一,其彈丸射擊過程是火炮研制的一個關(guān)鍵環(huán)節(jié),射擊訓練長期以來主要依靠實兵實裝進行[1].這種傳統(tǒng)的訓練方式有其優(yōu)勢,但是也存在危險性大、訓練成本高、易受天氣因素影響等問題.近年來,國內(nèi)關(guān)于火炮外彈道的研究主要集中于火炮彈丸運行軌跡和彈丸飛行試驗結(jié)果的仿真,且現(xiàn)有的火炮外彈道仿真方法仍存在準確性、實用性和可視化方面的不足[2],因此亟需深入開展有效的、實用的火炮外彈道虛擬仿真方法的研究.
為了解決火炮外彈道仿真中可視化方面的不足,本文引入虛擬現(xiàn)實(Virtual Reality,VR)技術(shù),虛擬現(xiàn)實技術(shù)是一種可以創(chuàng)建和體驗虛擬世界的計算機仿真技術(shù),利用電腦模擬生成一個三維空間的虛擬世界,給用戶提供視覺、聽覺、觸覺等感官的模擬,讓原本繁復(fù)或者不容易展示的內(nèi)容以虛擬現(xiàn)實技術(shù)為載體讓大眾更容易理解和接受[3].虛擬現(xiàn)實技術(shù)與火炮的研制相結(jié)合,將會為火炮的研制帶來極大的便利.
本文在合理的假設(shè)簡化后,通過對火炮質(zhì)點外彈道方程組的分析求解,得到彈丸外彈道運動過程的數(shù)學模型.結(jié)合采用Unity3D 開發(fā)火炮外彈道虛擬仿真系統(tǒng),用虛擬環(huán)境來模擬復(fù)雜多變的真實火炮發(fā)射環(huán)境,對火炮的發(fā)射過程進行了可視化仿真.該仿真不僅可以體驗火炮性能,并且具有試驗可重復(fù)、風險性小、節(jié)省資金等優(yōu)點.在此仿真試驗過程中可以讓用戶根據(jù)仿真系統(tǒng)中的環(huán)境、聲音等因素獲得視覺、聽覺等感官體驗,從而更真切的觀察火炮發(fā)射整個過程.仿真研究結(jié)果不僅為火炮外彈道的優(yōu)化設(shè)計提供了便利,同時也為火炮研究提供可視化的虛擬試驗研究方法,而且可以縮短現(xiàn)代火炮的研究周期和研究成本.
火炮的發(fā)射具有復(fù)雜的受力和運動過程,在火炮系統(tǒng)設(shè)計過程中,彈丸的外彈道設(shè)計是一項非常重要的工作.火炮外彈道學主要研究由火炮發(fā)射的彈丸出炮口后的運行軌跡及姿態(tài)[4].仿真模型的建立是仿真研究的關(guān)鍵環(huán)節(jié),常用的外彈道模型包括:彈道微分方程組、彈道諸元的解析表達式、射表、射表諸元的逼近表達式、射表與微分方程聯(lián)合使用[5].火炮射擊通常分射擊準備和射擊實施兩個階段,射擊準備的主要任務(wù)是給火炮決定對目標射擊開始使用的瞄準裝置裝定劃分(即決定射擊諸元).射擊諸元包括方向分化、表尺分劃等.射擊準備的主要內(nèi)容有確定目標位置,測地、彈道及氣象準備,決定射擊開始諸元.因此,要實時的模擬火炮彈丸在空中的飛行運動過程以及運動形態(tài)變化,需要建立彈丸運動的數(shù)學模型,即彈道方程,計算彈丸在任意時刻點的具體位置數(shù)據(jù).同時,為了更加直觀的觀察火炮射擊過程,需要建立火炮和彈丸實體模型.
火炮發(fā)射后,發(fā)射藥在膛內(nèi)燃燒產(chǎn)生的氣體壓力,使彈丸獲得速度在空中飛行,彈丸重心經(jīng)過的路線即為彈道.彈丸在出膛后具有一定的初速度和角度,在飛行過程中在阻力和地球引力的作用下運動.彈道學是研究彈丸運動規(guī)律的學科,在彈道學中,通常情況下,火炮彈丸的外彈道模型可以分為剛體外彈道和質(zhì)點外彈道.剛體外彈道模型將彈丸視為剛體,其計算結(jié)果準確,但彈道模型的公式較為復(fù)雜,不利于彈道計算腳本的編寫和實時計算.質(zhì)點外彈道將彈丸簡化為質(zhì)點,其彈道模型較剛體外彈道模型簡單,雖然結(jié)果沒有剛體外彈道模型精確,但是已經(jīng)可以滿足本文的需求.同時,由于使用質(zhì)點外彈道模型編寫腳本較為簡單并且計算速度較快,因此本文采用浦發(fā)[6]提出的質(zhì)心運動方程組作為仿真研究過程中解算彈道的數(shù)學模型.
對于飛行穩(wěn)定性相對較好的彈丸,在飛行中彈丸軸線和彈丸速度矢量之間有一個很小的夾角,在飛行中該角稱為攻角[7].攻角盡管很小,但是軍事武器試驗精確度要求高,因此攻角因素的影響也需要考慮.質(zhì)點外彈道模型如式(1)所示:
式(1)中,v為彈丸速度,θ為彈丸攻角,x為彈丸水平方向飛行距離,y為彈丸高度,τ為虛溫,τ0n為標準條件下虛溫,c為彈道系數(shù).π(y)為氣壓函數(shù),可以表示為π(y)=H(y)×τ/τ0n,其中,H(y)為空氣密度函數(shù).
為了方便計算,本項目中空氣密度函數(shù)采用經(jīng)驗公式,H(y)=(20000-y)/(20000+y).F(vτ)為阻力函數(shù),由于其精確公式較為復(fù)雜,本文采用式(2)所示的經(jīng)驗公式方便程序編寫和計算.
程序運行時,需要給定參數(shù):t=t0=0,v=v0,x=x0=0,y=y0,τ和c,其中v0為彈丸初速度,y0為彈丸出膛時的高度,由用戶指定他們的數(shù)值.τ和c分別與環(huán)境和彈丸有關(guān),作為已知數(shù)據(jù),由用戶輸入.彈道計算程序使用C#編寫,在獲取到初值后,使用龍格-庫塔法[8]對非線性常微分對方程組式(1)進行迭代,計算彈丸的運動軌跡,直到炮彈落地,即y=0 為止.
虛擬現(xiàn)實需要在三維的虛擬場景中形象地表達仿真實體的運動規(guī)律,所以就需要對每個實體進行建模.所建的虛擬實體不僅要在外形上逼真,而且在行為能力、光澤度、質(zhì)感等方面都要盡可能的真實.
本文采用Unity3D 作為開發(fā)引擎.Unity3D 是一個近年來使用比較廣泛的三維游戲開發(fā)引擎,具有開發(fā)簡單易上手、三維效果逼真等優(yōu)勢,被廣泛的用于虛擬現(xiàn)實和游戲開發(fā)[9].Unity3D 自身具有建立模型的能力,且使用到的模型資源也可以從多種多樣的3D 建模軟件中導(dǎo)入,其中包括3ds Max、Maya、Cinema、4D、Modo、Cheetah3D 等[10].本文主要使用3ds Max 建立火炮射擊實體模型,借助3ds Max 的貼圖和渲染功能創(chuàng)建能夠充分表現(xiàn)火炮及彈丸質(zhì)感的材質(zhì),將模型渲染并轉(zhuǎn)換為.FBX 圖形文件后導(dǎo)入Unity3D.為了使得模型仿真效果更加逼真,火炮模型是由各部分組件分別裝配而成,這樣既便于在虛擬場景中控制火炮射角,也便于從各個角度對火炮進行觀察,并且在火炮射擊的瞬間增加了緩沖和震動的效果,使得火炮實體模型以及火炮射擊過程更加逼真.火炮模型如圖1.
圖1 火炮模型
彈丸模型的外形和質(zhì)量分布均為軸對稱體,在射擊過程中作用在彈丸上所有的力都過質(zhì)心,彈丸在空中飛行時除質(zhì)心運動外也存在圍繞質(zhì)心運動,即繞心運動,將彈丸設(shè)計為軸對稱體也避免了彈丸運行過程中脫離預(yù)設(shè)軌道而造成誤差.彈丸的尾翼設(shè)計獨特,在運動過程中會根據(jù)所受的力自由旋轉(zhuǎn),使得彈丸仿真效果更加逼真.彈丸模型如圖2.
圖2 彈丸模型
用戶在按下發(fā)射按鈕后,使用用戶輸入的值和預(yù)設(shè)的值初始化彈道數(shù)學模型的參數(shù).然后運行彈道計算腳本,計算炮彈的實時位置、速度、攻角等數(shù)據(jù),并在畫面更新時對彈丸的位置、角度進行設(shè)置,同時對彈丸進行相應(yīng)的旋轉(zhuǎn)操作,使彈丸更加符合真實的運動軌跡.彈丸在飛行過程中的圖像如圖3.
圖3 彈丸飛行狀態(tài)
Unity3D 具有自帶的Terrain 地形系統(tǒng),而真實地形仿真是通過獲取地球地理信息數(shù)據(jù)后制作為高度圖,然后將高度圖導(dǎo)入到Unity3D 中進行地形的仿真.具體操作步驟為:1)在U3D 中創(chuàng)建地形并導(dǎo)入高度圖,在Terrain Composer 中操作地形;2)添加Splat;3)平滑地形;4)設(shè)置Splat Layer;5)進行Filter 操作,選中衛(wèi)星圖,添加Color Range,依次編輯各色塊的RGB 值,接著生成紋理,完成紋理鋪設(shè).至此,便可以生成大地形的仿真還原.
射擊場地形模型主要是火炮射擊時需要的地理環(huán)境模型,關(guān)系到整個視景仿真系統(tǒng)是否形象逼真,并且還要兼顧遠近視角觀看的需求.本文選取某靶場的真實地形作為虛擬訓練場景的地形來源.采用靶場真實地形的DEM 數(shù)據(jù)作為真實地形環(huán)境生成的依據(jù),同時從該靶場航拍影像數(shù)據(jù)中提取地形的真實紋理數(shù)據(jù),動態(tài)鋪設(shè)虛擬環(huán)境的地形表面紋理,有效避免了遙感影像貼圖隨縮放而發(fā)生失真現(xiàn)象的產(chǎn)生.火炮對海射擊地形場景如圖4.
圖4 對海射擊地形場景
彈丸在發(fā)射后,隨著時間的推移,高度先上升后下降,在接觸地面即高度等于零時,觸發(fā)引信,發(fā)生爆炸.在高度到達零后,由彈丸飛行控制模塊判定為接觸地面,然后調(diào)用爆炸模塊,并提供著陸點的坐標.爆炸模塊在獲得著陸點的坐標后,首先移除彈丸模型,然后觸發(fā)粒子系統(tǒng).
火炮彈丸爆炸效果由Unity3D 采用純粒子系統(tǒng)制作.雖然爆炸效果可以由貼圖和粒子系統(tǒng)組成,但是貼圖效果不夠逼真,因此本文采用純粒子系統(tǒng)來實現(xiàn)火炮彈丸爆炸效果,并根據(jù)真實爆炸場景調(diào)整粒子系統(tǒng)的形狀、顏色、大小、發(fā)射參數(shù)等屬性,最終使得彈丸爆炸仿真效果更加真實.彈丸著陸后的爆炸效果如圖5.
首先,對彈丸外彈道運動模型進行測試.在給定所有條件初始值后,開始對彈丸彈道進行計算.部分結(jié)果如表1.
圖5 彈丸爆炸效果
表1 彈丸參數(shù)和時間關(guān)系
隨后,我們將計算所得的彈丸彈道數(shù)據(jù)繪制成圖表,使得結(jié)果更加直觀.圖6展示的是使用模型計算出的彈丸飛行距離和時間的關(guān)系;圖7展示的是彈丸飛行速度與時間的關(guān)系,從圖中可以看出彈丸飛行速度逐漸減慢,由于彈丸飛行過程中受空氣阻力等因素的影響,所以其沿炮身軸線方向是減速運動;圖8展示的是彈丸飛行高度和時間的關(guān)系.從這三張圖中可以直觀的看到彈丸的各項參數(shù)與時間的關(guān)系.
圖6 彈丸飛行距離與時間關(guān)系曲線
圖7 彈丸飛行速度與時間關(guān)系曲線
圖8 彈丸飛行高度與時間關(guān)系曲線
將彈丸彈道仿真運算結(jié)果與彈道表數(shù)值進行比較,二者存在一些誤差.分析產(chǎn)生誤差的主要因素有:(1)由于火炮發(fā)射過程中受載和運動十分復(fù)雜[11],有許多物理過程尚未完全認識,在建模過程中不得不做一些假設(shè),導(dǎo)致理論計算結(jié)果與實際情況相比還存在一定的差異;(2)本文采用的彈丸質(zhì)心運動方程組是在簡化一些環(huán)境變量的情況下使用,而真正的火炮射擊訓練需要考慮彈重、藥溫、氣溫、氣壓、風等非標準條件的影響[12],這些因素也會造成一些誤差.然而仿真結(jié)果與彈道表數(shù)值誤差較小,在可接受的范圍內(nèi),因此足以證明本次仿真實驗具有一定的準確性和可行性.
本文基于外彈道經(jīng)典理論模型,通過3ds Max 和Unity3D 建立火炮、彈丸以及射擊場景模型,結(jié)合質(zhì)點外彈道方程組計算彈丸運動軌跡并控制彈丸在空中運行狀態(tài).通過與射表等資料的對比,本仿真方法誤差在可接受的范圍內(nèi),其精確性得以驗證,同時,與同類仿真方法相比提供了良好的可視化性.仿真結(jié)果表明,該仿真方法可以模擬火炮發(fā)射的整個過程,并且具有一定的實用性和參考性,為火炮研究提供可視化的虛擬試驗研究方法,可以縮短現(xiàn)代火炮的研究周期和研究成本,提高產(chǎn)品質(zhì)量,同時可以應(yīng)用在火炮研發(fā)和教學活動中,對進一步研究軍事領(lǐng)域其他兵器也具有一定的參考價值.