劉 勝, 趙捍東, 曹紅松, 劉 闖, 張 亨, 鄒 欣
(1. 中北大學 機電工程學院,太原 030051;2. 北京易悅科技有限公司,北京 100025)
內彈道學是研究彈丸在發射過程中槍炮膛內及固體火箭發動機內的火藥燃燒、物質流動、能量轉換和槍炮彈丸的運動等規律以及其他有關現象的學科,是多數軍工院校武器類專業必修的專業基礎課程[1]。在兵器學科的培養計劃中,內彈道學實驗是教學中不可或缺的環節。由于受諸多因素的影響,真實的彈道學實驗難以開展。在實際的教學環節中內彈道學實驗都是以理論講解的方式進行的,極大地限制了學生對內彈道學相關物理規律的認識和理解。目前,主要有以下因素制約內彈道學實驗的開展:首先,在內彈道實驗過程中需要用到改裝的槍支和彈藥等違禁設備,審批過程復雜、實驗經費大、對實驗場地要求高;其次,實驗過程中,常常伴隨有高溫、高速、高壓和高沖擊現象,存在一定程度的危險性;最后,內彈道實驗過程持續時間很短,由于槍膛壁的阻隔,很難直觀地觀察到火藥在膛內的燃燒規律和和高壓氣體推進彈丸前進的過程,實驗對教學的效果影響甚微[2]。隨著虛擬現實(Virtual Reality,VR)技術的發展,虛擬仿真技術能夠很好地模擬真實實驗的物理過程,使具有微觀、高危和高成本特征的實驗得以順利開展。
本文結合內彈道實驗教學大綱的要求,使用Unity3D平臺開發出基于虛擬現實技術的內彈道虛擬實驗系統。學生可通過虛擬實驗系統參與內彈道實驗,以達到熟悉內彈道實驗基本操作流程的目的。實踐證明,本系統不僅可以提高學生的學習興趣,輔助課堂教學,培養學生的創新意識,還可以保證實驗的經濟性和安全性,方便實現教學資源共享。
內彈道實驗通常包括彈丸初速測試和膛壓測試2個部分,通過實驗可以學習膛壓測試和初速測試的基本原理、了解膛壓隨時間變化的規律和彈丸初速的特點[3]。根據內彈道實驗大綱的相關要求,可將實驗項目內容分為實驗原理學習、實驗儀器的準備、實驗儀器的安裝、儀器校準及連線、實驗結果的整理與成績的評定等內容[4]。
(1)實驗原理及目的。膛壓測試實驗可以測得膛內壓力隨時間變化的關系。膛壓實驗的原理如圖1所示,當槍械發射彈丸時,槍管內火藥燃氣的壓力作用在膜片式壓電傳感器上,傳感器敏感膛壓,通過電荷放大器輸出電壓信號,數據采集儀對壓電傳感器的輸出信號進行采樣,經計算機處理可以得到膛壓隨時間變化的規律。彈丸初速測試主要目的是測量彈丸飛出槍管的瞬時速度,并以此反映自動武器的內彈道性能。直接測量彈丸初速比較困難,通常利用下面的區截裝置測量通過兩線圈靶中間位置的平均速度,然后通過外彈道學中的西亞切定律進行修正,間接測量出彈丸的初速度[5]。彈丸初速度測量原理如圖2所示。

圖1 膛壓測試原理

圖2 初速度測量原理
(2)實驗儀器的準備。主要包括實驗彈道槍、區截裝置、壓力傳感器、電荷放大器、電子測時儀、數據采集儀、計算機等。實驗彈道槍是經過改裝之后的半自動步槍,區截裝置是兩個線圈靶。
(3)實驗儀器的安裝。將實驗彈道槍按照要求安裝在槍架上。內彈道實驗分為初速測試和膛壓測試2個部分,兩部分實驗儀器略有不同,初速測試需要布置區截裝置,而膛壓測試需要安裝壓電傳感器。
(4)儀器校準與連線。將電荷放大器調整到與傳感器靈敏度一致,將信號輸出線連接好并接入記錄儀器,打開電荷放大器電源,調整各相關開關,以保證正常工作。
(5)實驗結果的整理與成績評定。確認各處連線無誤后啟動測試系統,內彈道計算模塊會依據內彈道各計算參量的正態分布特征自動生成初始值,并利用數值解算算法求解內彈道微分方程組,模擬壓力傳感器和區截裝置測量相關物理量的工作過程。在求解內彈道微分方程組期間為了更好地讓學生直觀了解火藥在膛內的燃燒規律和和高壓氣體推進彈丸前進的過程,后臺在進行內彈道計算的同時插入一段反映火藥在膛內的燃燒和和高壓氣體推進彈丸在膛內運動的動畫,動畫結束之后系統將內彈道計算的結果繪制成相應的曲線。實驗結束之后,系統根據學生的實驗操作情況給出考核成績。
內彈道虛擬實驗系統利用3DS Max和Unity3D平臺開發、面向軍工院校各武器類專業的三維虛擬實驗系統,具有實驗儀器三維展示、原理學習、儀器安全操作規范與提示、連線操作、儀器校準、內彈道仿真計算、推彈上膛動畫演示、虛擬互動體驗等功能。
為達到良好的教學效果,內彈道虛擬實驗系統采用模塊化的設計思想,將整個系統分成學習、訓練和考核模式3個模塊,將大綱要求的考核項目合理地分配到各個模塊中,以達到教學和實驗的要求,系統總體框圖如圖3所示。
學習模式下,用戶通過鼠標左鍵點擊相應的按鈕,可查看實驗目的與原理、實驗所需設備、學習實驗儀器操作、觀看實驗步驟演示動畫、學習實驗數據處理等指導內容。訓練模式下,用戶可參照學習模式下的指導內容,在虛擬場景中按步驟完成實驗儀器安裝和操作等相關內容的訓練。考核模式下,用戶在規定的時間內,按步驟完成虛擬實驗的相關操作及實驗數據處理,用戶提交實驗報告后,系統根據操作步驟和完成時間綜合分析自動給出考核成績。

圖3 內彈道虛擬實驗系統總體框圖
三維模型的建立是整個實驗系統的基礎,模型的真實程度直接關系到虛擬實驗的逼真度,逼真的三維模型使虛擬實驗更加形象化。Unity 3D提供了一些常見的幾何體,能滿足一些基本圖元的造型需求,對于構建復雜的三維模型是比較困難的[6]。目前,有很多專業的三維建模軟件,例如:Unigraphics NX(簡稱UG)、3DS Max等,可以很方便地進行復雜的實體建模,因此本系統采取將兩者相結合的快速建模辦法。虛擬實驗系統所使用的三維模型可以分為實驗場景模型和實驗儀器模型,兩種模型的特點有所不同,因此需要選擇不同的建模方式。針對實驗彈道槍之類的實驗儀器三維模型,其造型復雜且精度較高,首先在UG軟件中嚴格按照尺寸建模,然后將建好的UG三維模型導出為.IGES通用文件格式,再導入至3DS Max中進行優化并添加材質、制作UV貼圖,最后導入到Unity3D中備用。針對實驗場景模型的構建,Unity3D引擎有非常豐富的場景建模功能,其提供的地形系統和天空盒技術能夠很好地創建實驗靶場內的靶道和實驗室外的地形、花草樹木、天空等場景[7]。
系統開發過程中,為解決模型復用問題,采用了面向對象編程的方法,即對每個模型分別創建一個類與之關聯,對模型數據進行封裝,當需要使用某個模型時只需要實例化該類的一個對象,即可完成一切與該模型相關的操作,避免系統的模型數據文件過大,以提升系統的流暢性[8]。
虛擬場景模型構建完成后,為了體現模型的不同屬性和提升模型的真實感,需要對模型添加材質貼圖[9]。在3DS Max中,通過選定材質和貼圖模型、調整相關材質和貼圖參數,即可為選定的三維模型添加合適的材質和貼圖。圖4所示為電荷放大器添加材質和貼圖前后的對比圖。


圖4 添加材質和貼圖前后的電荷放大器
本系統構建的三維模型屬于室內場景,采用LightingMap方式進行烘焙,獲得相對清晰的物體細節特征和光照貼圖[10]。在本實驗場景中使用烘焙貼圖技術將光照信息融入到紋理信息中,形成貼圖,減少渲染的計算量,保證虛擬交互過程的流暢性。
在場景模型構建完成后,為了降低場景的復雜度,提高場景的顯示實時性,需要對場景作優化處理。系統中所涉及的儀器模型都是通過專業的三維建模軟件構建的,表面非常精細,構成模型的三角面數量巨大,在渲染時會極大地浪費計算機資源,系統運行時會影響場景渲染的速度和質量。因此,在不改變模型形狀的前提下,盡可能地減少模型的三角面數。由于在實驗場景中視點與模型距離的不同,用戶所觀察到的三維模型的具體細節也不相同。為提升模型的層次感和細節感,虛擬實驗系統采用了細節層次(Levels of Detail,LOD)技術以減少三角面的數量,達到優化三維模型的目的[11]。通過建立不同視點距離上相應細節層次的紋理圖形,使用戶的視覺沉浸感得到了增強,降低了模型復雜度,提升了系統的運行速度。
在虛擬的操作環境中,模擬壓力傳感器測量膛壓的工作過程是體現實驗系統真實性的關鍵因素。
為了提高實驗的可信度,需要對內彈道計算的初始變量進行隨機化處理。內彈道隨機性模擬計算通過全面地考慮內彈道期間的各種因素,如:火藥厚度、裝藥量以及其他裝填條件等,可獲得更加逼近真實情況的彈丸初速和膛壓數據。對大量的靶場試驗數據經過統計檢驗,得出裝藥量、火藥力、藥粒量、彈丸重量等起始參量都服從正態分布,且為獨立隨機變量,它們的均值和方差都是可知的,因此用蒙特卡洛法來對隨機內彈道計算進行模擬[12]。從內彈道計算設計的角度來看。其隨機過程可以看作是在不同的起始彈道參數條件下進行一系列的計算。因此,在數據處理中嵌入隨機內彈道計算模塊,可提高實驗的可信度[13]。在進行內彈道計算前,模塊會依據各參量的正態分布特征自動生成初始值,以便后期模擬壓力傳感器對膛壓的測量和區截裝置對彈丸初速的測量。
在虛擬實驗系統中,特殊效果的使用是提高虛擬實驗真實度和視覺沉浸感的重要組成部分。彈丸發射時的槍口特效和彈丸擊中靶板后的毀傷效果是內彈道虛擬實驗系統中兩種典型的特效。對于發射特效和毀傷特效,系統利用Unity3D中提供的特效模塊來實現。彈丸發射飛出槍口時的火焰可用Unity3D集成開發環境中粒子系統來模擬爆炸時的火焰及煙霧等效果。在彈丸預制體上添加粒子系統組件,通過對粒子的初始速度、初始粒子大小、生命周期、粒子顏色以及散發范圍和形狀等參數進行相應設置形成不同的粒子效果,以模擬彈丸出膛時的火焰效果。擊中靶板特效實現過程與發射特效實現過程相似,只需要改變相關參數,即可模擬擊中靶板時的碎片特效。
碰撞檢測是實時虛擬仿真中不可缺少的一個重要部分,是影響逼真度和真實感的重要因素。Unity3D利用包圍盒來檢測碰撞,主要提供了6種預制碰撞器,每種方法都可以與物體發生相交測試,然后進行碰撞檢測[8]。為了使彈丸在運動過程中觸發火焰和擊中靶板特效,首先需要給彈丸、槍口、靶板添加預制碰撞體,在扣動扳機后,彈丸要與靶板和槍口上的預制碰撞體之間不斷進行碰撞檢測計算,彈丸與槍口、彈丸和靶板之間如果發生碰撞則會觸發相應的特效。
在虛擬實驗系統中,人機交互方式直接影響用戶的體驗。因此,交互功能的設計對于虛擬實驗系統就顯得尤為重要。在Unity3D中開發內彈道虛擬實驗系統的關鍵是正確使用程序中的腳本函數,實現場景中的模型與用戶的交互[14]。下面對系統中用到的人機界面交互、人與虛擬物體的交互等典型的交互功能的實現進行簡要的介紹。
(1)人機界面交互。界面設計既要美觀更要方便實現系統所需的功能,在虛擬實驗系統中,不同功能之間切換都是依靠菜單和按鈕來實現。Unity3D有自帶的界面設計工具GUI系統,操作十分方便。為了把界面做得美觀大方,可先利用平面設計軟件設計好界面框架、按鈕等可視化的外觀,保存成Unity3D支持的格式文件,再導入到Unity3D。圖5所示為實驗測試儀器原理學習界面,是系統中典型的人機交互界面。
(2)人與虛擬物體的交互。儀器的虛擬操作是內彈道實驗系統軟件設計的核心。在虛擬實驗操作中會涉及到場景中測速區截裝置、電子測時儀、壓電傳感器等裝置模型的移動操作,為了實現該功能需要通過監聽鼠標的點擊事件和拖拽事件,并將鼠標的移動數據記錄下來,使所要拖動的零件根據當前位置坐標和鼠標的移動數據進行計算,即可得到零件的目標位置坐標,最后將目標位置坐標賦予當前零件即可實現鼠標對零件的拖動;在零件被拖動的過程中,系統會自動實時檢測零件與目標位置的距離,當該距離小于設定的數值,則自動將儀器的位置設為目標位置,實現儀器的安裝功能[15]。

圖5 實驗測試儀器的原理學習界面
系統各模塊開發完成后,將內彈道虛擬實驗的資源發布成可在個人計算機上運行的應用程序,在Windows系統中可直接打開運行。輸入個人信息后,完成登錄,隨后進行實驗類型、實驗模式選擇等操作。下面,以膛內壓力測試考核模式為例進行功能講解。
在考核模式下,學生可查看實驗目的,準備實驗所需要的儀器設備以及進行具體的實驗操作流程。在實驗步驟階段,首先將實驗用的彈道槍從儀器柜取出安裝在槍架上,槍管護木夾在實驗臺前支架上,槍托夾在后槍支架上,調節螺釘和墊塊使槍身與實驗臺面保持水平,穩固槍身;然后將壓力傳感器安裝在測試槍的專用測壓孔上,點擊各儀器的接線處將儀器按照實驗要求連接好并校準儀器,如圖6所示;最后點擊扳機擊發彈丸,后臺進行隨機初始參數條件下內彈道計算,與此同時頁面播放火藥在膛內燃燒和和高壓氣體推進彈丸在膛內運動的動畫,見圖7[16]。動畫播放完后,點擊虛擬計算機屏幕可以查看膛內壓力隨時間變化的曲線圖,如圖8所示。在用戶點擊提交按鈕后,根據用戶的實驗操作,系統自動給出考核成績。在系統中可根據實驗要求設計實驗步驟,對每一個步驟進行順序編號形成一個序列。在每次實驗過程中記錄操作者的操作步驟序列,再與系統預設的步驟序列進行比對,綜合實驗操作所用的時間計算出考核分數并顯示出來。

圖6 數據采集儀參數設置

圖7 彈丸在膛內運動的動畫

圖8 膛內壓力隨時間變化的曲線圖
本文采用虛擬現實技術,結合內彈道實驗教學大綱,利用Unity3D交互式開發引擎,開發了一套內彈道虛擬實驗系統。系統實現了對內彈道實驗基本流程的虛擬仿真。
虛擬內彈道實驗,解決了彈道學課程實驗難以實施的問題。在實驗過程中不依賴真實的實驗設備,沒有真實實驗的危險性。同時,還對實驗過程中裝藥量、火藥力、藥粒量、彈丸等初始參數進行了隨機模擬,利用內彈道仿真解算程序對真實的物理過程進行模擬,提升了實驗的可信度。
本系統達到了預期的效果,未來將進一步完善其內容和功能。具體的工作包括:增強系統的沉浸性、增加對數據的測量模擬和誤差分析模塊等。