黃春營,姜 林,李 超,張 翔
(63892部隊(duì),洛陽 471000)
軍事領(lǐng)域是計(jì)算機(jī)仿真應(yīng)用的一個(gè)重要領(lǐng)域,尤其是在作戰(zhàn)模擬和推演方面發(fā)揮著關(guān)鍵作用。作戰(zhàn)模擬仿真不需要消耗武器裝備、彈藥和大量的人力資源等,不僅能夠有效地降低模擬訓(xùn)練的成本,同時(shí)還可對(duì)仿真推演中的相關(guān)數(shù)據(jù)進(jìn)行實(shí)時(shí)的統(tǒng)計(jì)記錄,并在仿真結(jié)束后對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步分析評(píng)估,為后續(xù)的推演提供有力支撐。目前,戰(zhàn)場仿真推演已經(jīng)成為實(shí)現(xiàn)戰(zhàn)略戰(zhàn)術(shù)演練的一種主流方式,利用仿真技術(shù)構(gòu)建出極其逼真的戰(zhàn)場環(huán)境,并將場景中所需的細(xì)節(jié)及關(guān)鍵設(shè)備等進(jìn)行仿真還原,能夠有效提升相關(guān)領(lǐng)域作戰(zhàn)技能和戰(zhàn)略水平;另外,仿真模擬也打破了自然環(huán)境及天氣條件等自然環(huán)境對(duì)訓(xùn)練的約束的問題,從而極大地提升了模擬作戰(zhàn)的效率[1-2]。
Unity3D 游戲引擎是一款高度集成的三維游戲開發(fā)應(yīng)用引擎和組合工具套件[3],不僅包括了對(duì)圖像、音頻、物理特性、粒子系統(tǒng)特性、網(wǎng)絡(luò)通訊等多種特性的支持,而且能夠適配主流3D 軟件的文件格式(3DS Max、Maya)和美工資源格式。該引擎內(nèi)置的PhysX 物理系統(tǒng)能夠遵循物理定律,真實(shí)地模擬現(xiàn)實(shí)世界中物體的運(yùn)動(dòng)規(guī)律,從而增強(qiáng)系統(tǒng)中仿真的真實(shí)性[4]。另外,Unity3D 還具有跨平臺(tái)、人機(jī)交互性好、仿真速度快,而且支持虛擬現(xiàn)實(shí)設(shè)備等多種特性。
本文旨在應(yīng)用Unity3D 引擎根據(jù)模塊化的思想構(gòu)設(shè)一種作戰(zhàn)仿真推演平臺(tái),并輔以智能語音控制和VR 設(shè)備的真實(shí)體驗(yàn),從而實(shí)現(xiàn)虛擬場景逼真、作戰(zhàn)場景豐富且交互友好的作戰(zhàn)仿真推演平臺(tái)。
游戲引擎指預(yù)先設(shè)計(jì)的能夠應(yīng)用于游戲系統(tǒng)或應(yīng)用的核心程序組件。引擎是用來控制所有功能的最主要模塊,從對(duì)模型的運(yùn)動(dòng)控制到對(duì)物體碰撞的計(jì)算以及各種物理方面的特性,都是通過引擎來實(shí)現(xiàn)的。當(dāng)下,應(yīng)用較為廣泛的開發(fā)引擎有Unreal Engine 4、CryENGINE3、Virtools、Quest3D、LabVIEW、Eon 與Unity3D等,綜合比較各引擎的跨平臺(tái)特性、協(xié)同性、畫面顯示效果、操作難度、兼容性和擴(kuò)展性等一系列特性,結(jié)合自身需求,應(yīng)用Unity3D 來進(jìn)行仿真推演平臺(tái)的研發(fā)是比較理想的選擇[5-6]。
Unity3D平臺(tái)的應(yīng)用特性如下:
(1)資源可植入性高。Unity3D 能夠應(yīng)用絕大多數(shù)常見格式的資源,配合其它相關(guān)的建模類的、動(dòng)畫制作類的、仿真類的應(yīng)用程序,可以導(dǎo)入多種類型的模型、紋理、材質(zhì)、動(dòng)畫效果、音頻、視頻等各類資源,為仿真模擬對(duì)應(yīng)的功能打下基礎(chǔ)。
(2)跨平臺(tái)性。Unity3D 充分體現(xiàn)了面向?qū)ο蟮木幊趟枷?,其開發(fā)的項(xiàng)目可以跨Windows、Android、OSX、IOS 等多平臺(tái)進(jìn)行一鍵式發(fā)布,從PC 到MAC 乃至到移動(dòng)終端,Unity 平臺(tái)的應(yīng)用極其廣泛,在滿足不同平臺(tái)要求方面有獨(dú)特的優(yōu)勢(shì)。
(3)開發(fā)便捷。Unity3D 具有可視化的編輯開發(fā)能力,用戶能夠直接有效控制和編輯模型、動(dòng)畫等資源,且具有良好的編程環(huán)境,代碼編寫應(yīng)用方便,自帶有物理引擎,可為模型對(duì)象賦予真實(shí)的物理屬性,在物理模擬仿真方面具有極大的優(yōu)勢(shì)。
仿真環(huán)境搭建是計(jì)算機(jī)仿真推演的基礎(chǔ),主要包括仿真所需地形的創(chuàng)建,仿真試驗(yàn)中模型的生成,環(huán)境和粒子特效的生成以及用戶界面設(shè)計(jì)等。
仿真環(huán)境中地形的創(chuàng)建一般分為兩種情況,一種是設(shè)計(jì)人員根據(jù)自己的想象通過Terrain 工具進(jìn)行繪制,由于沒有與真實(shí)地形進(jìn)行關(guān)聯(lián),這種方式繪制的地形經(jīng)常用于三維游戲開發(fā);另一種就是根據(jù)真實(shí)世界的地形來繪制構(gòu)建仿真環(huán)境中的地形,常見的是基于數(shù)字高程模型(digital elevation model,DEM)地形建模技術(shù)進(jìn)行真實(shí)地形的創(chuàng)建[7-8]。由于DEM 保存了真實(shí)地形的基礎(chǔ)數(shù)據(jù),基于DEM 的地形建模技術(shù)能夠真實(shí)有效地模擬出仿真所需的地形。
基于DEM的地形構(gòu)建流程如圖1所示。
建立坑塘進(jìn)排水分家系統(tǒng),形成“長藤結(jié)瓜式”結(jié)構(gòu),引、蓄、提相結(jié)合,大、中、小相結(jié)合,將本地水和外調(diào)水通暢地蓄進(jìn)坑塘,將處理后符合灌溉水質(zhì)的坑塘污水通暢地灌溉農(nóng)田??犹两?jīng)過改造,清淤加深,擴(kuò)建防滲,修整配套,做到廢棄土地建新塘,小塘并大塘,舊塘擴(kuò)新塘,村村建立當(dāng)家塘,保障水能蓄得住。
圖1 基于DEM地形構(gòu)建流程
仿真平臺(tái)中除了地形外還需要其它例如房屋、車輛、裝備等各式各樣的模型,Unity3D 雖然可支持簡單模型的建模,但對(duì)于軍事武器裝備等較為復(fù)雜的專業(yè)模型,通常需要借助第三方建模軟件來創(chuàng)建。
3DS Max是一款功能強(qiáng)大、操作簡便的建模軟件[9-10],使用3DS Max建模的流程圖如圖2所示。
圖2 建模流程圖
首先通過實(shí)地測量或從設(shè)計(jì)圖紙中獲得所需要建立模型的各項(xiàng)形體特征參數(shù),其次利用軟件中的基礎(chǔ)性狀建?;蚨噙呅谓5确椒ńM合建立起對(duì)應(yīng)的三維模型,然后給模型選取添加適當(dāng)?shù)牟馁|(zhì),再制作模型所需的漫反射貼圖、法線貼圖等不同類型的貼圖,最后對(duì)創(chuàng)建好的模型進(jìn)行調(diào)整優(yōu)化,并導(dǎo)出為Unity3D 所支持的.FBX或.OBJ格式的文件。
為了進(jìn)一步提升仿真環(huán)境的真實(shí)性,通常還需要在場景中添加雨、雪、霧等自然氣候環(huán)境。這些氣候環(huán)境效果的實(shí)現(xiàn)通常是粒子系統(tǒng)(particle system)來實(shí)現(xiàn),粒子系統(tǒng)是一種應(yīng)用于計(jì)算機(jī)圖形學(xué)中模擬不規(guī)則物體的比較實(shí)用的建模方法,在構(gòu)造和模擬物體的時(shí)候,粒子系統(tǒng)可以明顯突出物體的實(shí)時(shí)性和動(dòng)態(tài)效果,因此,粒子系統(tǒng)經(jīng)常被用來模擬雨、雪、霧等氣候環(huán)境和爆炸、火光、流光等特殊效果。在Unity3D 中可以實(shí)現(xiàn)不同的天氣效果,用戶可以根據(jù)所需的天氣狀況選擇添加不同種類的特效來模擬真實(shí)環(huán)境中的氣候環(huán)境,極大地提高虛擬場景的逼真程度。
目前,Unity3D 可以通過功能強(qiáng)大的插件來模擬多種天氣環(huán)境,常見的插件主要有Weather Maker、Unity Enviro、UniStorm等。其中,Weather Maker 是Unity3D 中功能比較完善的集天氣、地形覆蓋、水和天空等一體的模擬插件,可以便捷地模擬雨、雪、霧、冰雹等各類氣候情況,并且模擬出的氣候環(huán)境支持與場景內(nèi)其他模型的碰撞檢測,使得場景效果更加真實(shí)。
仿真環(huán)境中的爆炸、火焰效果是在粒子系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的一種物理模型,再添加上紋理貼圖來實(shí)現(xiàn)對(duì)應(yīng)效果;對(duì)于煙霧的模擬和渲染則需要采用動(dòng)態(tài)圖像渲染法,通常是采用Billboard 算法將戰(zhàn)場上爆炸場景中的關(guān)鍵幀制作成紋理貼圖,再采用線性插值的算法來實(shí)現(xiàn)煙霧的動(dòng)態(tài)渲染和模擬[11-12]。
為了便捷地實(shí)現(xiàn)用戶界面,Unity3D 內(nèi)部集成了NGUI 和UGUI 組件,用戶可以直接通過圖形化方式來繪制用戶界面。UGUI 主要將NGUI中的基礎(chǔ)功能組件進(jìn)行封裝,還通過對(duì)UI 組件的分層設(shè)置來控制UI 組件的渲染流程和順序,這種方式能有效地解決NGUI中多重錨點(diǎn)之間的控件分布,控制操作復(fù)雜的情況;另外,UGUI系統(tǒng)中也內(nèi)置了許多常用的基礎(chǔ)UI 控件以及布局控件,按照需求通過合理搭配以及動(dòng)態(tài)加載這些基礎(chǔ)控件就可以在Unity3D 中完成復(fù)雜的用戶界面設(shè)計(jì)。
為了提高仿真系統(tǒng)的操控便捷性,可以在系統(tǒng)中引入語音控制。百度語音是百度公司開發(fā)的人工智能系列產(chǎn)品,它具有十分強(qiáng)大的語音功能。百度語音不僅能夠?qū)崿F(xiàn)語音智能搜索,還可以下達(dá)語音控制指令,通過語音控制來實(shí)現(xiàn)我們想要達(dá)到的操作。通過百度語音識(shí)別出我們下達(dá)的語音控制指令,來取代傳統(tǒng)的通過鍵盤、鼠標(biāo)等的操控方式,讓系統(tǒng)有更好的交互控制效果。
在Unity3D 中實(shí)現(xiàn)語音控制,可以采用接口調(diào)用方式對(duì)語音信號(hào)在線識(shí)別。首先識(shí)別外部的音頻設(shè)備,然后對(duì)語音指令進(jìn)行錄制,再對(duì)音頻資源中的有效信息進(jìn)行截取,最后將音頻文件轉(zhuǎn)化為文本信息,實(shí)現(xiàn)將音頻輸入到文本輸入的轉(zhuǎn)化,達(dá)到語音控制指令的下達(dá)。
虛擬現(xiàn)實(shí)技術(shù)是一種處于高速發(fā)展和探索階段的新技術(shù),已經(jīng)在航空航天、醫(yī)療實(shí)踐、室內(nèi)設(shè)計(jì)、教學(xué)培訓(xùn)等領(lǐng)域嶄露頭角。虛擬現(xiàn)實(shí)仿真系統(tǒng)的特性也正在從3I,即沉浸感(immersion)、交互感(interaction)、想象型(imagination)模式向4I,增加智能化(intelligent)的方向逐步進(jìn)化。目前虛擬現(xiàn)實(shí)技術(shù)應(yīng)用的相關(guān)產(chǎn)品主要利用虛擬現(xiàn)實(shí)頭盔、手套、眼鏡等設(shè)備進(jìn)行交互,計(jì)算機(jī)對(duì)接收到的動(dòng)作和指令信息進(jìn)行分析處理后傳給應(yīng)用程序,再由設(shè)備對(duì)用戶的視覺、聽覺、觸覺等不同感官進(jìn)行反饋輸出,由此用戶可以深度體驗(yàn)虛擬現(xiàn)實(shí)技術(shù)帶來的真實(shí)感。為了支持VR 設(shè)備的應(yīng)用,Unity3D 提供了一種支持手持式和可穿戴設(shè)備等VR 設(shè)備的應(yīng)用程序,包含了Unity 開發(fā)者使用到的界面功能,為VR設(shè)備和Unity 應(yīng)用程序之間的交互建立了通道。
仿真推演平臺(tái)的構(gòu)建思路是在Unity3D 平臺(tái)的基礎(chǔ)上,通過集成一些必要的插件,組建一套仿真平臺(tái)開發(fā)必備的基礎(chǔ)環(huán)境。隨后在基礎(chǔ)環(huán)境上實(shí)現(xiàn)仿真場景的構(gòu)建和仿真推演。該仿真平臺(tái)的架構(gòu)如圖3所示。
圖3 仿真平臺(tái)系統(tǒng)架構(gòu)圖
該平臺(tái)按照功能模塊總共劃分為六個(gè)部分,分別是輔助控制層、顯示層、通信層、業(yè)務(wù)邏輯層、算法層、數(shù)據(jù)層,其中數(shù)據(jù)層與算法層供業(yè)務(wù)邏輯層調(diào)用,業(yè)務(wù)邏輯層與顯示層均通過通信層完成交互,顯示層和輔助控制層可以調(diào)用業(yè)務(wù)邏輯層。各層具體功能如下。
(1)顯示層。主要負(fù)責(zé)與仿真相關(guān)的場景和UI 界面展示,其中UI 界面是業(yè)務(wù)邏輯的主要輸入端,可以包含選擇界面、控制策略界面、多種參數(shù)設(shè)置界面等。除了顯示作用之外,顯示層還負(fù)責(zé)將用戶的操作以及輸入請(qǐng)求通過Event-System(事件系統(tǒng))模塊轉(zhuǎn)發(fā)給業(yè)務(wù)邏輯層來完成后續(xù)的業(yè)務(wù)邏輯處理。
(2)輔助控制層。主要是語音控制和VR 設(shè)備輸入控制部分,負(fù)責(zé)將語音輸入的指令或者VR 設(shè)備傳輸?shù)闹噶钚盘?hào)直接傳給對(duì)應(yīng)的業(yè)務(wù)邏輯部分,從而增加系統(tǒng)的操控性、便捷性和交互性。
(3)通信層。主要負(fù)責(zé)系統(tǒng)中消息的傳遞與數(shù)據(jù)的傳輸,可以將系統(tǒng)中各個(gè)模塊進(jìn)行解耦,模塊之間的信息傳輸基本都通過該層的消息廣播中心和EventSystem 模塊完成,消息廣播中心是通過觀察者模式進(jìn)行設(shè)計(jì)實(shí)現(xiàn)的,其它各個(gè)模塊可以通過在消息廣播中心中訂閱事件來實(shí)現(xiàn)對(duì)特定事件的監(jiān)聽。
(4)業(yè)務(wù)邏輯層。負(fù)責(zé)具體的業(yè)務(wù)邏輯,主要包括各個(gè)業(yè)務(wù)模塊,其中有界面管理模塊、資源管理模塊、場景管理模塊、場景交互等,業(yè)務(wù)邏輯層在完成用戶請(qǐng)求的邏輯功能后將結(jié)果反饋給顯示層進(jìn)行顯示。
(5)算法層。包含系統(tǒng)所涉及到的各種算法模型,主要包括數(shù)學(xué)模型、運(yùn)動(dòng)模型、檢測相關(guān)算法以及用于圖形化建模的模塊算法,算法層主要供業(yè)務(wù)邏輯層進(jìn)行調(diào)用,來完成相應(yīng)的功能。
(6)數(shù)據(jù)層。主要包括資源數(shù)據(jù)、配置數(shù)據(jù)、推演數(shù)據(jù)、腳本數(shù)據(jù)等,這些數(shù)據(jù)分級(jí)分類處理,主要供業(yè)務(wù)邏輯層調(diào)用。
基于Unity3D 的游戲引擎中的技術(shù)方案,通過模塊化的思想構(gòu)建出作戰(zhàn)仿真推演平臺(tái),設(shè)計(jì)了平臺(tái)整體結(jié)構(gòu)的理論方案設(shè)計(jì)與實(shí)現(xiàn)方式,該平臺(tái)具有虛擬作戰(zhàn)場景逼真、人機(jī)交互友好、可復(fù)用性強(qiáng)以及可擴(kuò)展性高等特點(diǎn)。相比其他的渲染系統(tǒng),Unity3D 能夠渲染出更好的場景,能夠使開發(fā)者更加專注仿真模型的開發(fā);另外輔以智能語音控制和VR 設(shè)備的交互體驗(yàn),對(duì)仿真效果的提升有極大的幫助。