亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        江 波, 程健慶, 朱 偉

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

        戰(zhàn)場三維態(tài)勢可視化是一個利用計算機圖形、圖像處理技術(shù)表現(xiàn)戰(zhàn)場環(huán)境,并在此基礎(chǔ)上將當前態(tài)勢作戰(zhàn)計劃、作戰(zhàn)雙方兵力對比、作戰(zhàn)雙方交戰(zhàn)狀態(tài)、態(tài)勢演變過程以可視化的方式顯示出來的動態(tài)仿真技術(shù)[1]。指揮員能夠在貼近實戰(zhàn)的訓(xùn)練環(huá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)達到了較高水平[1]。我軍態(tài)勢推演研究起步較晚,系統(tǒng)功能有限。如李林橙等采用OpenGL仿真艘艦艇不同編隊排列行進的過程,具有一定的跨平臺特性,但無法提供圖形界面或用戶輸入函數(shù),依賴項過多,開發(fā)難度大;年福純、周錦標等利用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)生延時,實時性難以保證。

        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ā)引擎,支持大范圍地形的顯示,仿真實時性較好,且用戶參與度高。

        因此,以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)境實體模型,使得顯示系統(tǒng)的顯示效果更加直觀真實。具體包括視景繪制與三維實例建模。

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

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

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

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

        4) 交互功能需求

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

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

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

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

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

        2.1 三維實例建模

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

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

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

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

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

        2.3 視景仿真

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

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

        2.4 硬件適配

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

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

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

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

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

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

        3.2 定時驅(qū)動

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        圖5 某航母模型運行軌跡示意圖

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

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

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

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

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

        5 結(jié)束語

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

        參考文獻:

        [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è)計與實現(xiàn)[J].指揮控制與仿真,2016,38(2):110-114.

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

        猜你喜歡
        腳本態(tài)勢戰(zhàn)場
        酒駕
        戰(zhàn)場上的神來之筆
        C-130:戰(zhàn)場多面手
        安奇奇與小cool 龍(第二回)
        貼秋膘還有三秒到達戰(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
        快樂假期
        日本av在线精品视频| 少妇高潮在线精品观看| 国产精品无码素人福利| 欧美四房播播| 久久不见久久见免费影院www| 四虎精品成人免费观看| 日韩成人精品日本亚洲| 在线观看国产激情免费视频| 日本一区二区免费在线看| 亚洲最大成人网站| 亚洲熟女乱色综合亚洲图片| 女人被做到高潮免费视频| 99久久综合九九亚洲| 亚洲中文字幕黄色小视频| 海外华人在线免费观看| 成人午夜高潮a∨猛片| 99精品人妻无码专区在线视频区| 人妻丝袜无码国产一区| 日批视频免费在线观看| 伊人狼人激情综合影院| 中文字幕精品一区二区三区| 日韩一区二区三区无码影院| 黑人巨大精品欧美一区二区| 亚洲中文字幕无码永久在线 | 老熟女老女人国产老太| 久激情内射婷内射蜜桃| 国产精品一区二区av片| 国产内射视频在线播放| 久久精品伊人久久精品伊人| 精品亚洲成a人在线观看| 欧美成a人片在线观看久| 欧美在线资源| 国产成人久久精品二区三区| 亚洲欧洲日产国码av系列天堂| 最近最好的中文字幕2019免费 | 91精品久久久久含羞草| 国产精品高清视亚洲一区二区| 国产成人无码精品久久久露脸| 91精选视频在线观看| 亚洲成AV人久久| 精品国产黄一区二区三区|