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

?

水下作業(yè)觀測系統(tǒng)布局可視化仿真軟件的研究

2016-07-10 07:08呂文磊李智生夏光輝
電子技術(shù)與軟件工程 2016年8期

呂文磊 李智生 夏光輝

摘 要:利用基于Windows 平臺的全參數(shù)化特征造型軟件SolidWorks繪制水下作業(yè)平臺及水下實(shí)況觀測設(shè)備、水下觀測目標(biāo)的三維立體模型,利用Deep Exploration專業(yè)圖形格式轉(zhuǎn)換軟件將3D模型轉(zhuǎn)換成OpenGL庫函數(shù)可讀取的數(shù)據(jù)列表格式,在OpenGL圖形開發(fā)環(huán)境中進(jìn)行了3D模型材質(zhì)顏色設(shè)計(jì)、水下觀測設(shè)備視場設(shè)計(jì)和3D場景的光照、漫游、縮放、旋轉(zhuǎn)等功能設(shè)計(jì),并在基于VC++2010的MFC軟件開發(fā)平臺下構(gòu)建軟件程序框架,設(shè)計(jì)出一套水下作業(yè)觀測記錄系統(tǒng)布局人機(jī)交互的可視化仿真軟件,軟件實(shí)現(xiàn)了布局場景顯示及視角變換、設(shè)備布局調(diào)整及視場覆蓋效果顯示、觀測目標(biāo)顯示及位置調(diào)整、觀測設(shè)備布局效果圖及安裝布局參數(shù)保存等功能。

【關(guān)鍵詞】可視化仿真 水下觀測 SolidWorks OPenGL

1 引言

水下過程實(shí)況觀測與記錄為我們水下作業(yè)事后分析提供了第一手直觀的視頻資料,對水下工程作業(yè)具有重要意義。水下過程觀測記錄系統(tǒng)攝像機(jī)、照明燈的布局直接關(guān)系到有限攝像機(jī)數(shù)量條件下視場覆蓋范圍、成像質(zhì)量、拍攝的有用信息量等。

軟件仿真是在計(jì)算機(jī)中生成一種仿真環(huán)境,以視景仿真和三維動(dòng)態(tài)仿真來展現(xiàn)實(shí)體的行為方式和環(huán)境。軟件仿真這個(gè)概念從20 世紀(jì)80 年代正式提出以來,隨著計(jì)算機(jī)科學(xué)的飛速發(fā)展己取得了很大的發(fā)展,在工程、軍事、醫(yī)學(xué)、影視等領(lǐng)域已得到了廣泛的應(yīng)用。在軍事方面主要應(yīng)用于水下裝備虛擬設(shè)計(jì)和虛擬戰(zhàn)場演示等。本論文依托該項(xiàng)技術(shù)設(shè)計(jì)研制一套水下作業(yè)觀測設(shè)備布局可視化仿真軟件系統(tǒng),為水下作業(yè)觀測記錄設(shè)備合理布局提供一個(gè)有效便捷的技術(shù)方法。論文采用SolidWorks繪圖工具軟件繪制了水下作業(yè)平臺、水下作業(yè)觀測設(shè)備、觀測目標(biāo)的三維立體模型,并用Deep Exploration三維圖形專業(yè)格式轉(zhuǎn)換軟件轉(zhuǎn)換模型格式為OpenGL可讀取的數(shù)據(jù)列表格式,在OpenGL圖形開發(fā)環(huán)境下實(shí)現(xiàn)了水下作業(yè)觀測設(shè)備布局場景顯示及視角變換、觀測設(shè)備布局效果顯示及布局調(diào)整、觀測目標(biāo)顯示及位置調(diào)整、透明度設(shè)置、布局方案效果圖及參數(shù)保存等功能。

2 總體設(shè)計(jì)思路

軟件仿真實(shí)現(xiàn)現(xiàn)實(shí)場景計(jì)算機(jī)虛擬顯示可采用的技術(shù)方案多種多樣,編程環(huán)境可選擇VC++、VB或者Delphi等,圖形開發(fā)庫可選擇OpenGL或者DirectX。單純采用編程語言及自帶的函數(shù)庫很難設(shè)計(jì)出復(fù)雜的三維模型,流行的圖形開發(fā)包DirectX較適合于游戲開發(fā)及加強(qiáng)多媒體性能等方面,OpenGL則可以設(shè)計(jì)與渲染出復(fù)雜、高仿真度的三維模型且其與多種編程語言方便有效互連。SolidWorks繪制的三維模型經(jīng)格式轉(zhuǎn)換能方便地導(dǎo)入OpenGL三維場景繪制環(huán)境。另外,OpenGL可以與VC++2010建立緊密接口,便于實(shí)現(xiàn)有關(guān)計(jì)算和圖形算法,可保證算法的正確性和可靠性。在VC++2010的MFC框架編程環(huán)境下進(jìn)行可視化仿真軟件程序設(shè)計(jì),利用VC++的封裝性可以減少開發(fā)自定義窗口的時(shí)間和創(chuàng)造出可重用的代碼,可以在必要時(shí)更好的控制窗口的活動(dòng)。綜合各方面因素,本論文采用VC++2010與OpenGL聯(lián)合開發(fā)設(shè)備布局可視化仿真軟件。

在水下作業(yè)實(shí)況觀測過程中,為獲取水下作業(yè)過程更全面的視場視頻圖像信息,必須從三個(gè)方面進(jìn)行分析:首先分析設(shè)備安裝平臺尺寸及可安裝位置分布;其次要獲取水下觀測攝像機(jī)、照明燈等設(shè)備的性能(像機(jī)的視場、作用距離、燈光照射范圍等)參數(shù);再次要對拍攝目標(biāo)的形狀、大小尺寸及位置信息等進(jìn)行分析。所以本論文可視化仿真軟件中三維模型的建立也主要圍繞此三個(gè)方面進(jìn)行。

SolidWorks作為基于Windows平臺的全參數(shù)化特征造型軟件,可以方便地實(shí)現(xiàn)機(jī)械零件的三維實(shí)體造型、裝配和生成工程圖。依據(jù)相關(guān)資料和實(shí)物的準(zhǔn)確尺寸可以繪制出各項(xiàng)目的三維模型。采用SolidWorks機(jī)械設(shè)計(jì)工具軟件繪制各攝像機(jī)、輔助照明燈、水下作業(yè)平臺、觀測目標(biāo)等三維模型,先建立各項(xiàng)目單個(gè)零件圖,然后將相關(guān)零件組合成裝配圖。這些零件圖和裝配圖組成設(shè)備安裝三維立體圖庫。論文為了將三維模型能夠轉(zhuǎn)換為能讀入VC++編譯環(huán)境的CPP 文件,首先將由SolidWorks 建立的三維模型轉(zhuǎn)換為STL 文件格式的網(wǎng)格模型。接著通過Deep Exploration 把STL 文件轉(zhuǎn)換為CPP 格式的文件,再把CPP 格式三維模型添加到MFC 框架的OpenGL繪制環(huán)境中,并進(jìn)行模型的數(shù)據(jù)列表讀取和顯示,接著利用OpenGL庫函數(shù)實(shí)現(xiàn)模型繪制、模型觀察、顏色模式的指定、光照應(yīng)用、圖像效果增強(qiáng)、位圖和圖象處理、紋理映射、實(shí)時(shí)三維視景仿真等,OpenGL函數(shù)實(shí)現(xiàn)的這些功能添加到MFC類-對象中組成實(shí)現(xiàn)軟件系統(tǒng)的各功能模塊。

論文研究流程如圖1所示。

3 功能模塊實(shí)現(xiàn)

為了模擬水下作業(yè)實(shí)況觀測設(shè)備安裝的實(shí)際過程與安裝效果,仿真軟件主要設(shè)計(jì)以下幾個(gè)功能模塊實(shí)現(xiàn)軟件系統(tǒng)各功能:

(1)場景顯示、漫游模塊:創(chuàng)建安裝效果顯示窗口,實(shí)現(xiàn)顯示窗口視角平移、旋轉(zhuǎn)等視場調(diào)整功能;

(2)三維模型導(dǎo)入選擇模塊:建立安裝環(huán)境的三維場景,并將各設(shè)備三維模型選擇添加導(dǎo)入三維場景中;

(3)攝像機(jī)、燈布局調(diào)整模塊:實(shí)現(xiàn)水下作業(yè)實(shí)況觀測系統(tǒng)各攝像機(jī)和燈的位置、姿態(tài)調(diào)整與坐標(biāo)顯示;

(4)拍攝或照射區(qū)域設(shè)計(jì)模塊:實(shí)現(xiàn)水下作業(yè)實(shí)況觀測系統(tǒng)攝像機(jī)攝錄視場、燈照明視場顯示與水下透明度調(diào)整;

(5)觀測目標(biāo)位置調(diào)整模塊:實(shí)現(xiàn)觀測目標(biāo)位置調(diào)整功能;

(6)布局效果圖與布局參數(shù)輸出模塊:實(shí)現(xiàn)水下作業(yè)實(shí)況觀測系統(tǒng)安裝布局可視化仿真效果圖及布局參數(shù)的輸出。

設(shè)備布局可視化仿真軟件系統(tǒng)的功能模塊組成框圖如圖2所示。

下面就可視化仿真軟件幾個(gè)主要功能模塊的設(shè)計(jì)與實(shí)現(xiàn)分別進(jìn)行詳細(xì)介紹。

3.1 場景顯示、漫游模塊

軟件主要采用啟動(dòng)線程的方式進(jìn)行場景繪制、模型導(dǎo)入和位置調(diào)整,線程創(chuàng)建函數(shù)為CreateThread(NULL,0,Plot3DTrajectoryShow, NULL,0,NULL);線程響應(yīng)函數(shù)Plot3DTrajectoryShow主要調(diào)用CTrajectory3DView的接口函數(shù)CreateOpenglWindow()完成三維場景顯示,該接口函數(shù)調(diào)用類成員函數(shù)DrawGLScene()實(shí)現(xiàn)水下場景繪制。

運(yùn)用OpenGL進(jìn)行三維場景繪制顯示首先需要?jiǎng)?chuàng)建繪制環(huán)境渲染描述表(Rendering Context,以下簡稱“RC”)。一旦在一個(gè)線程中指定了一個(gè)當(dāng)前渲染描述表,在此線程中其后所有的OpenGL命令都使用相同的當(dāng)前渲染描述表。軟件將首先產(chǎn)生一個(gè)OpenGL渲染描述表并使之成為當(dāng)前渲染描述表,這將分為三個(gè)步驟:設(shè)置窗口像素格式;創(chuàng)建渲染描述表;設(shè)置為當(dāng)前渲染描述表。

3.2 三維模型導(dǎo)入選擇模塊

軟件工程采用類——對象的方法,為三維場景中每個(gè)三維模型獨(dú)立單元建立一個(gè)類,定義一個(gè)該類對象,每個(gè)模型的頂點(diǎn)列表、材質(zhì)、紋理等數(shù)據(jù)及生成模型數(shù)據(jù)列表的函數(shù)都封裝在各自的類中。在選擇導(dǎo)入某設(shè)備三維模型時(shí),只需要調(diào)用 glCallList(GLenum) 函數(shù)加載三維模型的數(shù)據(jù)列表,函數(shù)參數(shù) GLenum 為三維模型數(shù)據(jù)列表的編號。

由于攝像機(jī)和照明燈需要俯仰調(diào)整,此時(shí)支架的位置信息與設(shè)備位置信息不一致,因此,水下觀測設(shè)備及其安裝支架必須分開成兩個(gè)獨(dú)立模型進(jìn)行類創(chuàng)建與對象定義,便于各自調(diào)用。

3.3 攝像機(jī)、燈布局調(diào)整模塊

OpenGL 中使用的坐標(biāo)系有兩種,分別為世界坐標(biāo)系和屏幕坐標(biāo)系。世界坐標(biāo)系即OpenGL 內(nèi)部處理時(shí)使用的三維坐標(biāo)系,而屏幕坐標(biāo)系即為在計(jì)算機(jī)屏幕上繪圖時(shí)使用的坐標(biāo)系。

OpenGL 所使用的世界坐標(biāo)系通常為右手型。從計(jì)算機(jī)屏幕的角度來看,z 軸正方向?yàn)槠聊粡睦锵蛲?,y 軸正方向?yàn)槠聊粡南孪蛏希瑇 軸正方向?yàn)槠聊粡淖笙蛴?。?jì)算機(jī)本身只能處理數(shù)字,坐標(biāo)建立了圖形和數(shù)字之間的聯(lián)系。因此,為了使仿真模型數(shù)字化,要在被顯示的物體所在的空間中定義一個(gè)坐標(biāo)系。這個(gè)坐標(biāo)系即為世界坐標(biāo)系,這個(gè)坐標(biāo)系的長度單位和坐標(biāo)軸的方向要適合對被顯示物體的描述。此外,在圖形顯示器屏幕上定義一個(gè)二維直角坐標(biāo)系,這個(gè)坐標(biāo)系為屏幕坐標(biāo)系。計(jì)算機(jī)對數(shù)字化的顯示物體做了加工處理后,要在圖形顯示器上顯示。

OpenGL圖形庫的變換包括模型幾何變換和投影變換。模型幾何變換有平移、旋轉(zhuǎn)、縮放變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換。軟件工程在圖形繪制之前首先要設(shè)置好投影變換矩陣、視點(diǎn)坐標(biāo)和視口變換矩陣,這些矩陣的設(shè)置保證軟件工程顯示窗口最終能以我們調(diào)整的視角顯示我們想要看到的世界坐標(biāo)系下的三維模型。接著軟件工程利用世界坐標(biāo)系下三維模型獨(dú)立單元局部坐標(biāo)系的平移、旋轉(zhuǎn)、縮放變換實(shí)現(xiàn)了三維模型位置姿態(tài)的調(diào)整。

3.4 攝像機(jī)、燈視場設(shè)計(jì)模塊

論文軟件工程采用具有漸變色部分透明效果的錐體來表現(xiàn)水下作業(yè)實(shí)況觀測設(shè)備的視場。采用四棱錐繪制攝像機(jī)攝錄視場,四棱錐水平發(fā)散角表現(xiàn)攝像機(jī)的水平視場角,四棱錐豎直發(fā)散角表現(xiàn)攝像機(jī)的豎直視場角;采用圓錐體繪制照明燈照射視場,圓錐體發(fā)射角的表現(xiàn)燈的照明視場角。各棱錐從頂點(diǎn)到底面以顏色深度逐漸變淺來表現(xiàn)攝錄視場和照明視場光線的強(qiáng)弱,各棱錐的高度表現(xiàn)攝像機(jī)成像距離和照明燈有效照射距離,棱錐高度值與海水透明度成線性關(guān)系,因此可以通過設(shè)置海水透明度值來表達(dá)攝像機(jī)成像距離和照明燈有效照射距離。各不同類型設(shè)備視場用不同顏色區(qū)分開來,而且各視場顏色可變更以達(dá)到理想分辨效果。

3.5 觀測目標(biāo)導(dǎo)入與位置調(diào)整模塊

觀測目標(biāo)三維模型使用SolidWorks工具軟件繪制,經(jīng)格式轉(zhuǎn)換后進(jìn)行VC++類封裝,創(chuàng)建觀測目標(biāo)三維模型的顯示列表,然后運(yùn)用OpenGL的幾何變換函數(shù)對觀測目標(biāo)的位置進(jìn)行調(diào)整,觀測目標(biāo)模型的導(dǎo)入與位置調(diào)整方法與觀測設(shè)備導(dǎo)入與位置調(diào)整基本一致。觀測目標(biāo)位置設(shè)置可依據(jù)實(shí)際情況進(jìn)行變化,軟件界面上通過輸入位置信息實(shí)現(xiàn)觀測目標(biāo)位置的確定。

3.6 布局效果圖與布局參數(shù)輸出模塊

在進(jìn)行攝像機(jī)、照明燈布局設(shè)計(jì)完成后,該模塊具有以位圖文件形式保存布局效果圖,以文本文件形式保存各攝像機(jī)、照明燈布局參數(shù)的功能,保存參數(shù)包括各觀測設(shè)備安裝位置、方位角、俯仰角以及觀測目標(biāo)位置和海水透明度值。軟件采用 OpenGL庫函數(shù)glReadPixels( )從顏色緩沖區(qū)讀取場景窗口里所有像素?cái)?shù)據(jù),并將此像素?cái)?shù)據(jù)寫入創(chuàng)建好文件頭數(shù)據(jù)和信息頭數(shù)據(jù)的位圖文件,實(shí)現(xiàn)位圖保存場景功能。

觀測設(shè)備安裝位置坐標(biāo)是在水下作業(yè)平臺平面坐標(biāo)系下的坐標(biāo)值,該坐標(biāo)系原點(diǎn)及X、Y軸方向先預(yù)設(shè)好。觀測設(shè)備方位角、俯仰角也預(yù)先作一規(guī)定。

在軟件界面的主菜單“文件”子菜單下“保存效果圖”和“保存布局參數(shù)”菜單分別實(shí)現(xiàn)了以上效果圖及參數(shù)保存功能。

4 軟件測試

在軟件工程各項(xiàng)功能設(shè)計(jì)完成后,要對軟件各項(xiàng)功能進(jìn)行測試,其中包括場景觀察視角調(diào)整功能、觀測設(shè)備導(dǎo)入、位置姿態(tài)調(diào)整功能、視場效果顯示及透明度調(diào)整功能、觀測目標(biāo)導(dǎo)入及位置設(shè)置功能、布局效果圖和布局參數(shù)輸出功能等。

論文以某一水下轉(zhuǎn)動(dòng)作業(yè)實(shí)況觀測實(shí)際需求為例,在海水透明度為5米的條件下對觀測設(shè)備進(jìn)行安裝布局,布局設(shè)備包括多臺不同攝像機(jī)及照明燈,操作人員可根據(jù)觀測目標(biāo)位置及觀測需求對觀測設(shè)備進(jìn)行調(diào)整并從不同視角查看觀測效果。

運(yùn)行軟件,添加各設(shè)備,調(diào)整各觀測設(shè)備位置姿態(tài),對布局效果進(jìn)行人機(jī)交互顯示,布局總體效果如圖4所示,各不同設(shè)備布局效果分別如圖5、圖6所示。

設(shè)備布局保存的參數(shù)文檔如圖7所示。

5 結(jié)論

論文運(yùn)用OpenGL圖形開發(fā)庫聯(lián)合SolidWorks繪圖工具軟件,在基于VC++2010的MFC編程環(huán)境下設(shè)計(jì)開發(fā)了一套水下作業(yè)觀測設(shè)備布局可視化仿真軟件。論文采用SolidWorks繪圖工具軟件繪制了作業(yè)平臺、觀測設(shè)備、觀測目標(biāo)的三維立體模型,并用Deep Exploration三維圖形專業(yè)格式轉(zhuǎn)換軟件轉(zhuǎn)換模型格式為OpenGL可讀取的數(shù)據(jù)列表格式,在OpenGL圖形開發(fā)環(huán)境下實(shí)現(xiàn)了水下作業(yè)觀測設(shè)備布局場景顯示及視角變換、觀測設(shè)備布局效果顯示及布局調(diào)整、觀測目標(biāo)顯示及位置調(diào)整、透明度設(shè)置、布局方案效果圖及參數(shù)保存等功能。經(jīng)軟件功能測試,可視化仿真軟件系統(tǒng)功能實(shí)現(xiàn)良好,對更好地獲取水下作業(yè)過程實(shí)況觀測信息具有重要意義。

參考文獻(xiàn)

[1]邵宇.基于OpenGL的導(dǎo)彈飛行視景仿真研究[D].哈爾濱:哈爾濱工程大學(xué),2007.

[2]喬生明,劉曉娟.基于OpenGL的城軌ATP系統(tǒng)超速防護(hù)功能可視化仿真[J].鐵路計(jì)算機(jī)應(yīng)用,2012(03).

[3]馬存寶,朱超.基于OpenGL三維飛行模擬的實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2014(03).

[4]鬲文娟.電子設(shè)備三維仿真平臺開發(fā)[D].西安:西安工業(yè)大學(xué),2014.

[5]侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001.

[6]尚游,等.OpenGL高級圖形編程指南[M]. 哈爾濱:哈爾濱工程大學(xué)出版社,1999.

[7]喬林,費(fèi)廣正等編著.OpenGL程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.

作者簡介

呂文磊(1982-),男,安徽省安慶市人。博士學(xué)位?,F(xiàn)供職于91550部隊(duì)93分隊(duì)。主要研究方向?yàn)楣鈱W(xué)測量、計(jì)算機(jī)仿真。

作者單位

91550部隊(duì)93分隊(duì) 遼寧省大連市 116023