国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D的海戰(zhàn)場三維態(tài)勢實(shí)時顯示系統(tǒng)設(shè)計與實(shí)現(xiàn)

2018-04-12 06:08:36程健慶
指揮控制與仿真 2018年2期
關(guān)鍵詞:腳本態(tài)勢戰(zhàn)場

江 波, 程健慶, 朱 偉

(江蘇自動化研究所, 江蘇 連云港 222061)

戰(zhàn)場三維態(tài)勢可視化是一個利用計算機(jī)圖形、圖像處理技術(shù)表現(xiàn)戰(zhàn)場環(huán)境,并在此基礎(chǔ)上將當(dāng)前態(tài)勢作戰(zhàn)計劃、作戰(zhàn)雙方兵力對比、作戰(zhàn)雙方交戰(zhàn)狀態(tài)、態(tài)勢演變過程以可視化的方式顯示出來的動態(tài)仿真技術(shù)[1]。指揮員能夠在貼近實(shí)戰(zhàn)的訓(xùn)練環(huán)境中,實(shí)時獲取軍事情況信息,以可視化的方法進(jìn)行戰(zhàn)場規(guī)劃、指揮決策和指揮控制[2]。美國海軍開發(fā)的海戰(zhàn)場可視化系統(tǒng)“the Dragon”,以三維顯示的方式來展現(xiàn)地理環(huán)境、各作戰(zhàn)單元、戰(zhàn)況和戰(zhàn)果等信息,向指揮員和作戰(zhàn)人員提供一致的戰(zhàn)役戰(zhàn)術(shù)面,其戰(zhàn)場態(tài)勢顯示技術(shù)已經(jīng)達(dá)到了較高水平[1]。我軍態(tài)勢推演研究起步較晚,系統(tǒng)功能有限。如李林橙等采用OpenGL仿真艘艦艇不同編隊(duì)排列行進(jìn)的過程,具有一定的跨平臺特性,但無法提供圖形界面或用戶輸入函數(shù),依賴項(xiàng)過多,開發(fā)難度大;年福純、周錦標(biāo)等利用STK開發(fā)了一個航天領(lǐng)域三維顯示系統(tǒng),雖然其技術(shù)成熟,效率高,但利用此類針對特殊領(lǐng)域的三維仿真引擎開發(fā)海戰(zhàn)場三維態(tài)勢顯示系統(tǒng),不能發(fā)揮其優(yōu)良特性,且成本高昂;陳彬,鞠儒生等利用Vega Prime仿真平臺開發(fā)了基于Web 的作戰(zhàn)模擬態(tài)勢顯示系統(tǒng),但是Vega Prime對大范圍地形的支持度不高,易產(chǎn)生延時,實(shí)時性難以保證。

Unity3D是由Unity Technologies開發(fā)的一個多平臺綜合三維游戲開發(fā)引擎,該引擎具有便捷的可視化開發(fā)環(huán)境,支持腳本語言包括C#、JavaScript等[3]。與OpenGL相比,Unity3D兼容各種操作系統(tǒng),具有良好的跨平臺性;與STK相比,Unity3D功能多樣,能夠滿足各種領(lǐng)域的三維仿真需求,且開發(fā)周期短、成本低;與Vega Prime相比,Unity3D作為一款優(yōu)秀的游戲開發(fā)引擎,支持大范圍地形的顯示,仿真實(shí)時性較好,且用戶參與度高。

因此,以Unity3D為仿真平臺搭建海戰(zhàn)場三維態(tài)勢顯示系統(tǒng)具有顯著的優(yōu)越性與可行性。本文針對系統(tǒng)搭建與仿真過程中遇到的問題提出具體可行的方案,對同類型的研究具有一定的參考價值。

1 系統(tǒng)設(shè)計

1.1 系統(tǒng)功能需求

1) 三維場景顯示功能需求

為顯示系統(tǒng)添加逼真的海戰(zhàn)場三維環(huán)境,建立并分類管理不同的戰(zhàn)場環(huán)境實(shí)體模型,使得顯示系統(tǒng)的顯示效果更加直觀真實(shí)。具體包括視景繪制與三維實(shí)例建模。

2) 態(tài)勢信息同步功能需求

實(shí)時同步由網(wǎng)絡(luò)傳輸?shù)膽?zhàn)場態(tài)勢信息,更新戰(zhàn)場環(huán)境實(shí)體姿態(tài)數(shù)據(jù)并保存。具體包括數(shù)據(jù)庫的設(shè)計與數(shù)據(jù)傳送機(jī)制的優(yōu)化。

3) 實(shí)體驅(qū)動功能需求

通過連接數(shù)據(jù)庫,利用讀取的數(shù)據(jù)庫態(tài)勢數(shù)據(jù),驅(qū)動各戰(zhàn)場環(huán)境實(shí)體運(yùn)行,達(dá)到視景仿真的目的。具體包括數(shù)據(jù)庫連接腳本設(shè)計與驅(qū)動腳本設(shè)計。

4) 交互功能需求

支持視角跟隨與全景切換,支持實(shí)體信息查詢,能進(jìn)行態(tài)勢編輯操作,支持手動添加、刪除和修改實(shí)體信息。

5) 態(tài)勢推演功能需求

支持利用自定義態(tài)勢數(shù)據(jù)信息繪制海戰(zhàn)場環(huán)境,驅(qū)動系統(tǒng)運(yùn)行并顯示,考察系統(tǒng)推演效果。

1.2 系統(tǒng)架構(gòu)設(shè)計

海戰(zhàn)場三維態(tài)勢顯示系統(tǒng)架構(gòu)如圖1所示,戰(zhàn)場可視化系統(tǒng)分為網(wǎng)絡(luò)及接口層、數(shù)據(jù)庫層、三維引擎層、應(yīng)用層,四層之間相互獨(dú)立,以保證系統(tǒng)的開放性。網(wǎng)絡(luò)及數(shù)據(jù)接口層接收戰(zhàn)場環(huán)境實(shí)體姿態(tài)信息、運(yùn)動狀態(tài)信息,以及水文氣象等信息等;數(shù)據(jù)庫層通過構(gòu)建態(tài)勢數(shù)據(jù)庫,實(shí)時同步網(wǎng)絡(luò)層傳送的態(tài)勢數(shù)據(jù),更新并存儲場景繪制所需的各種資源信息以供調(diào)用;三維引擎層采用Unity3D三維游戲開發(fā)平臺,借助相關(guān)三維建模軟件,制作并添加海戰(zhàn)場戰(zhàn)場環(huán)境實(shí)體等三維模型,通過腳本的設(shè)計與編譯,完成戰(zhàn)場環(huán)境實(shí)體的驅(qū)動與戰(zhàn)場場景繪制的工作;應(yīng)用層采用功能模塊式設(shè)計,完成海戰(zhàn)場態(tài)勢的三維顯示,并即時響應(yīng)用戶操作。

圖1 系統(tǒng)架構(gòu)示意圖

2 系統(tǒng)開發(fā)技術(shù)方案

2.1 三維實(shí)例建模

三維建模常用工具包Blender、Maya、ZBrush、3Ds Max、Cinema 4D等。相較于其他建模工具,3Ds Max在三維觀感、貼圖渲染、精細(xì)處理以及模型兼容性等方面優(yōu)勢突出。通過3Ds Max網(wǎng)格法建立三維模型如圖2所示,為實(shí)體添加UV修改器,添加紋理。為了符合Unity3D 引擎的應(yīng)用標(biāo)準(zhǔn),在高級選項(xiàng)中將單位設(shè)置為米,利用FBX 插件導(dǎo)出生成.FBX 文件[5]。將.FBX模型存放至Unity3D的Assets工程資源文件夾下。根據(jù)需要在場景中添加實(shí)體對象,設(shè)置光照、霧、天空盒等參數(shù),最后,運(yùn)行場景進(jìn)行瀏覽、調(diào)試[5]。

圖2 3DMax網(wǎng)格法建模示意圖

2.2 數(shù)據(jù)庫設(shè)計

在對海戰(zhàn)場三維作戰(zhàn)態(tài)勢繪制中,為了快速準(zhǔn)確地顯示戰(zhàn)場環(huán)境實(shí)體包括艦船、潛艇、航母以及炮彈、魚類、雷達(dá)等運(yùn)行軌跡,將網(wǎng)絡(luò)實(shí)時同步的實(shí)體位置信息通過數(shù)據(jù)庫進(jìn)行有效存儲并分類管理。

Unity3D支持各主流數(shù)據(jù)庫系統(tǒng)的連接。以MySQL為例,添加System.Data.dll、System.Drawing.dll、MySql.Data.dll文件至Unity3D工程文件夾Assets下[6],利用動態(tài)鏈接庫,Unity3D通過腳本即可與數(shù)據(jù)庫實(shí)現(xiàn)交互。

2.3 視景仿真

Unity3D通過添加腳本驅(qū)動實(shí)體運(yùn)行,而MonoBehaviour是所有腳本的基類[4]。通過繼承MonoBehaviour基類,編寫各功能腳本以實(shí)現(xiàn)包括位移、旋轉(zhuǎn)等動態(tài)行為以及數(shù)據(jù)庫連接等功能。

另外,碰撞檢測是虛擬現(xiàn)實(shí)仿真中一個重要環(huán)節(jié),尤其在軍事打擊中,實(shí)體碰撞頻率更高,更需要完善碰撞的邏輯。而Unity3D 自帶四種碰撞檢測包圍盒,分別BoxCollider、SphereCollider、WheelCollider和MeshCollider。通過大量實(shí)驗(yàn)比較分析,球形碰撞SphereCollider對各個單一實(shí)體實(shí)例的作用與性能最優(yōu)。在系統(tǒng)仿真過程中的碰撞檢,利用SphereCollider包圍盒,使得戰(zhàn)場環(huán)境實(shí)體與實(shí)體之間,實(shí)體與環(huán)境之間及環(huán)境內(nèi)部間的碰撞效果更良好。

2.4 硬件適配

Unity3D具有強(qiáng)大的跨平臺能力,完成Demo可以發(fā)布為各種主流類型操作系統(tǒng)兼容的應(yīng)用程序[1]。在主菜單“File”選項(xiàng)中下拉框選擇“Build Settings”,根據(jù)所需選擇Platform列表操作系統(tǒng),打包生成對應(yīng)運(yùn)行程序如.exe、.apk、.ipa等,從而適配各類三維顯示設(shè)備[4]。

3 關(guān)鍵技術(shù)分析

3.1 數(shù)據(jù)庫連接優(yōu)化

每一個戰(zhàn)場環(huán)境實(shí)體的運(yùn)行都需要通過連接數(shù)據(jù)庫,讀入當(dāng)前坐標(biāo)等運(yùn)行狀態(tài)數(shù)據(jù),進(jìn)而通過腳本驅(qū)動器運(yùn)行。海戰(zhàn)場戰(zhàn)場環(huán)境實(shí)體復(fù)雜多樣,每一個實(shí)體的運(yùn)行數(shù)據(jù)各自獨(dú)立,運(yùn)行更新時間不統(tǒng)一并且數(shù)據(jù)量巨大。為了同步仿真界面的運(yùn)行,若采取多實(shí)體頻繁連接數(shù)據(jù)庫的方法,勢必造成大量的資源消耗,甚至造成數(shù)據(jù)丟失、臟讀、誤讀,連接異常,嚴(yán)重危害顯示效果的真實(shí)性。因此,可通過添加空實(shí)例腳本的方法解決多實(shí)體數(shù)據(jù)同步的問題。

在Unity3D工程界面預(yù)制頁prefab中創(chuàng)建空實(shí)例名為Data-Con,屬性設(shè)為非剛體,以防碰撞產(chǎn)生錯誤。在整個海戰(zhàn)場場景顯示中,該實(shí)例顯示透明,即不解釋為任何一個需要顯示的實(shí)物。為Data-Con實(shí)例添加單個腳本,該腳本唯一功能是作為Unit3D連接外部MySQL數(shù)據(jù)庫的唯一接口,用來讀取數(shù)據(jù)庫并存放數(shù)據(jù)。各實(shí)體實(shí)例的驅(qū)動腳本只需調(diào)用Data-Con腳本即可獲得坐標(biāo)等數(shù)據(jù),不需要分別連接數(shù)據(jù)庫,通過內(nèi)部腳本間相互調(diào)用將極大地提高該過程的運(yùn)行效率。

該腳本同樣可添加到山、海水、天空盒、攝像頭等實(shí)例上,單獨(dú)設(shè)置空實(shí)例可更好地區(qū)別各自的功能,便于系統(tǒng)維護(hù)。

3.2 定時驅(qū)動

Unity3D具有實(shí)時更新的機(jī)制,也可以自定義刷新的頻率,若以該刷新頻率來驅(qū)動實(shí)體的運(yùn)行,則每一次刷新,都需要執(zhí)行一次數(shù)據(jù)讀入并驅(qū)動運(yùn)行的過程。而為了保證畫面的流暢,仿真畫面的刷新需要得到較高的頻率保證。因此,刷新的頻率極有可能遠(yuǎn)遠(yuǎn)超出數(shù)據(jù)同步的頻率,這將導(dǎo)致大量無用的重復(fù)數(shù)據(jù)調(diào)用運(yùn)算,影響仿真的效率。

Unity3D自帶協(xié)程運(yùn)行機(jī)制,如果MonoBehaviour處于激活狀態(tài),而且yield的條件滿足,即執(zhí)行后面的功能。以定時器InvokeRepeating()為例,Unity3D每一幀都對其進(jìn)行處理,判斷其是否滿足條件以執(zhí)行相應(yīng)功能指令。因此,利用協(xié)程定時處理功能,設(shè)定合適的時限(頻率),定時驅(qū)動實(shí)體運(yùn)行,既提高了系統(tǒng)運(yùn)行的效率,也緩解了數(shù)據(jù)庫和Data-Con腳本高頻讀取的壓力。系統(tǒng)實(shí)體定時驅(qū)動運(yùn)行基本流程如圖3。

1)如圖3所示,Data-Con腳本在Start() 中設(shè)定延時InvokeRepeating()協(xié)程,設(shè)定每秒定時調(diào)用模塊LaunchProjiectile,在LaunchProjiectile中定義MySql-Connect()數(shù)據(jù)庫連接函數(shù)。

2)在各實(shí)體驅(qū)動腳本中,通過star()寫入GameObject.Find("Data-Con")與Data-Con腳本完成連接,連接過程只在系統(tǒng)開啟時一次完成。利用讀取的數(shù)據(jù)實(shí)時驅(qū)動實(shí)體運(yùn)行。

3)通過UI設(shè)計中斷/停止鍵,切斷數(shù)據(jù)庫連接,釋放資源,結(jié)束仿真。

圖3 定時驅(qū)動基本流程圖

3.3 姿態(tài)調(diào)整

對于大部分戰(zhàn)場環(huán)境實(shí)體的運(yùn)行而言,其軌跡更多為連續(xù)曲線,對任意時刻的姿態(tài)變換都有一個轉(zhuǎn)變的過程,極少存在棱角分明的折線軌跡。驅(qū)動實(shí)體運(yùn)行主要通過在每一幀刷新中不斷修改物體的坐標(biāo)位置達(dá)到位移效果。在MonoBehaviour派生類中利用插值法如Vector3.Lerp()可使實(shí)體運(yùn)動軌跡趨于平滑。其實(shí)現(xiàn)依賴于位移函數(shù):functionLerp (from, to, t): Vector3。其中,初始位置為from,實(shí)體位置為to,兩個向量之間,按照數(shù)字t(0≤t≤1)從from到to依次插值。當(dāng)t=0時,返回from。當(dāng)t=1時,返回to。每一次更新坐標(biāo)數(shù)據(jù),利用插值法不斷插入細(xì)化坐標(biāo),運(yùn)動軌跡更趨于平穩(wěn)。

海戰(zhàn)場態(tài)勢仿真的戰(zhàn)場環(huán)境實(shí)體需要形象具體直觀,因而通過建模軟件得到的模型實(shí)體不應(yīng)該全是幾何規(guī)則模型。換言之,實(shí)體的運(yùn)行在調(diào)整航向時,其姿態(tài)不能永遠(yuǎn)保持不變。為呈現(xiàn)真實(shí)的戰(zhàn)場環(huán)境實(shí)體運(yùn)行時的航向修正,可以通過矢量運(yùn)算計算當(dāng)前偏轉(zhuǎn)角,驅(qū)動旋轉(zhuǎn)。

戰(zhàn)場環(huán)境實(shí)體的旋轉(zhuǎn)同樣通過繼承基類,利用實(shí)體當(dāng)前時刻乃至之前時刻位置坐標(biāo),擬合運(yùn)動曲線。如圖4所示,每次獲取坐標(biāo)數(shù)據(jù)后,計算當(dāng)前航向矢量,計算偏轉(zhuǎn)角并驅(qū)動旋轉(zhuǎn)。每次旋轉(zhuǎn)后,更新上一刻航向?yàn)楫?dāng)前航向,繼續(xù)下一輪循環(huán),依次類推,最終使得軌跡曲線更加平滑,航向始終與軌跡趨于一致。

圖4 戰(zhàn)場環(huán)境實(shí)體偏轉(zhuǎn)流程示意圖

4 系統(tǒng)實(shí)現(xiàn)與測試

為了測試系統(tǒng)的運(yùn)行效果,利用C語言自定義海戰(zhàn)場態(tài)勢信息源,運(yùn)行系統(tǒng)進(jìn)行模擬。該測試涉及的軟件工具版本分別為Visual Studio2010、Unity3D 5.3、MySQL 5.7。

利用Visual Studio開發(fā)平臺,自定義實(shí)體運(yùn)行軌跡,建立關(guān)于時間t的數(shù)學(xué)模型,通過C語言編寫軌跡函數(shù), 利用Sleep(time)函數(shù)產(chǎn)生延遲效果,每隔time數(shù)值的毫秒,在設(shè)定的軌跡函數(shù)中產(chǎn)生一個新的坐標(biāo),并實(shí)時存入數(shù)據(jù)庫。以某航母模型為例,運(yùn)行過程利用多重曝光技術(shù)合成顯示結(jié)果動態(tài)效果如圖5所示。

圖5 某航母模型運(yùn)行軌跡示意圖

通過測試可發(fā)現(xiàn):

1)基于Unity3D的海戰(zhàn)場三維態(tài)勢顯示系統(tǒng)能夠通過態(tài)勢數(shù)據(jù)驅(qū)動實(shí)體的移動,并能自動擬合軌跡,調(diào)整方向;

2)通過Unity3D的console控制臺可以發(fā)現(xiàn),所有數(shù)據(jù)都被有效檢測,實(shí)時性較好;

3)范圍有限,視景區(qū)域不能同時兼顧天空海洋,尤其是對水下實(shí)體的展現(xiàn)性能不足。

4)偶爾存在卡頓,后期開發(fā)仍需繼續(xù)完善對數(shù)據(jù)傳輸機(jī)制的優(yōu)化,提高數(shù)據(jù)庫以及數(shù)據(jù)庫與Unity3D連接的工作效率。

5 結(jié)束語

基于Unity3D仿真引擎,本文初步搭建完成一個海戰(zhàn)場三維態(tài)勢實(shí)時顯示系統(tǒng),實(shí)現(xiàn)了系統(tǒng)顯示的基本功能,并對系統(tǒng)實(shí)時性展開研究,獲得較好的效果。本文在三維建模、Unity3D與數(shù)據(jù)庫交互、腳本設(shè)計、實(shí)時性等方面的研究對同類型三維視景仿真研究具有一定的借鑒意義。

參考文獻(xiàn):

[1]彭誠.戰(zhàn)場三維可視化技術(shù)研究[D].杭州:浙江大學(xué),2006.

[2]明芳.海戰(zhàn)場三維態(tài)勢可視化技術(shù)研究[D]. 武漢:武漢數(shù)字工程研究所,2011.

[3]Goldstone W. Unity game development essential[M].Birminghan:Packt Publishing Ltd, 2009.

[4]Kenneth C.Finney 3D 游戲開發(fā)大[M].齊蘭博,肖奕,譯.北京: 清華大學(xué)出版社,2005.

[5]張玉軍,孟曉軍,王剛. 基于手勢交互的三維電子沙盤系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].指揮控制與仿真,2016,38(2):110-114.

[6]張利利,李仁義,李曉京,馬進(jìn),惠鐸鐸.Unity3D 與數(shù)據(jù)庫通信方法的研究[J]. 計算機(jī)技術(shù)與發(fā)展,2014,24(2):229-303.

猜你喜歡
腳本態(tài)勢戰(zhàn)場
酒駕
戰(zhàn)場上的神來之筆
C-130:戰(zhàn)場多面手
安奇奇與小cool 龍(第二回)
貼秋膘還有三秒到達(dá)戰(zhàn)場
意林(2020年20期)2020-11-06 04:06:14
2019年12月與11月相比汽車產(chǎn)銷延續(xù)了增長態(tài)勢
汽車與安全(2020年1期)2020-05-14 13:27:19
匯市延續(xù)小幅震蕩態(tài)勢
中國外匯(2019年19期)2019-11-26 00:57:36
我國天然氣供需呈現(xiàn)緊平衡態(tài)勢
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
電子測試(2018年14期)2018-09-26 06:04:24
快樂假期
隆昌县| 青州市| 达孜县| 清徐县| 姜堰市| 清流县| 台江县| 东台市| 中西区| 赤壁市| 依安县| 汉川市| 若尔盖县| 葫芦岛市| 中西区| 黑河市| 仙游县| 太湖县| 扬中市| 呼玛县| 桐庐县| 顺平县| 图木舒克市| 宜章县| 郑州市| 东台市| 朝阳市| 伽师县| 石门县| 新平| 保靖县| 阿克陶县| 色达县| 准格尔旗| 罗定市| 建昌县| 宁远县| 类乌齐县| 喀喇| 炉霍县| 澄城县|