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

3DS與OBJ格式的三維模型文件在OpenGL中的輸入與處理

2013-12-10 14:07:22武警工程大學汪永剛
電子世界 2013年6期
關(guān)鍵詞:定義程序模型

武警工程大學 汪永剛

1.前言

OpenGL(開放圖形庫)作為一個開放的三維圖形軟件包,它獨立于窗口系統(tǒng)和操作系統(tǒng),基于OpenGL開發(fā)的應用程序可以十分方便地在各種平臺間移植。OpenGL的功能包括:建模、變換、顏色模式設置、紋理映射、位圖顯示以及雙緩存動畫等,而且借助Windows編程環(huán)境可以方便地對所構(gòu)模型的人機交互進行控制。由于其開放性和高度重用性,OpenGL已經(jīng)成為業(yè)界標準[1]。

雖然OpenGL提供了一些建立形體模型的命令,但OpenGL并沒有提供更為復雜的三維模型的高級命令。在這種情況下,如果完全通過基本的幾何圖元—點、線、多邊形來構(gòu)建模型,勢必十分困難;另一方面,由于3D圖形技術(shù)的發(fā)展,形成了非常多的3D建模軟件,這些軟件建模一般比較方便,但又難以對其進行控制和交互。因此,如何有效地利用這些資源,對于快速開發(fā)可視化系統(tǒng)具有非常重要的意義。

作者在本文中對兩種流行的三維模型文件的文件格式進行了介紹,并通過程序?qū)崿F(xiàn)了文件的讀取。把這些文件轉(zhuǎn)換成OpenGL程序,再對其進行控制和交互操作。

2.3DS文件的輸入和處理

3D Studio Max是Autodesk公司開發(fā)的用于制作三維動畫的應用程序,它所生成的圖形文件格式是3DS文件格式。該軟件建模方便,且功能強大。因此,可以利用3D Studio Max對構(gòu)建可視化系統(tǒng)提供重要幫助。這里介紹一種將3DS文件轉(zhuǎn)換成OpenGL文件的簡單方法。

這種轉(zhuǎn)換需要使用一個工具View3DS.exe(網(wǎng)上可下載)。轉(zhuǎn)換時將3DS文件拖到View3DS上,將彈出一個窗口,在窗口中會顯示需要轉(zhuǎn)換的3DS模型。在窗口上單擊鼠標左鍵,會彈出一個菜單,選擇Export OpenGL CCode菜單項,將會在當前目錄中生成OpenGL程序,包括與模型名相同的.h和.gl二個文件[2]。

生成C代碼后,將模型的.h和.gl文件拷貝到當前建立的工程目錄中,并在初始化部分加入以下代碼:

Model=GL3DS_initialize_modelName();

ModelName是指對應于3DS模型的名稱,上面函數(shù)定義在生成的模型.h文件中。該函數(shù)運用了顯示列表的技術(shù),可以提高顯示的速度。在模型繪制文件的開始部分,加入如下代碼:

#include“modelName.h”

最后,在繪制模型部分加入glCallList(Model),用OpenGL顯示列表技術(shù)實現(xiàn)圖形的顯示和重現(xiàn)。

3.OBJ文件的輸入和處理

OBJ文件是Alias/Wavefront公司開發(fā)的三維軟件Maya的一種數(shù)據(jù)輸出類型,它定義了對象的幾何和其它的一些特性。由于它的文件結(jié)構(gòu)非常簡單,所以適合在應用程序中讀取或進行3D文件格式轉(zhuǎn)換[3]。

3.1 OBJ文件格式

OBJ文件既可以定義多邊形模型,也可以定義自由曲面模型。多邊形模型就是可以用點、線、面等基本元素構(gòu)造的模型,而自由曲面模型是指使用參數(shù)曲面造型定義的模型。下面是某個OBJ文件的一部分

v-0.7081257-0.08592043-0.19173051

v-0.7081257-0.11188304-0.19173063

v-0.7081257-0.0989018-0.19266948

……

vn-0.01888834-0.65014-0.7556138

vn-0.017401185-0.52368283-0.8475712

vn-0.2399254-0.961792-0.075679004

從上面可以看出,OBJ文件由文本行組成,每一行文本都是由一個關(guān)鍵字開頭,緊跟著后面是該關(guān)鍵字所表示含義的具體參數(shù)。例如,以“vn”開頭表示該行描述一個頂點法向量信息,后面一定會跟三個Double型的具體參數(shù),分別描述該頂點法向量的三維坐標信息表1列出了OBJ文件中主要的關(guān)鍵字及其具體含義[4]。

表1 OBJ文件的關(guān)鍵字及其含義

頂點數(shù)據(jù)類型主要提供模型的以下參數(shù):

(1)頂點的幾何坐標(v x y z w);

(2)頂點的紋理坐標(vt u v w);

(3)頂點的法向量(vn I j k);

(4)空間參數(shù)點的坐標(vp u v w)。

在OBJ文件中,點的坐標的確定是右手坐標系。

定義一個多邊形的語法如下:

fv/vt/vn v/vt/vn v/vt/vn…,其中省略號部分表示可以定義任意多邊的多邊形。其中v表示頂點的幾何坐標;vt表示頂點的紋理坐標;vn表示頂點的法向量,每個元素之間需用“/”符號隔開。例如,可用以下語句定義一個四邊形:f1/1/1 2/2/2 3/3/3 4/4/4。如果只有頂點坐標和法向量坐標(不含紋理坐標),那就應該使用“//”將坐標隔開。例如只定義頂點坐標和法向量坐標的一個四邊形:f1//1 2//2 3//3 4//4。

3.2 OBJ文件的輸入處理

了解了OBJ文件的結(jié)構(gòu)后,為了能在程序中讀入模型,需要建立對應的模型數(shù)據(jù)結(jié)構(gòu)。

程序中首先定義了OBJ文件對應的結(jié)構(gòu)體,如對象頂點的結(jié)構(gòu)體、材質(zhì)描述結(jié)構(gòu)體和總的模型描述結(jié)構(gòu)體等。代碼如下:

程序中定義了一個全局變量:ModelContext*model。又實現(xiàn)了一個類,將OBJ文件的內(nèi)容讀入到全局變量中。在該類中定義了一些讀入函數(shù)

void readLineData(char*FileName);//讀入線數(shù)據(jù)

void readObjData(char*FileName);//讀其它對象數(shù)據(jù)

FILE* fileOpen(const char* filename,constchar*model);//打開文件

獲取了全局變量后,就可以在視圖類中繪制所得到的對象模型,然后對模型進行操作和交互式處理。

4.小結(jié)

本文簡要介紹了3DS和OBJ兩種3D文件格式在OpenGL中的輸入和處理方法。現(xiàn)在3D文件資源十分豐富,要充分利用這些資源,文件格式的轉(zhuǎn)換具有十分重要的意義。在轉(zhuǎn)換為OpenGL程序后,就可以利用OpenGL的強大功能來進行三維分析和交互操作,其成果可以適用于地形建模、城市規(guī)劃以及虛擬現(xiàn)實等許多領域。

[1]郭景,雷鳴.3DSMAX模型在OpenGL中的讀取與重現(xiàn)[J].計算機應用,2009,5.

[2]胡平平,劉建明,王晶杰.OpenGL顯示3DS模型若干問題的研究[J].工程圖學學報,2010,8.

[3]向南平,江資斌,左廷英.OpenGL中Maya模型的應用[J].微型電腦應用,2009,18.

[4]王金峰,姚國清.三維模型文件中的OBJ格式在OpenGL中的輸入與處理[J].電腦知識與技術(shù),2011,4.

[5]陳炳發(fā),陸楠,伍鐵軍.一種面向OpenGL的三維模型的轉(zhuǎn)化方法[J].小型微型計算機系統(tǒng),2010(25).

猜你喜歡
定義程序模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
3D打印中的模型分割與打包
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創(chuàng)衛(wèi)暗訪程序有待改進
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 在线免费亚洲无码视频| 欧美日韩成人在线观看| 亚洲人成电影在线播放| 国产精品手机视频一区二区| 国产在线视频自拍| 国产精品浪潮Av| 亚洲天堂首页| 毛片三级在线观看| 国产福利不卡视频| 亚洲视频欧美不卡| 亚国产欧美在线人成| 婷婷开心中文字幕| 天堂成人av| 国产精品综合色区在线观看| 久久国产精品无码hdav| 国产免费观看av大片的网站| 一级毛片无毒不卡直接观看| 午夜不卡福利| 国产99免费视频| 亚洲欧美日韩综合二区三区| 波多野结衣一区二区三区四区 | 国产在线精品99一区不卡| 国产国模一区二区三区四区| 天堂成人在线视频| 欧美亚洲一区二区三区在线| 伊人成人在线视频| 日韩A∨精品日韩精品无码| 97se亚洲综合| 2021国产精品自拍| 国产第四页| 人妻少妇久久久久久97人妻| 精品福利视频网| 亚洲精品人成网线在线 | 又黄又湿又爽的视频| 欧美国产菊爆免费观看| 国产成人在线无码免费视频| 亚洲欧美成人综合| 999国内精品视频免费| 伊人久久大香线蕉综合影视| 九色91在线视频| 欧美不卡视频一区发布| 国产成人a毛片在线| 人妻丰满熟妇AV无码区| 国产成人高清在线精品| 天天操天天噜| 91久久性奴调教国产免费| 99热这里只有精品2| 欧美www在线观看| 日本精品影院| 女人爽到高潮免费视频大全| 色综合手机在线| 亚洲国产精品不卡在线| 免费人成网站在线高清| 黄色污网站在线观看| 99久久精品国产麻豆婷婷| 国产精品自拍合集| 97se综合| 性喷潮久久久久久久久| 久久精品日日躁夜夜躁欧美| 欧美va亚洲va香蕉在线| 毛片免费在线视频| 国产精品爽爽va在线无码观看| 国产主播一区二区三区| 国内精品久久久久久久久久影视| av一区二区三区高清久久| 日韩欧美国产精品| 国语少妇高潮| 色老二精品视频在线观看| 精品国产电影久久九九| 中文成人在线| 久久99国产精品成人欧美| 天天躁日日躁狠狠躁中文字幕| 亚洲va欧美va国产综合下载| 国产黄色免费看| 成人免费一级片| 欧美国产日韩另类| 久久国产成人精品国产成人亚洲 | 欧美在线网| 日韩免费毛片| 国产成人精品一区二区三区| 久久久无码人妻精品无码| 欧美日韩激情在线|