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

        ?

        OpenFlight模型組合建模技術(shù)研究

        2015-06-08 08:20:30李宏宏康鳳舉
        系統(tǒng)仿真技術(shù) 2015年2期
        關(guān)鍵詞:視景組件工具

        李宏宏,康鳳舉

        (1.西北工業(yè)大學(xué)航海學(xué)院,陜西西安710072;2.水下信息處理與控制國(guó)家重點(diǎn)實(shí)驗(yàn)室,陜西西安710072)

        1 引 言

        OpenFlight模型是 Multigen-Paradigm公司(簡(jiǎn)稱MPI)推出的用于描述三維虛擬場(chǎng)景的數(shù)據(jù)模型,廣泛應(yīng)用于各種視景仿真系統(tǒng)中,并成為視景仿真領(lǐng)域事實(shí)上的行業(yè)標(biāo)準(zhǔn)。隨著三維視景仿真系統(tǒng)規(guī)模的增大,三維實(shí)體建模工作耗費(fèi)時(shí)間越來(lái)越長(zhǎng),占據(jù)了系統(tǒng)開發(fā)的大量時(shí)間,延長(zhǎng)了視景仿真系統(tǒng)開發(fā)周期[1],因此就三維建模存在的建模耗時(shí)長(zhǎng),擴(kuò)展難等問題,對(duì)可組合的建模技術(shù)提出了更高的需求。可組合建模即對(duì)多個(gè)模型中共同的部分進(jìn)行建模,后期根據(jù)需求以裝配的方式組裝成所需的模型即可。目前對(duì)OpenFlight模型可組合性研究比較少,就OpenFlight模型建模存在的問題,王嬌艷等使用OpenFlight AP I函數(shù)擴(kuò)展了Creator,實(shí)現(xiàn)了模型細(xì)調(diào)、重組等功能,縮短了建模時(shí)間,但是在模型控制方面沒進(jìn)一步研究[2]。姚林海等利用配置表描述模型的組裝擴(kuò)展信息,在模型加載過程中實(shí)現(xiàn)了模型重組,雖然根據(jù)配置表實(shí)現(xiàn)了模型的按部件控制,但是在仿真前期對(duì)模型的修改非常不直觀[3]。李榮江等利用分塊技術(shù)實(shí)現(xiàn)了模型的分塊建立[4],在后期仿真過程中,模型的部件可以根據(jù)視點(diǎn)的遠(yuǎn)近動(dòng)態(tài)加載,加快了模型的加載速度和顯示幀頻。

        本文首先對(duì)OpenFlight模型數(shù)據(jù)格式進(jìn)行研究,利用OpenFlight API函數(shù)通過對(duì)模型數(shù)據(jù)的讀取、修改、組合和寫入等方式實(shí)現(xiàn)了多個(gè)OpenFlight模型的組合,并提供了友好的人機(jī)界面實(shí)現(xiàn)模型的可視化組合,完善了模型可組合建模工具,大大縮短了建模時(shí)間,加快了視景仿真系統(tǒng)的開發(fā)周期。

        2 OpenFlight模型數(shù)據(jù)格式

        2.1 組件化建模設(shè)計(jì)原理

        Creator是軟件源碼不可獲取的商品化的虛擬現(xiàn)實(shí)建模工具,但是Multigen-Paradigm公司提供了OpenFlight API對(duì)Creator的功能進(jìn)行擴(kuò)展和對(duì)OpenFlight模型進(jìn)行讀取操作,因此可以利用OpenFlight API讀取三維模型的數(shù)據(jù)對(duì)模型數(shù)據(jù)進(jìn)行調(diào)整組合操作,然后再根據(jù)用戶需求寫成一個(gè)三維模型數(shù)據(jù)文件,即可實(shí)現(xiàn)三維模型的組件化建模技術(shù)[5]。OpenFlight API是一個(gè)基于C語(yǔ)言的二次開發(fā)函數(shù)庫(kù),它提供了訪問OpenFlight數(shù)據(jù)庫(kù)和Creator模型系統(tǒng)的接口方法。通過API可以進(jìn)行OpenFlight模型的轉(zhuǎn)換、實(shí)時(shí)的模擬仿真、自動(dòng)建模以及通過插件的形式對(duì)Creator進(jìn)行功能擴(kuò)展。OpenFlight API函數(shù)庫(kù)的功能函數(shù)主要分成讀取、寫入、擴(kuò)展和工具四個(gè)不同操作功能模塊,對(duì)于構(gòu)建OpenFlight模型來(lái)說(shuō),使用其中的讀取和寫入兩個(gè)模塊的OpenFlight API函數(shù)即可。

        OpenFlight三維模型建模方式主要可以擴(kuò)展為兩種:一種是通過Creator建模工具直接進(jìn)行三位實(shí)體建模來(lái)得到OpenFlight模型,另一種是通過creator建模工具建立各組件,然后利用該模型組合工具來(lái)得到OpenFlight模型[6]??偫ㄟ@兩種建模方式,OpenFlight三維模型建模流程如下所示。

        (1)首先對(duì)所建模型的三維實(shí)體進(jìn)行分析,將其拆分為幾個(gè)不同的組件,劃分的目的是使各模型更容易通過組合實(shí)現(xiàn)模型的構(gòu)建,模型組合也可以使用已有的模型組件。

        (2)對(duì)于單個(gè)實(shí)體的建模,一般不需要拆分,直接利用Creator建模即可。對(duì)于拆分好的組件,一一建模即可。

        (3)利用該軟件組合模型,完成多個(gè)模型的初步建模工作。

        (4)在進(jìn)行導(dǎo)出模型前,需要對(duì)紋理圖片,LOD和面片等進(jìn)行校正、拼接等處理,這樣可以減少優(yōu)化模型。然后導(dǎo)出生成模型即可。

        (5)完成整個(gè)三維對(duì)象模型的構(gòu)建工作。

        2.2 OpenFlight模型數(shù)據(jù)格式

        OpenFlight格式及OpenFlight API是Multigen開發(fā)的,在視覺仿真領(lǐng)域最為流行的標(biāo)準(zhǔn)文件格式。OpenFlight采用幾何層次結(jié)構(gòu)和節(jié)點(diǎn)(數(shù)據(jù)庫(kù)頭節(jié)點(diǎn)、組、物體、面等)屬性來(lái)描述三維物體,數(shù)據(jù)節(jié)點(diǎn)種類很多,其常用的數(shù)據(jù)節(jié)點(diǎn)類型如表1所示。各類型的節(jié)點(diǎn)具有不同的屬性信息,其中一些屬性使用屬性調(diào)色板索引號(hào)來(lái)描述,如顏色、材質(zhì)、紋理等。在OpenFlight模型中,數(shù)據(jù)節(jié)點(diǎn)大致包括:根節(jié)點(diǎn)、組節(jié)點(diǎn)、體節(jié)點(diǎn)、面節(jié)點(diǎn)和點(diǎn)節(jié)點(diǎn)等五大類,這些節(jié)點(diǎn)按照樹狀結(jié)構(gòu)組織起來(lái)。一個(gè)OpenFlight數(shù)據(jù)庫(kù)的層次結(jié)構(gòu)被作為一個(gè)文件存儲(chǔ)在磁盤上。模型以0,1二進(jìn)制代碼存儲(chǔ),8位為一字節(jié),字節(jié)的存儲(chǔ)順序是按照正序方式存儲(chǔ)的。所有的模型文件都是以4個(gè)字節(jié)開始記錄。前兩個(gè)字節(jié)代表記錄類型,后兩個(gè)字節(jié)代表文件長(zhǎng)度。其中在相鄰節(jié)點(diǎn)上,子節(jié)點(diǎn)隸屬于父節(jié)點(diǎn)無(wú)論是在空間位置還是功能上,而兄弟節(jié)點(diǎn)之間則存在著一定的相關(guān)性。OpenFlight的這種樹狀多層結(jié)構(gòu)允許用戶直接對(duì)樹根節(jié)點(diǎn)和下屬各節(jié)點(diǎn)進(jìn)行操作,保證了從大型模型數(shù)據(jù)庫(kù)每個(gè)頂點(diǎn)的精確控制[7]。

        表1 OpenFlight主要數(shù)據(jù)節(jié)點(diǎn)的說(shuō)明Tab.1 Main data node of OpenFlight

        3 OpenFlight模型組合設(shè)計(jì)

        3.1 OpenFlight文件的讀寫

        利用OpenFlight API對(duì)OpenFlight文件進(jìn)行基本讀寫的流程主要包括程序初始化,創(chuàng)建頭節(jié)點(diǎn),新建組節(jié)點(diǎn)以及其他節(jié)點(diǎn)等,然后繪制幾何節(jié)點(diǎn),并建立節(jié)點(diǎn)間的層級(jí)關(guān)系,最后寫入并關(guān)閉數(shù)據(jù)庫(kù),程序退出等若干步驟。具體流程如下:

        (1)程序主參數(shù)進(jìn)行初始化;

        (2)新建頭節(jié)點(diǎn),建立數(shù)據(jù)庫(kù)集;

        (3) 創(chuàng)建節(jié)點(diǎn)(光照,聲音,DOF,LOD,…),并給記錄集屬性賦值;

        (4)通過若干三維坐標(biāo)創(chuàng)建頂點(diǎn)集;

        (5)創(chuàng)建若干子面 addVertex,組成面集makePoly;

        (6)創(chuàng)建若干體節(jié)點(diǎn)fltObject,組成組節(jié)點(diǎn)fltGroup;

        (7)寫入數(shù)據(jù)文件形成模型文件mgWriteDb(db)。

        3.2 模型組合基本操作

        3.2.1 組件的添加

        添加組件主要指將組件庫(kù)中的組件模型添加到其他模型中,形成一個(gè)新的模型供仿真使用。其中組件以該子節(jié)點(diǎn)的形式在所裝備的主模型中顯示,為了使導(dǎo)出模型與紋理的路徑不相關(guān),在此都使用絕對(duì)路徑。組件添加采用將組件以外部擴(kuò)展節(jié)點(diǎn)的調(diào)用方式加到主模型中。利用外部擴(kuò)展節(jié)點(diǎn),可以更加快速、方便地組合模型。這樣做也便于后期將完整模型拆分成相對(duì)獨(dú)立的組件模型,對(duì)于拆下來(lái)的組件模型還可以應(yīng)用到組件模型庫(kù)的構(gòu)建中,從而提高了模型的利用率。

        添加組件節(jié)點(diǎn)的具體實(shí)現(xiàn)代碼步驟如下:

        得到當(dāng)前的數(shù)據(jù)庫(kù)頭節(jié)點(diǎn)mgGetCu rrentDb();

        新建一個(gè)Group節(jié)點(diǎn)mgNewRec();

        創(chuàng)建一個(gè)外部節(jié)點(diǎn)mgNewRec();

        選擇的組件文件mgListGetSe lectedItemString();

        將選擇的文件設(shè)置為外部節(jié)點(diǎn)mgSetA ttL ist();

        將外部節(jié)點(diǎn)作為新建Group節(jié)點(diǎn)子節(jié)點(diǎn)mgA ttach();

        寫入數(shù)據(jù)庫(kù)頭節(jié)點(diǎn)mgW riteDb()。

        添加組件模型后,在Creator中的結(jié)構(gòu)如圖1所示。

        圖1 模型結(jié)構(gòu)Fig.1 Model structure

        3.2.2 組件的刪除

        組件的刪除主要是指將外部添加進(jìn)來(lái)的外部節(jié)點(diǎn)刪除,由于外部組件都是添加了一個(gè)節(jié)點(diǎn),所以從模型中刪除一個(gè)組件模型可以通過刪除其父節(jié)點(diǎn)而實(shí)現(xiàn),代碼如下:

        g=mgGetRecByName(db,selectFullFltName);//選擇節(jié)點(diǎn)

        mgDelete(g);//刪除節(jié)點(diǎn)

        3.2.3 組件的移動(dòng)

        模型的移動(dòng)首先需要定義兩個(gè)點(diǎn),一個(gè)點(diǎn)是模型初始位置,另一個(gè)點(diǎn)是模型中心要移動(dòng)的差值點(diǎn),然后將這兩點(diǎn)賦給fltXmTranslate格式記錄集,模型經(jīng)過記錄集的變換即可實(shí)現(xiàn)模型的移動(dòng)。具體代碼如下:

        mgrec* c=gNewRec(fltXmTranslate);//定義記錄集

        mgSetCoord3d(c,fltXmTranslateFrom,a1,a2,a3);//設(shè)置模型初始位置點(diǎn)

        mgSetCoord3d(c,fltXmTranslateDelta,b1,b2,b3);//設(shè)置模型移動(dòng)差值量

        mgAttach(g,c);//將組件進(jìn)行移動(dòng)

        3.2.4 組件的旋轉(zhuǎn)與縮放

        模型的旋轉(zhuǎn)與縮放在此提供繞xyz軸旋轉(zhuǎn)和縮放,通過選擇中心點(diǎn)、旋轉(zhuǎn)軸和旋轉(zhuǎn)角度或縮放系數(shù)即可實(shí)現(xiàn)模型的旋轉(zhuǎn)與縮放,具體代碼實(shí)現(xiàn)如下:

        mgrec*x=mgNewRec(fltXmRo tate);

        mgSetCoord3d( x,fltXmRotateCenter,a1,a2,a3);//選擇中心點(diǎn)

        mgSetVector(x,fltXmRotateAx is,0,0,1);//選擇以z軸為旋轉(zhuǎn)縮放軸

        m gSetA ttList(x,fltXmSca leZ,z,MG_NULL)//以z軸縮放z倍

        mgSetAttList(x,fltXmRotateAngle,50,MG _NULL);//設(shè)置旋轉(zhuǎn)角度為50°

        mgAttach(g,x);//旋轉(zhuǎn)與縮放模型

        圖2為模型平移縮放后在Creator中的結(jié)構(gòu)圖。

        3.3 模型組合工具的實(shí)現(xiàn)

        圖2 模型結(jié)構(gòu)圖Fig.2 Model structure

        按照以上的框架設(shè)計(jì)和操作模型的基本功能,基于 MFC 單文檔框架、vegaprime 2.2和OpenFlight API編程實(shí)現(xiàn)了模型可組合建模工具,其界面如圖3所示。該工具具有良好的人機(jī)交互編輯模型功能,以所見即所得的形式提供模型元件的平移、旋轉(zhuǎn)、縮放等幾何變換操作和拆分、組合等編輯操作以實(shí)現(xiàn)模型的可組合構(gòu)建。

        圖3 可組合建模工具運(yùn)行界面Fig.3 Interface of the modeling tools

        在此利用該工具將一架飛機(jī)和若干導(dǎo)彈進(jìn)行了組合建模(圖4,圖5)。

        圖4 分離的導(dǎo)彈和飛機(jī)Fig.4 Missiles and aircraft

        圖5 組合過程和組合模型Fig.5 Process and portfolio model

        4 結(jié) 語(yǔ)

        本文通過調(diào)用OpenFlight API接口語(yǔ)言,實(shí)現(xiàn)了通過組裝模型組件建立完整模型的功能,并且模型組件可以被任意刪除、移動(dòng)、旋轉(zhuǎn)、縮放等,解決了模型可組合建模的問題。這樣可以充分利用已有的模型資源,減少虛擬模型的建模工作量。但是本文對(duì)模型的紋理編輯,LOD節(jié)點(diǎn)、DOF節(jié)點(diǎn)等特殊節(jié)點(diǎn)編輯功能還未實(shí)現(xiàn),有待進(jìn)一步解決。

        [1] 李榮江,趙剛,陳雷.基于Creator的分塊技術(shù)研究與實(shí)現(xiàn)[J].四川理工學(xué)院學(xué)報(bào):自然科學(xué)版,2010,23(2):216-218.LI Rongjiang,ZHAO Gang,CHEN Lei.Research and implemention of block technology based on creator[J].Journal of Sichuan University of Science&Engineering:Natural Science Edition,2010,23(2):216-218.

        [2] 張建.Creator三維模型數(shù)據(jù)庫(kù)優(yōu)化技術(shù)[J].系統(tǒng)仿真技術(shù),2010,6(12):164-168.ZHANG Jian.Optimization technique of creator three dimensional model database[J].System Simulation Technology,2010,6(12):164-168.

        [3] 孔中武,石林鎖,王濤.基于 Creator和VegaPrime的導(dǎo)彈飛行視景仿真系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].四川兵工學(xué)報(bào),2014,35(10):111-114.KONG Zhongwu,SHI Linsuo,WANG Tao.Design and implementation of missile flight scene simulation based on creator and vega prime[J].Journal of Sichuan Ordnance,2014,35(10):111-114.

        [4] 丁偉利,王露.基于OpenFlight模型的通用橋梁紅外輻射特性模擬方法[J].光電工程,2013,40(10):54-62.DING Weili,WANG Lu.Infrared radiation characteristics of general bridge based on OpenFlight model[J].Opto-Electronic Engineering,2013,40(10):54-62.

        [5] 常彥博,李智.虛擬三維地形模型的建模技術(shù)研究[J].桂林航天工業(yè)學(xué)院學(xué)報(bào),2014,73(1):12-15.CHANG Yanbo,LI Zhi.Study on the modeling technology of virtual 3D terrain model[J].Journal of GuiLin University of Aerospace Technology,2014,73(1):12-15.

        [6] 羅丹,蔣自成,王躍峰.OpenFlight模型的OpenGL接口研究[J].計(jì)算機(jī)仿真,2005(1):402-404.LUO Dan,JIANG Zicheng,WANG Yuefeng.Research of interface of OpenFlight model into OpenGL based systems[J].Computer Simulation,2005(1):402-404.

        [7] 劉立嘉,劉裕.OpenFlight模型編輯器的設(shè)計(jì)與實(shí)現(xiàn)[J].石家莊鐵道學(xué)院學(xué)報(bào):自然科學(xué)版,2009,22(2):54-58.LIU Lijia,LIU Yu.Design and realization of OpenFlight model editor[J].Journal of Shijiazhuang Railway Institute:Natural Science,2009,22(2):54-58.

        猜你喜歡
        視景組件工具
        無(wú)人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
        能源工程(2022年2期)2022-05-23 13:51:50
        波比的工具
        波比的工具
        新型碎邊剪刀盤組件
        U盾外殼組件注塑模具設(shè)計(jì)
        vega及其在戰(zhàn)場(chǎng)環(huán)境視景仿真系統(tǒng)中的應(yīng)用
        “巧用”工具
        讀者(2017年18期)2017-08-29 21:22:03
        風(fēng)起新一代光伏組件膜層:SSG納米自清潔膜層
        全回轉(zhuǎn)拖輪運(yùn)動(dòng)建模與視景仿真
        基于Vortex與Vega Prime的車輛模擬器動(dòng)力學(xué)與視景仿真
        免费人成视频xvideos入口| 91久久精品色伊人6882| 东京热日本av在线观看| 精品一区三区视频在线观看| 内射爽无广熟女亚洲| 东京无码熟妇人妻av在线网址| 午夜福利视频合集1000| 国产女在线| 内射无码专区久久亚洲| 亚洲av乱码中文一区二区三区| 亚洲色大成在线观看| 精品国产一区二区三区香蕉| 午夜一区二区三区在线视频| 蜜臀av一区二区三区精品| 激情五月六月婷婷俺来也| 久久国产精品婷婷激情| 日韩内射美女片在线观看网站| 亚洲最大av网站在线观看| 国精品无码一区二区三区在线| 亚洲福利视频一区| 久久精品国产亚洲av桥本有菜| 男生自撸视频在线观看| 亚洲高清一区二区三区在线播放| 狠狠躁18三区二区一区| 亚洲人精品亚洲人成在线| 好大好硬好爽免费视频| 无遮挡十八禁在线视频国产制服网站| 日本一区二区在线看看| 日韩精品中文字幕一区二区| 国产99久久久国产精品~~牛| 精品三级av无码一区| 久久AV中文一区二区三区| 国产一区二区三区免费精品| 国语自产啪在线观看对白| 毛片在线播放亚洲免费中文网| 亚洲色偷偷综合亚洲avyp| 亚洲av无码国产剧情| 国产精品九九九久久九九| 一片内射视频在线观看| 中文乱码字字幕在线国语| 极品少妇小泬50pthepon|