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

基于OpenGL的三維模型渲染技術研究*

2015-03-14 12:32:29董鴻鵬姜本清
艦船電子工程 2015年10期
關鍵詞:數據庫信息模型

董鴻鵬 姜本清 方 偉

(海軍航空工程學院信息融合研究所 煙臺 264001)

?

基于OpenGL的三維模型渲染技術研究*

董鴻鵬 姜本清 方 偉

(海軍航空工程學院信息融合研究所 煙臺 264001)

物體三維模型的渲染是仿真領域中的一個重要方面,論文以OpenFlight模型為例,設計了一種基于OpenGL的三維模型渲染方法。分析了OpenFlight模型的格式特點,根據其特點利用API實現了基于OpenGL的三維模型正確表現,并可在渲染后對目標模型進行采樣、面片選擇等進一步處理。仿真結果顯示了該方案的有效性。

三維模型; OpenGL; OpenFlight

Class Number TP391.9

1 引言

隨著計算機仿真技術、虛擬現實技術的飛速發展,如何建立一個高質量、高精度且數據易于處理的三維物體模型成為一個越來越重要的問題。

OpenFlight是由Multigen公司開發的由Creator軟件生成的一種用于存儲空間模型數據和圖像信息的空間數據格式,被認為是目前虛擬現實領域中空間數據格式的工業標準。但由于其應用平臺的限制性,只能對模型進行有限的處理。目前支持不同模型格式進行相互間操作的軟件接口較少且效果不高,可拓展的應用范圍有限。

為使OpenFlight模型得到進一步應用,如計算三維模型的電磁散射特性、與其格式他模型和軟件平臺進行數據交互等,本文基于OpenGL的圖形渲染功能和Visual Studio的編程功能,實現讀取OpenFlight模型文件并對其進行再處理。

2 OpenFlight三維模型

OpenFlight是一種按層次組織的邏輯化場景描述數據庫。一般的OpenFlight模型由幾何對象數據、屬性和層次結構三方面組成。幾何對象數據以一系列有序的三維坐標的集合描述了幾何對象。屬性包括一些如紋理、材質等方面的附加內容[1]。層次結構將數據節點以層次化的邏輯結構組織起來,適用于實時顯示。OpenFlight三維數據庫將各層數據節點按樹狀結構進行組織,如圖1所示,子節點在空間位置或功能上隸屬于父節點,兄弟節點之間則存在著相關性。不同類型的節點擁有不同的屬性信息,其中一些屬性如顏色、材質、紋理等,使用屬性表索引號來描述。

OpenFlight文件由線性的二進制流記錄組成,所有字節都按照Big Endian(低地址存放最高有效字節)方式存儲。為了方便用戶快速解讀和構建OpenFlight文件,Multigen公司提供了獨立于建模平臺的二次開發函數庫OpenFlight API,包含了四類不同功能的函數: 1) 讀取函數,用于遍歷數據庫并查詢其中的信息; 2) 寫入函數,用于創建和編輯OpenFlight數據庫中的節點; 3) 擴展函數,用于創建OpenFlight數據庫中新類型節點或節點的新屬性; 4) 工具函數,注冊和插入用戶自定義的插件和算法。這些函數使開發者不需過多關注二進制文件的底層結構細節[2,8,10]。

圖1 OpenFlight模型結構

3 OpenFlight三維模型的提取

圖2 OpenFlight模型讀取流程

OpenFlight用結合層次結構和節點(數據庫頭結點、組、物體、面等)屬性來描述三維物體,允許用戶直接對層次結構及節點進行操作,實現了從大型數據庫到物體單個頂點的精確控制[3~4]。因此,要完全獲取OpenFlight數據格式文件的信息并正確渲染出來需要很大的工作量,在一般的仿真場景下也沒有必要。可先利用OpenFlight API獲取數據庫中所有多邊形的信息,包括三維實體的頂點坐標、頂點法向量、紋理坐標和多邊形的材質、紋理等,然后將這些信息儲存在多邊形鏈表中,利用OpenGL來渲染三維模型。

OpenFlight數據庫的儲存信息分為兩個部分:一個部分是數據庫的公用信息,包括紋理、光照、材質、聲音等,通過pallete(托盤)的形式放在根節點上的;另一部分是三維模型中所有多邊形面的幾何和渲染信息,這些信息則分別存儲在各個多邊形節點上。因此三維模型在渲染上也分成兩個部分:一個部分是紋理數據的預讀取,首先利用函數將紋理數據讀入內存,然后將其綁定,把綁定索引值和紋理索引值對應起來,這樣下一部多邊形渲染的時候就能按索引值找到對應的紋理;另一部分是多邊形的渲染,從頭至尾遍歷多邊形鏈表,調用函數根據每一個多邊形的屬性進行繪制[5,9]。

程序具體實現過程:

1) 創建紋理、材質、頂點坐標、多邊形等結構體鏈表作為基本類;

struct vertex{double x,y,z; float i,j,k;…}

struct texture{…}

struct polygon {…}

2) 利用API的mgOpenDb(…)使程序進入到FLT文件的頭結點,開始提取三維模型數據;

3) 編輯函數分別對模型的紋理、材質、頭結點和視點位置信息進行讀取;

loadTexture(…);

loadMateria(…);

readHeader(…);

loadEyepoint(…);

4) OpenFlight是以三角面片形式提供頂點的信息,因此在提取時可將模型以三角面片為基本存儲單位,利用循環函數,將模型的基本信息存儲在一個多邊形結構體的鏈表中;

5) 將多邊形結構體鏈表和上一步中提取的紋理鏈表利用索引值對應起來;

6) 利用函數mgCloseDb(…)關閉FLT文件,清理程序緩存。

4 三維模型的渲染技術

OpenGL(Open Graphic Library)是一個優秀的三維圖形硬件的軟件接口(Application Programming Interface,API),同時也是一個跨平臺、開放性的三維圖形和模型庫。OpenGL在不同平臺上都具有非常快的渲染速度,是高性能圖形和交互性場景處理的行業標準[6]。

在使用OpenGL渲染前,必須根據模型對OpenGL做合理的初始設定,如繪制前首先要對場景進行初始化:創建窗體,設置OpenGL繪圖窗口大小、投影模式,定義視圖體,設置光源,定義視點位置、視角和視線方向等等。為更準確的觀察、使用渲染后的模型,程序使用函數glTranslatef(…)、glScaled(…)和glRotatef(…)來實現模型的移動、縮放和旋轉。

在OpenGL中,深度表示像素點在3D世界中距離攝像機的距離(繪制坐標),深度緩存中儲存著每個像素點的深度值。為使在繪制時避免后繪制的物體把先繪制的物體覆蓋掉,可以利用OpenGL的深度檢測功能[7]。

啟動深度檢測,打開深度檢測開關并設置檢測方式:

glEnable(GL_DEPTH_TEST);

glDepthFunc(GL_LEQUAL);

并且在完成繪圖以后,實現禁止深度檢測:

glDisable(GL_DEPTH_TEST);

5 仿真結果及功能拓展

為驗證程序的正確性,用Creator軟件分別建立了B2轟炸機和某型艦船的三維模型,對比圖3和圖4,可看出渲染效果較好證明了程序的實用性。

圖3 B2飛機模型在Creator和本文程序中的對比

圖4 艦船模型在Creator和本文程序中的對比

通過把OpenFlight三維模型從限制性比較強的Creator軟件轉換到編輯功能強大的Visual Studio平臺上,可以對模型數據進行處理實現更多功能。

5.1 三維模型面片選擇

由于OpenFlight模型底層是由三角面片構成,故可對模型的基本三角面片信息進行編輯,實現如設置模型紋理等功能,方便進一步進行圖像仿真等處理。

在渲染時,暫時先不將多邊形鏈表與紋理鏈表對應,而直接將其繪出。并在繪制時設置相鄰多邊形顏色不同,便于區分。

圖5 面片選擇

為實現面片選取功能,程序采用線面相交法,即判斷鼠標垂直于幕布的直線是否與模型面片相交:首先,在選擇模式下,點擊鼠標時獲取鼠標點的坐標和其垂直于幕布的法向量;然后將其與所有多邊形的法向量進行比較,求出與之相垂直的多邊形;再判斷鼠標法向量與多邊形是否有交點,有交點即為選擇成功,改變顯示顏色為紅色,否則選擇失敗不做改變。

判斷交點時可先求出直線與多邊形所在平面的交點,然后通過判斷該點是否在多邊形內來判斷直線與多邊形是否存在交點。

5.2 三維模型的取點采樣

建立模型很多情況下需要對模型進行取點采樣,如計算點反射率等,取點方法可仿照上文中面片選取的原理。首先根據需求確定采樣的分辨率,以分辨率為基準設置方向一致的射線群。然后求出每條射線與多邊形的交點即可作為采樣點。

根據不同的采樣要求,可通過設置射線群方向、同一直線不同交點的高度差等信息來調節,通比如過選擇離雷達最近的交點來實現遮擋效應等,最后將需要的交點保存到文件中,便于后續計算。

6 結語

本文提出的三維模型渲染方法拓展了OpenFlight模型的應用范圍,并可在此基礎上對模型作進一步更復雜的處理,提高了其應用價值。最后實驗渲染效果也較好,在工程實踐上尤其是飛行仿真軟件設計、雷達成像仿真軟件等方面有一定的使用價值。

[1] 肖羽,李光耀,王文舉.基于3DS的OpenFlight模型構建方法[J].計算機應用,2009,29:302-304.

[2] 羅丹,蔣自成,王躍峰.OpenFlight模型的OpenGL接口研究[C]//2005全國仿真技術會議論文集,2005:402-404,446.

[3] Donald Hearn, M. Pauline Baker.計算機圖形學[M].第三版.北京:電子工業出版社,2010:330-380.

[4] Richard S. Wright, Nicholas Haemel. OpenGL超級寶典[M].第五版.北京:人民郵電出版社,2012:25-57,84-109.

[5] 方偉,何友,歐陽文,等.基于OpenFlight的數字地形處理軟件包設計及應用[J].計算機仿真,2006,11:291-295.

[6] 常遠,秦小麟,夏斌.基于CNSDTF和OpenFlight的空間數據互操作研究[J].中國圖像圖形學報,2005,10:1554-1559.

[7] 王靜,席澤敏,周超.OpenGL在計算目標電磁散射特性中的應用[J].船電技術,2012,32:30-32.

[8] 劉立嘉,劉裕嘉.OpenFlight模型編輯器的設計與實現[J].石家莊鐵道學院學報,2009,22:54-56.

[9] 唐凱,康鳳舉,宋志明,等.用OpenFlight API開發分地形[J].艦船電子工程,2004,75:74-77.

[10] 王陽生.基于OpenFlight的三維地形自動紋理映射方法[J].城市勘測,2011,3:52-54.

Researchof Data Change Based on OpenFlight Model

DONG Hongpeng JIANG Benqing FANG Wei

(Institution of Information Fusion, Naval Aeronautical and Astronautical University, Yantai 264001)

The rendering of 3D object model is an important aspect in the field of simulation. Taking the OpenFlight model as an example, a 3D model rendering method based on OpenGL is designed. The characteristics of OpenFlight model format are analyzed, and according to its characteristics the rendering, sampling and patch selecting of 3D object, are realized perfectly based on OpenGL with OpenFlight API. Simulation results show the effectiveness of the proposed project.

three-dimensional model, OpenGL, OpenFlight

2015年4月7日,

2015年5月24日

董鴻鵬,男,碩士研究生,研究方向:戰場環境仿真。姜本清,男,教授,碩士生導師,研究方向:軍用電子技術仿真。方偉,男,副教授,研究方向:作戰系統仿真。

TP391.9

10.3969/j.issn.1672-9730.2015.10.030

猜你喜歡
數據庫信息模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 久久综合婷婷| 欧美日韩专区| 67194成是人免费无码| 日韩亚洲综合在线| 成人亚洲视频| 久久精品视频一| 精品伊人久久久香线蕉 | 亚洲免费黄色网| 久久香蕉国产线看观看式| 最新国产高清在线| 人妻无码AⅤ中文字| 国产精品林美惠子在线观看| 亚洲日本一本dvd高清| 国产国产人成免费视频77777| jizz在线观看| 免费A∨中文乱码专区| 试看120秒男女啪啪免费| 久久 午夜福利 张柏芝| 天堂av综合网| 在线a网站| 亚洲制服丝袜第一页| 精品一區二區久久久久久久網站 | 日韩国产高清无码| 亚洲综合精品第一页| 国产呦精品一区二区三区网站| 国产精品视频3p| 亚洲性一区| 国产女人在线视频| 四虎永久免费地址| 69av免费视频| 国产精品精品视频| 青青国产在线| 欧美在线天堂| 亚洲成aⅴ人在线观看| 精品视频在线观看你懂的一区| 日韩成人午夜| 欧美成人第一页| 精品亚洲麻豆1区2区3区| 99久久国产精品无码| 国产丝袜无码精品| 91成人在线免费观看| 亚洲AⅤ永久无码精品毛片| 呦系列视频一区二区三区| 亚洲天堂精品在线| 成人福利在线视频| 国产丰满成熟女性性满足视频| 911亚洲精品| 亚洲三级网站| 波多野结衣一区二区三区88| 久草性视频| 国产精品尹人在线观看| 最新无码专区超级碰碰碰| 99久久精品美女高潮喷水| 亚洲欧美成人网| 玖玖精品在线| 亚洲色图欧美激情| 永久毛片在线播| 国产精品极品美女自在线网站| 丰满人妻被猛烈进入无码| 国产成人精品2021欧美日韩| 在线精品自拍| 午夜毛片免费看| a网站在线观看| 夜夜爽免费视频| 国产成熟女人性满足视频| 亚洲午夜18| 国产网站免费观看| 国产成人91精品免费网址在线| 日韩第一页在线| h视频在线观看网站| 国产美女久久久久不卡| 91丝袜美腿高跟国产极品老师| m男亚洲一区中文字幕| 成人免费一级片| Aⅴ无码专区在线观看| 热99re99首页精品亚洲五月天| 无码专区在线观看| 欧美精品三级在线| 婷婷伊人五月| 亚洲欧美日韩中文字幕在线| 免费精品一区二区h| 人人澡人人爽欧美一区|