999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2018-04-12 06:08:36程健慶
指揮控制與仿真 2018年2期
關(guān)鍵詞:數(shù)據(jù)庫環(huán)境系統(tǒng)

江 波, 程健慶, 朱 偉

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

戰(zhàn)場三維態(tài)勢可視化是一個利用計(jì)算機(jī)圖形、圖像處理技術(shù)表現(xiàn)戰(zhàn)場環(huán)境,并在此基礎(chǔ)上將當(dāng)前態(tài)勢作戰(zhàn)計(jì)劃、作戰(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è)計(jì)

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è)計(jì)與數(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è)計(jì)與驅(qū)動腳本設(shè)計(jì)。

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è)計(jì)

海戰(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è)計(jì)與編譯,完成戰(zhàn)場環(huán)境實(shí)體的驅(qū)動與戰(zhàn)場場景繪制的工作;應(yīng)用層采用功能模塊式設(shè)計(jì),完成海戰(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è)計(jì)

在對海戰(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è)計(jì)中斷/停止鍵,切斷數(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)算計(jì)算當(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ù)后,計(jì)算當(dāng)前航向矢量,計(jì)算偏轉(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è)計(jì)、實(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è)計(jì)與實(shí)現(xiàn)[J].指揮控制與仿真,2016,38(2):110-114.

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

猜你喜歡
數(shù)據(jù)庫環(huán)境系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
長期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
一種用于自主學(xué)習(xí)的虛擬仿真環(huán)境
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
孕期遠(yuǎn)離容易致畸的環(huán)境
環(huán)境
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
主站蜘蛛池模板: 免费观看男人免费桶女人视频| 欧美精品1区| 97人人做人人爽香蕉精品| 久久久久无码精品| 欧美日韩综合网| 直接黄91麻豆网站| 天天色综合4| 亚洲国产精品一区二区高清无码久久| 亚洲不卡无码av中文字幕| 四虎国产精品永久一区| 成人福利在线视频免费观看| 亚洲综合专区| 97影院午夜在线观看视频| 国产亚洲精久久久久久久91| 内射人妻无码色AV天堂| 精品欧美一区二区三区久久久| 日韩午夜伦| 茄子视频毛片免费观看| 亚洲A∨无码精品午夜在线观看| 高清无码不卡视频| 成年免费在线观看| 99精品视频九九精品| 精品撒尿视频一区二区三区| 国产电话自拍伊人| 香蕉综合在线视频91| 国产超碰一区二区三区| 久久国产精品无码hdav| 美女高潮全身流白浆福利区| 欧美成人影院亚洲综合图| 免费观看欧美性一级| 2021国产在线视频| 一本无码在线观看| 亚洲综合日韩精品| 人妻丰满熟妇AV无码区| 国产精品30p| 无码AV高清毛片中国一级毛片| 国产成人精品视频一区视频二区| 伊人AV天堂| 亚洲国产成人精品无码区性色| 91国内视频在线观看| 国产91九色在线播放| www.国产福利| 久久毛片免费基地| 在线人成精品免费视频| 在线观看免费AV网| 国产伦片中文免费观看| 午夜视频免费一区二区在线看| 国产另类视频| 国产三级国产精品国产普男人| 久996视频精品免费观看| 538国产在线| 国产精选自拍| 国产欧美在线观看一区| 99久久精品国产麻豆婷婷| 欧美在线中文字幕| 国产精品视频观看裸模| 国产免费久久精品99re丫丫一| 欧洲亚洲一区| 亚洲第一视频网站| 亚洲 欧美 日韩综合一区| 久久精品中文字幕免费| 91探花国产综合在线精品| 成人中文字幕在线| 在线不卡免费视频| 97青青青国产在线播放| 亚洲av成人无码网站在线观看| 欧美高清国产| 国产精品国产三级国产专业不| 国产成人调教在线视频| 国产91精品久久| 青青草原国产精品啪啪视频| 久久综合干| 亚洲人成色在线观看| 手机成人午夜在线视频| 中文字幕欧美日韩| 亚洲天堂网在线观看视频| 欧美精品另类| 欧美人在线一区二区三区| 欧美色视频网站| 国产在线精品香蕉麻豆| 污污网站在线观看| 中文成人在线|