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

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

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

武警工程大學 汪永剛

1.前言

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

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

作者在本文中對兩種流行的三維模型文件的文件格式進行了介紹,并通過程序實現了文件的讀取。把這些文件轉換成OpenGL程序,再對其進行控制和交互操作。

2.3DS文件的輸入和處理

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

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

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

Model=GL3DS_initialize_modelName();

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

#include“modelName.h”

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

3.OBJ文件的輸入和處理

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

3.1 OBJ文件格式

OBJ文件既可以定義多邊形模型,也可以定義自由曲面模型。多邊形模型就是可以用點、線、面等基本元素構造的模型,而自由曲面模型是指使用參數曲面造型定義的模型。下面是某個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文件由文本行組成,每一行文本都是由一個關鍵字開頭,緊跟著后面是該關鍵字所表示含義的具體參數。例如,以“vn”開頭表示該行描述一個頂點法向量信息,后面一定會跟三個Double型的具體參數,分別描述該頂點法向量的三維坐標信息表1列出了OBJ文件中主要的關鍵字及其具體含義[4]。

表1 OBJ文件的關鍵字及其含義

頂點數據類型主要提供模型的以下參數:

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

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

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

(4)空間參數點的坐標(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文件的結構后,為了能在程序中讀入模型,需要建立對應的模型數據結構。

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

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

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

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

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

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

4.小結

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

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

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

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

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

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

猜你喜歡
定義程序模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
3D打印中的模型分割與打包
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 国内精品自在自线视频香蕉| 亚洲综合激情另类专区| 91精品国产91久久久久久三级| 青草娱乐极品免费视频| 国产成人乱码一区二区三区在线| 99无码中文字幕视频| 亚洲天堂成人在线观看| 九色国产在线| 日韩精品亚洲一区中文字幕| 亚洲精品视频在线观看视频| 亚洲福利片无码最新在线播放| 国产成年女人特黄特色毛片免 | 亚洲精品波多野结衣| 国产成人综合日韩精品无码不卡| 亚洲人成网站18禁动漫无码| 91日本在线观看亚洲精品| 国产成人无码AV在线播放动漫| 久久久噜噜噜久久中文字幕色伊伊 | 毛片在线看网站| 永久免费无码日韩视频| 国产福利大秀91| 天天干天天色综合网| av在线手机播放| 国产日本欧美亚洲精品视| 久久亚洲日本不卡一区二区| 亚洲精品无码高潮喷水A| 全午夜免费一级毛片| 久久99热这里只有精品免费看 | 国产成熟女人性满足视频| 伦精品一区二区三区视频| 久久综合丝袜日本网| 欧美天天干| 中国一级特黄视频| 欧美午夜精品| 精品人妻AV区| 青青国产视频| 国产午夜精品鲁丝片| 欧美色图久久| 伊人查蕉在线观看国产精品| 亚洲人成网18禁| 国产XXXX做受性欧美88| 天堂网国产| 黄色免费在线网址| 欧洲熟妇精品视频| 青青草原偷拍视频| 特级精品毛片免费观看| 日韩精品一区二区三区免费在线观看| 亚洲Aⅴ无码专区在线观看q| 国产永久免费视频m3u8| 精品超清无码视频在线观看| 欧美黄网站免费观看| 日本不卡免费高清视频| 香蕉伊思人视频| 中日无码在线观看| 尤物精品视频一区二区三区| 久久久久人妻精品一区三寸蜜桃| 毛片在线区| 波多野结衣二区| 日韩av手机在线| 九九九国产| 蝌蚪国产精品视频第一页| 在线观看精品自拍视频| 国产精品成人不卡在线观看| 亚洲人成网站观看在线观看| 54pao国产成人免费视频| 欧洲免费精品视频在线| 中文字幕在线播放不卡| 影音先锋亚洲无码| 亚洲成人精品久久| 久久精品91麻豆| 国产一级毛片网站| 欧美成人综合视频| 精品99在线观看| 99在线视频精品| 国产欧美在线观看一区| 无码中字出轨中文人妻中文中| 亚洲国产中文欧美在线人成大黄瓜| 欧美成人在线免费| 色欲综合久久中文字幕网| 免费A∨中文乱码专区| 国产成人久久777777| 91在线播放免费不卡无毒|