張德鍵,焦志剛,王珞冰
(沈陽理工大學 裝備工程學院, 沈陽 110159)
炮彈作為現代戰爭中最主要的大規模殺傷性武器,一直受到各國軍隊和武器研究者們的關注。為了能觀察到炮彈在外彈道的運動,提高火炮炮彈的散布和打擊精度,增加炮彈射程,火炮研究者們提出了很多設計方案。張斐[1]設計了一種機械裝置,通過ADAMS和Workbench進行模擬實驗,模擬出了3種不同類型彈丸的飛行姿態。李華等[2]采用3DMAX進行渲染,將Simulink與虛擬現實語言相結合實現了彈丸六自由度剛體彈道的可視化仿真。張進強等[3]將MATLAB與OpenGL結合,實現了基于數值仿真實時驅動的彈道可視化平臺,該平臺可以對炮彈的飛行軌跡、姿態、散布等進行仿真分析。張維[4]建立了彈丸六自由度剛體彈道的Simulink模型,并在MATLAB的GUIDE環境下,建立了外彈道的可視化系統。
虛擬現實技術自誕生以來,就一直受到軍方的青睞。安興等[5]介紹了美軍在構建戰場、單兵訓練、異地同環境作戰訓練、軍事指揮人員訓練、武器裝備研制及信息網絡虛擬戰等7個方面虛擬現實技術的應用現狀及發展。欒悉道,謝毓湘等[6]從現實戰場,單兵模擬訓練、近戰戰術訓練,多兵種聯合演習等4個方面分析了虛擬現實技術在軍事上的應用現狀,并在高新武器研發、軍事地圖、軍事醫學救治和遠程操控機械設備等方面闡述了虛擬現實技術在軍事上的發展前景。王彪等[7]結合虛擬現實技術,設計了一種軍用橋梁半實物仿真模擬訓練器的研制方案。
本文將重點研究如何借助虛擬現實技術實現將彈丸六自由度剛體彈道方程的計算數據與彈丸三維模之間的傳遞方法。并驗證這種方法的可行性,得到彈丸剛體外彈道的可視化視景仿真。
彈丸外彈道方程組可分為質點彈道方程組和六自由度剛體彈道方程組,對比這兩種方程對彈丸外彈道的描述,質點彈道方程是在忽略馬格努斯力、科氏慣性力和全部力矩的情況下建立的,描述的是理想狀態下彈丸的運動,在該狀態下,可將彈丸當作質點,彈丸的運動軌跡呈不對稱的拋物線。質點彈道方程只能描述彈丸的外彈道軌跡[8]。
彈丸六自由度剛體彈道方程中包含了精確、復雜的角運動,其可以看作是彈丸質心運動方程和彈丸繞質心運動方程組成。質心運動方程和繞質心運動方程建立在不同的坐標系下,本文選用地面坐標系、彈道坐標系建立彈丸質心運動方程,選用第一彈軸坐標[9]系建立彈丸繞質心運動方程。
彈丸質心運動方程:
彈丸繞質心運動方程:
其中:v為彈丸速度,θa為速度高低角,ψ2為速度方向角,x、y、z為彈丸位置坐標,ωξ、ωη、ωζ為3個坐標軸方向的角速度,φa為彈軸高低角,φ2為彈軸方位角,Mξ、Mη、Μζ分別為外力矩在彈軸坐標系上3個坐標軸方向的上的分量,Jξ為轉動慣量,γ是彈丸轉速,方程具體內容請參考文獻[9]。
要想準確描述彈丸在空氣中的飛行軌跡和飛行姿態,需要知道彈丸運動的位置坐標,旋轉的角速度以及各角度變化等數據。使用彈丸六自由度剛體彈道方程計算出彈丸飛行時的位置坐標值,3個軸方向的角運動以及彈丸的章動角和偏航角的變化。如何將這些數據通過腳本傳遞到彈丸的三維模型上是準確描述彈丸在空氣中的飛行軌跡和飛行姿態的關鍵步驟。
彈道仿真運行腳本采用迭代的編程思想,設置一個迭代的步長Dt,該步長值是一個浮點型的參數。讓彈丸外彈道計算的初始值加上該初始值與步長Dt的乘積,將這一次計算的數值賦予第一次計算的數值A1。再將A1的值加上A1值與Dt的乘積賦予A2,依次類推,直至方程中彈丸y軸的位置坐標小于0為止,數學公式描述如下:
A1=A初+(A初×Dt)
程序運行邏輯框圖如圖1。
方程只迭代一次是不能實現實時傳遞數據的,這里需要將彈丸六自由度剛體彈道方程的迭代腳本寫在Unity腳本中的Update()函數下[10]。這個函數會在每一幀渲染前被調用,一次刷新一幀,也就是將彈丸六自由度剛體彈道方程寫在這個函數下時,Update()函數每刷新一幀,方程就會被迭代一次,彈丸六自由度剛體彈道方程的計算程序會在Update()函數下,以上述的計算方式循環,直至彈丸y軸坐標值小于0為止。將計算結果在Console顯示框中輸出,結果如圖2所示。
數據計算成功后,需要將描述彈丸運動的參數賦予彈丸三維模型,因此需要調用Unity內部的Transform組件中的位置函數和旋轉函數,Transform組件用于儲存并操控物體的位置、旋轉和縮放[11]。其中transform.postion()函數來描述物體在三維空間的位置變化,括號中對應的是物體運動的三維坐標。方程計算出的彈丸運動位置的三維坐標填寫到三維空間函數Vector3()中,并將三維空間函數Vector3()的數值賦予transform.postion()函數中,在Update()函數下,transform.postion()函數實時刷新,彈丸三維模型就會以計算出的參數進行運動,使用Unity中的繪線工具,呈現出彈丸的飛行軌跡。transform.LocalEulerAngle()函數是表示物體相對于父級物體旋轉的角度,當使用這個函數時,設置的角度值為絕對值,括號中獲取的是物體運動的角速度。同樣隨著方程計算出彈丸運動角速度的刷新,彈丸三維模型將實時按照計算數據轉動,呈現彈丸運動姿態。調用Instantiate()函數克隆彈丸預制物體運行效果如圖3、圖4以及圖5所示。
本文通過將彈丸六六自由度剛體彈道方程腳本寫在Update()函數下,將方程計算的數據賦給了Unity中的Transform()函數,實現了用計算數據驅動彈丸三維模型運動,該過程實現彈丸外彈道可視化的關鍵步驟。通過該項技術還可以實現例如尾翼彈、導彈、水下彈藥、魚雷、火箭等武器系統的發射仿真,有助于分析在風、雨、雷電等極端環境下影響彈丸飛行的各個因素。是彈丸外彈道研究的一次新的嘗試。
參考文獻:
[1]張斐.彈丸飛行姿態運動學分析與模擬試驗研究[D].太原:中北大學,2013.
[2]李華,陳偉偉.基于虛擬現實建模語言的彈道可視化仿真[J].探測與控制學報,2009,31(1):77-80.
[3]張進強,蔣夏軍.外彈道可視化研究與實現[J].計算機工程與科學,2015,37(2):372-378.
[4]張維.基于MATLAB的武器外彈道仿真可視化技術研究[D].太原:中北大學:2014.
[5]安興,李剛.虛擬現實技術在美軍模擬訓練中的應用現狀及發展[J].光電與控制,2011,18(10):42-46.
[6]欒悉道,謝毓湘.虛擬現實技術在軍事上的應用[J].系統仿真學報,2003,15(4):604-607.
[7]王彪,鄒煜.虛擬現實技術在軍事模擬訓練中的應用[J].工兵裝備研究,2007,26(5):52-56.
[8]錢林方.火炮彈道學[M].北京:北京理工大學出版社,2009:12.
[9]韓子鵬.彈箭外彈道學[M].北京:北京理工大學出版社,2008.
[10] 夏瀚笙,沈峘,王瑩,等.三維數字圖像相關法的匹配策略和應變場計算[J].重慶理工大學學報(自然科學),2017(9):110-118.
[11] Ceeger Logo視界.Unity圣典[DB/OL].http://www.ceeger.com/Script/Transform/Transform.localEulerAngles.html,2010.12.