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

?

艦載機(jī)起飛著艦的機(jī)動(dòng)目標(biāo)顯示技術(shù)

2015-03-06 01:32姚佩陽
電子科技 2015年11期
關(guān)鍵詞:服務(wù)器端戰(zhàn)場客戶端

榮 慶,姚佩陽

(空軍工程大學(xué) 信息與導(dǎo)航學(xué)院,陜西 西安 710077)

隨著科學(xué)技術(shù)的發(fā)展和戰(zhàn)爭的需求,三維可視化顯示技術(shù)逐漸成為現(xiàn)代戰(zhàn)爭指揮控制系統(tǒng)中的重要組成部分。相比于二維顯示技術(shù),三維可視化顯示技術(shù)具有顯示范圍廣泛,逼真度好,提供視點(diǎn)轉(zhuǎn)換等優(yōu)點(diǎn),可為各級指揮官提供三維、動(dòng)態(tài)、可交互的作戰(zhàn)環(huán)境[1]。

在三維可視化顯示領(lǐng)域中最具有提升價(jià)值的研究方向,毋庸置疑是對于機(jī)動(dòng)目標(biāo)的實(shí)時(shí)顯示技術(shù),使用各種方法盡量做到使機(jī)動(dòng)目標(biāo)的顯示時(shí)延最短。在這一研究領(lǐng)域中,前人已做出了一定的研究成果,有的是在底層圖形設(shè)計(jì)中減少多邊形和紋理,以此來優(yōu)化顯示系統(tǒng)占用的資源,但這樣會(huì)降低三維顯示效果;反之有的是顯示畫面豐富逼真,但出現(xiàn)了較大的時(shí)延問題,從而影響整個(gè)顯示系統(tǒng)的功能。在這里采用折中的辦法,即采用渲染畫面良好的引擎作為機(jī)動(dòng)目標(biāo)的顯示要素,同時(shí)通過編程利用套接字實(shí)時(shí)鏈接VC 平臺(tái),實(shí)現(xiàn)了時(shí)延較小的精準(zhǔn)控制顯示機(jī)動(dòng)目標(biāo)。這里以艦載機(jī)起飛著艦的實(shí)時(shí)顯示為例來說明該技術(shù)方法的應(yīng)用特點(diǎn)。

1 三維實(shí)時(shí)顯示總體設(shè)計(jì)

在眾多三維引擎中,選用Unity3D 作為渲染引擎,Unity3D 是由Unity Technologies 開發(fā)的一個(gè)使用戶輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型開發(fā)工具,是一個(gè)全面整合的專業(yè)引擎[2]。Unity3D 具備強(qiáng)大的圖形動(dòng)力,對DirectX 和OpenGL 擁有高度優(yōu)化的圖形渲染管道;并且支持所有主要文件格式,并能和大部分相關(guān)應(yīng)用程序協(xié)同工作;同時(shí),其提供了具有柔和陰影與烘焙的高度完善的光影渲染系統(tǒng),Unity3D 的這些特點(diǎn)可較好地提高三維顯示平臺(tái)的顯示效果。Unity3D 最大的優(yōu)勢是性價(jià)比高,并可發(fā)布成網(wǎng)頁瀏覽的方式,用戶不用下載客戶端,便可直接體驗(yàn),Unity3D 支持各種腳本語言,包括JavaScript、C#,兼容各種操作系統(tǒng),真正實(shí)現(xiàn)了跨平臺(tái)。

通過先進(jìn)的建模與仿真方法,將美軍尼米茲航空母艦、F18A 艦載機(jī)等虛擬模型在網(wǎng)絡(luò)數(shù)據(jù)的驅(qū)動(dòng)下,來三維實(shí)時(shí)顯示艦載機(jī)起飛和著艦場景等動(dòng)態(tài)信息,為今后的海空戰(zhàn)場指揮顯示系統(tǒng)提供一種基本的三維可視化技術(shù)。

1.1 功能需求

在當(dāng)今的??罩袘?zhàn)場中,航空母艦的作用日益突出,其中艦載機(jī)是配備在航空母艦上的主要武器,其性能決定著航空母艦的戰(zhàn)斗能力,載機(jī)數(shù)量越多者實(shí)力也相對越強(qiáng),航空母艦本身也是為了讓飛機(jī)起降、維修以及使其能長期作戰(zhàn)而存在。以此,將艦載機(jī)的起飛著艦過程利用三維可視化技術(shù)直觀逼真地顯示出來,有利于飛行員和指揮官實(shí)時(shí)決策和控制艦載機(jī)狀態(tài)。

艦載機(jī)起飛著艦三維實(shí)時(shí)顯示系統(tǒng)的主要作用是在虛擬場景中準(zhǔn)確顯示艦載機(jī)在航母甲板上起飛著艦的整個(gè)過程,并通過實(shí)時(shí)數(shù)據(jù)驅(qū)動(dòng)來顯示艦載機(jī)飛行狀態(tài)等主要信息。具體功能如下:(1)搭建一個(gè)逼真的??諔?zhàn)場三維虛擬場景,包括整個(gè)作戰(zhàn)的自然環(huán)境、地形及天空,并導(dǎo)入基本目標(biāo)模型。(2)實(shí)時(shí)接收和解讀總控發(fā)來的數(shù)據(jù)包,這里用Visual C++6.0 平臺(tái)模擬發(fā)送數(shù)據(jù)包。(3)數(shù)據(jù)驅(qū)動(dòng)虛擬目標(biāo)模型,實(shí)時(shí)準(zhǔn)確的顯示艦載機(jī)起飛著艦的過程。(4)視點(diǎn)的自動(dòng)切換、人機(jī)交互和場景漫游。(5)在顯示界面中詳細(xì)列出艦載機(jī)的實(shí)時(shí)飛行狀態(tài)參數(shù),如經(jīng)度、緯度、高度、速度、航向、橫滾角、俯仰角等。

1.2 技術(shù)路線

從理論上講,高層體系結(jié)構(gòu)HLA(High Level Architecture)作為計(jì)算機(jī)仿真系統(tǒng)的通用技術(shù)框架,具有較高的運(yùn)行效率和費(fèi)效比。但其作為一種新的仿真協(xié)議,必須對現(xiàn)有指揮監(jiān)控系統(tǒng)增加HLA 代理接口,工作量較大,同時(shí)也會(huì)改變現(xiàn)有裝備的狀態(tài)[3]。

本系統(tǒng)作為??諔?zhàn)場指揮控制系統(tǒng)的一部分,要與現(xiàn)有的指控系統(tǒng)能無縫對接,并能平滑地實(shí)現(xiàn)與其同步擴(kuò)展。因此,這里采用基于UDP(User Datagram Protocol)面向無連接的解決方案。如此一來,不但不用對現(xiàn)有的指控系統(tǒng)進(jìn)行修改,且使得發(fā)送數(shù)據(jù)包的時(shí)延較小。以根據(jù)所接收的數(shù)據(jù)報(bào)文所傳遞的操作指令、系統(tǒng)參數(shù)等信息,實(shí)時(shí)地驅(qū)動(dòng)三維模型來準(zhǔn)確、逼真地顯示海空戰(zhàn)場場景。基于本系統(tǒng)的功能需求和技術(shù)路線,其系統(tǒng)開發(fā)的框架圖如圖1 所示,流程如圖2所示。

圖1 系統(tǒng)開發(fā)框架圖

圖2 系統(tǒng)開發(fā)流程圖

整個(gè)系統(tǒng)開發(fā)分為3 個(gè)步驟:首先,在建模軟件3DS Max 中完成三維目標(biāo)實(shí)體建模,這些模型基本是依據(jù)對應(yīng)的CAD 圖紙或真實(shí)的數(shù)碼圖片來建立的,在確保模型必要精確度和逼真度的同時(shí),通過紋理映射、細(xì)節(jié)等級、平滑處理等技術(shù)來盡量減少圖形的復(fù)雜度以提高系統(tǒng)運(yùn)行效率[4]。然后,在Unity3D 平臺(tái)上,先進(jìn)行虛擬??諔?zhàn)場場景的搭建,最后在Visual C++6.0平臺(tái)上,利用Socket 通信在線接收、讀取實(shí)時(shí)數(shù)據(jù)包,并對三維模型進(jìn)行驅(qū)動(dòng)控制和相應(yīng)場景渲染。

1.2.1 模型的建立和導(dǎo)入

使用3DS Max 主流3D 設(shè)計(jì)軟件來創(chuàng)建基礎(chǔ)模型,然后轉(zhuǎn)換為Unity3D 引擎可識(shí)別的文件。憑借3DS Max 優(yōu)異的制作效果,這樣就能使得在Unity3D場景中逼真地展現(xiàn)三維顯示效果。本系統(tǒng)中的目標(biāo)模型主要是美軍尼米茲航空母艦?zāi)P秃虵18A 艦載機(jī)模型。為了將模型放在Unity3D 中展示,首先需將利用3DS Max 建好的模型借助于工業(yè)設(shè)計(jì)格式導(dǎo)入U(xiǎn)ntiy3D 引擎中[5],然后在引擎中通過編寫腳本來添加對模型的各種信息描述,其中包括模型的基本信息和動(dòng)作信息,以此實(shí)現(xiàn)相應(yīng)的動(dòng)作控制。同時(shí),在導(dǎo)入U(xiǎn)nity3D 時(shí)也可根據(jù)場景范圍大小對模型進(jìn)行縮放,為獲得良好的視覺效果,可加入點(diǎn)光源來補(bǔ)充模型的光照效果,還可采用紋理貼圖改變模型的表面屬性,以此來使得目標(biāo)模型更加逼真地展現(xiàn)。

三維模型是虛擬現(xiàn)實(shí)系統(tǒng)中重要的組成部分,為避免導(dǎo)入場景文件的時(shí)間過長和在計(jì)算機(jī)上瀏覽場景出現(xiàn)斷斷續(xù)續(xù)的現(xiàn)象,在創(chuàng)建三維模型時(shí)要使模型數(shù)據(jù)庫盡可能小,以保證仿真的實(shí)時(shí)性。針對這一要求,需要對已建成的模型數(shù)據(jù)庫進(jìn)行優(yōu)化處理。從簡化模型和提高渲染速度兩方面入手,通過減少三角形的數(shù)量,使用紋理來代替多邊形造型,使用簡單分量紋理,平面圖像等方法構(gòu)建優(yōu)化模型[6-7]。

圖3 導(dǎo)入U(xiǎn)nity3D 場景中的艦載機(jī)模型

圖4 導(dǎo)入U(xiǎn)nity3D 場景中的航母模型

1.2.2 場景的搭建

Unity3D 中一個(gè)逼真的三維場景需要包含攝像機(jī)、地形、天空盒、目標(biāo)景物和光源這幾個(gè)要素[8]。攝像機(jī)來定義觀察場景的視角;地形和天空盒提供了三維目標(biāo)所處的大環(huán)境;目標(biāo)景物由場景中的動(dòng)態(tài)和靜態(tài)可見要素組成;光源定義場景不同角度觀察下的明暗程度。海空戰(zhàn)場的場景主要包括海面地形、天空等自然景觀,這里采用圖片加紋理貼圖的方法實(shí)現(xiàn)。針對三維平臺(tái)模型的優(yōu)化,要科學(xué)組織模型的結(jié)構(gòu)、減少模型的冗余度。同時(shí),還要科學(xué)選擇建模工具,盡量在不影響逼真性的前提下壓縮模型數(shù)據(jù)。??諔?zhàn)場的三維場景比較簡單,這里可騰出大量資源供給機(jī)動(dòng)目標(biāo)艦載機(jī)使用。

1.2.3 對于高機(jī)動(dòng)目標(biāo)的實(shí)時(shí)控制

場景中大部分景物是靜態(tài)的,主要是實(shí)現(xiàn)動(dòng)態(tài)目標(biāo)F18A 艦載機(jī)的實(shí)時(shí)控制??刂婆炤d機(jī)飛行狀態(tài)的關(guān)鍵是實(shí)時(shí)反映其所處的位置信息,這里采用C++語言編程基于Visual C++6.0 平臺(tái),來實(shí)現(xiàn)和Unity3D 的通信連接。為了使控制時(shí)延盡量小,最終采用UDP 面向無連接控制協(xié)議,已達(dá)到精確的控制艦載機(jī)三維模型的運(yùn)動(dòng)變化。

為實(shí)現(xiàn)在Visual C++6.0 和Unity3D 兩個(gè)平臺(tái)之間建立連接,所以考慮要以C#作為Unity3D 腳本與C++進(jìn)行通信,實(shí)質(zhì)上是C#與C++之間進(jìn)行Socket通信。C#與C++都提供了Socket 類,這樣就使得這兩種語言之間可相互發(fā)送并接受消息。從而能實(shí)現(xiàn)Unity3D與C++之間進(jìn)行通信,即使得在C++程序中對Unity3D 程序進(jìn)行控制成為可能。最終實(shí)現(xiàn)了Unity3D與Visual C++6.0 之間進(jìn)行Socket 通信。

實(shí)現(xiàn)過程:

首先,以Unity3D 作為服務(wù)器端程序,其主要是接收Visual C++6.0 客戶端發(fā)送過來的控制信息,對接收到的消息進(jìn)行處理然后反應(yīng)到相應(yīng)的對象實(shí)體上(艦載機(jī))。

其次是客戶端,客戶端用Visual C++6.0 來設(shè)計(jì)界面,主要用來向Unity3D 服務(wù)器端發(fā)送控制信息進(jìn)從而控制Unity3D 中艦載機(jī)目標(biāo)的旋轉(zhuǎn)和移動(dòng)。具體實(shí)現(xiàn)如下:

(1)服務(wù)器端。首先編寫一個(gè)腳本類專門處理Socket 通信,命名為ServerSocket,其主要實(shí)現(xiàn)了以下操作。1)建立服務(wù)器端Socket、啟動(dòng)線程等待客戶端連接、接收消息、向客戶端發(fā)送消息、斷開連接。2)然后編寫另外一個(gè)腳本用于對接收到的消息進(jìn)行相應(yīng)處理,命名為RecvClient。

(2)客戶端。客戶端主要實(shí)現(xiàn)向服務(wù)器端發(fā)送數(shù)據(jù),以控制艦載機(jī)的旋轉(zhuǎn)和移動(dòng),首先設(shè)計(jì)好客戶端界面,接著就進(jìn)行相應(yīng)發(fā)送數(shù)據(jù)的一些準(zhǔn)備工作,例如加載套接字、建立與客戶端的連接等,最后是發(fā)送數(shù)據(jù)的邏輯處理。具體如下:1)打開Visual C++6.0,新建一個(gè)MFC AppWizard 工程CppConnectToUnity,選擇創(chuàng)建應(yīng)用程序的類型為基于對話框(Dialog based),同時(shí)要選定 Window Socket 支持。然后打開資源視圖(ResourceView),選擇該工程的應(yīng)用對話框進(jìn)行界面設(shè)計(jì)。2)選擇類視圖(ClassView),在CCppConnect-ToUnityApp 類中的InitInstance()方法中加載套接字。3)選擇類CCppConnectToUnityDlg,給其添加一個(gè)私有成員變量,然后在OnConnectUnity3D()方法中初始化SockClient 變量,給連接按鈕添加單擊響應(yīng)方法,在其方法中實(shí)現(xiàn)與服務(wù)器端的連接。

(3)Unity3D 項(xiàng)目開發(fā)。1)在Unity3D 的Project 中創(chuàng)建一個(gè)C#腳本文件,命名為ServerSocket.cs。腳本內(nèi)容主要作用是在Unity3D 啟動(dòng)時(shí)開啟一個(gè)端口,建立一個(gè)UDP 連接。2)在Unity3D 中給機(jī)動(dòng)目標(biāo)添加一個(gè)C#腳本。即控制目標(biāo)運(yùn)動(dòng)的ControlF18AMovement.cs文件。

通過以上具體方案,最終實(shí)現(xiàn)了利用C++語言編程建立了Visual C++6.0 與Unity3D 的實(shí)時(shí)通信,并利用Visual C++6.0 平臺(tái)模擬總控平臺(tái),發(fā)送實(shí)時(shí)數(shù)據(jù)包給Unity3D 引擎,以此來精確實(shí)時(shí)地控制??諔?zhàn)場三維場景中的艦載機(jī)飛行狀態(tài),尤其是艦載機(jī)起飛著艦三維實(shí)時(shí)顯示過程的逼真展現(xiàn)。

2 實(shí)現(xiàn)效果

艦載機(jī)起飛著艦三維實(shí)時(shí)顯示系統(tǒng)在虛擬海空戰(zhàn)場的三維場景中真實(shí)、全面、直觀地顯示了艦載機(jī)從航母甲板上起飛、降落以及空中飛行狀態(tài)等主要環(huán)節(jié)信息。系統(tǒng)的實(shí)現(xiàn)效果如圖5 和圖6 所示。

圖5 三維場景目標(biāo)顯示圖(數(shù)據(jù)顯示)

圖6 艦載機(jī)空中飛行狀態(tài)圖

實(shí)驗(yàn)系統(tǒng)的計(jì)算機(jī)硬件配置為Intel(R)Core(TM)i3-4150@3.50 GHz CPU,4 GB 內(nèi)存;軟件平臺(tái)和開發(fā)環(huán)境為Visual Studio C++6.0,Unity3D 4.0。

整個(gè)系統(tǒng)的運(yùn)行速度約為25 幀/s,達(dá)到了良好的真實(shí)感和實(shí)時(shí)顯示速度,符合預(yù)期結(jié)果。

3 結(jié)束語

本文以艦載機(jī)起飛著艦過程為背景,重點(diǎn)討論了基于Unity3D 的高機(jī)動(dòng)目標(biāo)三維實(shí)時(shí)顯示的技術(shù)問題。這也是三維實(shí)時(shí)顯示的一種新的技術(shù)方法,該系統(tǒng)以小見大,從簡單的艦載機(jī)起飛著艦過程入手,研究未來作戰(zhàn)的三維實(shí)時(shí)顯示系統(tǒng),未來的??諔?zhàn)場的態(tài)勢實(shí)時(shí)三維顯示系統(tǒng),將戰(zhàn)場變化過程、戰(zhàn)場態(tài)勢發(fā)展、雙方兵力對抗過程等均三維可視化,這樣將更加直觀、有效地匯集前方戰(zhàn)場態(tài)勢的各類關(guān)鍵信息,為指揮員的正確指揮和決策提供了實(shí)時(shí)、形象和準(zhǔn)確的信息顯示支持,能更好地增強(qiáng)戰(zhàn)場感知能力,提升作戰(zhàn)仿真研究的效果,有力地增強(qiáng)了指揮控制系統(tǒng)的真實(shí)感,促進(jìn)了信息化作戰(zhàn)水平的提高和完善。此外,以仿真技術(shù)為基礎(chǔ)的三維實(shí)時(shí)顯示系統(tǒng)也可進(jìn)行非任務(wù)狀態(tài)下的指揮、作戰(zhàn)模擬等軍事演習(xí),以提高軍隊(duì)執(zhí)行作戰(zhàn)任務(wù)的能力。

[1] 李文.基于GeoFusion 的三維地形和目標(biāo)的快速調(diào)度顯示技術(shù)研究與實(shí)現(xiàn)[D].西安:空軍工程大學(xué),2008.

[2] 王彩玲,劉瑞香,宋釗.基于Unity3D 的虛擬校園漫游的設(shè)計(jì)與實(shí)現(xiàn)[J].科技視界,2015(7):36-37.

[3] 劉玉亮,夏學(xué)知,沈迎春.海戰(zhàn)場態(tài)勢三維實(shí)時(shí)顯示系統(tǒng)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2006,26(1):177-179.

[4] 傅軍團(tuán),曹宗勝,何小海,等.基于Quest3D 的航天發(fā)射三維實(shí)時(shí)顯示技術(shù)研究與實(shí)現(xiàn)[J].裝備指揮技術(shù)學(xué)院學(xué)報(bào),2008,19(2):56-57.

[5] 陳永興.瀝青混凝土心墻堆石壩施工仿真理論與應(yīng)用研究[D].天津:天津大學(xué),2012.

[6] 江能興,周淦淼.基于3DS MAX 的三維模型的優(yōu)化研究[J].計(jì)算機(jī)與數(shù)字工程,2012(4):136-139.

[7] 王新波,朱維杰.基于OpenGL 與3DS Max 的三維場景建模[J].電子科技,2012,25(1):79-80.

[8] 王巍,于飛,于洪磊,等.Unity3D 大風(fēng)暴之入門篇[M].北京:電子工業(yè)出版社,2013.

猜你喜歡
服務(wù)器端戰(zhàn)場客戶端
戰(zhàn)場上的神來之筆
C-130:戰(zhàn)場多面手
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計(jì)
貼秋膘還有三秒到達(dá)戰(zhàn)場
如何看待傳統(tǒng)媒體新聞客戶端的“斷舍離”?
縣級臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
大樞紐 云平臺(tái) 客戶端——中央人民廣播電臺(tái)的探索之路
基于Qt的安全即時(shí)通訊軟件服務(wù)器端設(shè)計(jì)
基于Qt的網(wǎng)絡(luò)聊天軟件服務(wù)器端設(shè)計(jì)