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

Maya的模型信息提取研究

2012-06-13 03:38:58李寅飛
科技傳播 2012年1期
關(guān)鍵詞:信息模型

李寅飛

東華大學(xué)信息與科學(xué)技術(shù)學(xué)院,上海 201610

Maya的模型信息提取研究

李寅飛

東華大學(xué)信息與科學(xué)技術(shù)學(xué)院,上海 201610

Maya是Autodesk公司中和3dMax并列的三維建模和動畫軟件,而且在模型的細節(jié)渲染方面有著更為突出功能,隨著技術(shù)的進步和用戶對三維圖形動畫要求的提高,Maya已經(jīng)廣泛的應(yīng)用到電影、電視、游戲等領(lǐng)域。因此,如果能將Maya中的模型信息從Maya軟件中提取出來,并按照一定的渲染方法重新組建,就能將依賴Maya的圖形文件用于其他設(shè)備上進行三維展示,例如平板電腦,智能手機等移動設(shè)備上。這樣,就能在很大程度上提高產(chǎn)品模型的展示效果。本文將介紹如何利用Maya的Api 將Maya模型中的信息提取出來,并按照OpenGl的模型渲染格式進行儲存。

Maya;node;mesh;face;vertex;OpenGL

0 引言

要成功的提取Maya模型中的信息,必須要知道Maya中的數(shù)據(jù)結(jié)構(gòu),知道Maya中的Api運行模式,掌握Maya模型的類別,模型的構(gòu)成方式,模型屬性組成等等信息。當(dāng)掌握了這些信息之后,就能實現(xiàn)模型重構(gòu)和再實現(xiàn),以完成模型在其他顯示平臺的遷移。

1 Maya的核心數(shù)據(jù)結(jié)構(gòu)Dependency Graph

1.1 概述

我們可將整個Maya 系統(tǒng)拆分為3個主要組成部分: 圖形用戶界面 ,MEL Command Engine ,Dependency Graph 。

Maya用戶可以與Maya Gui進行交互,可以選擇菜單項,更改參數(shù),使對象動畫化以及移動對象等等,當(dāng)與用戶界面進行交互時,Maya實際是再發(fā)出MEl命令,這些命令唄發(fā)送到Command Engine,并在這里被解釋并執(zhí)行。

大部分的MEL命令運行與Dependency Graph直接交互。這樣做是因為Dependency Graph可以被直觀地看做是一個完整的場景,這個場景是組成3D世界的所有重要數(shù)據(jù)和信息。Dependency Graph不僅定義當(dāng)前場景中有什么數(shù)據(jù),還定義了數(shù)據(jù)的處理方式。Dependency Graph 實際就像Maya的心臟和大腦。

1.2 Dependency Graph 與 節(jié)點

我們將Dependency Graph簡稱為DG,DG是Maya的核心,它包括Maya模型的所有基本構(gòu)建,它允許你創(chuàng)建任意的數(shù)據(jù),這些數(shù)據(jù)進行一系列的操作處理后,最終生成一些經(jīng)過加工的數(shù)據(jù)。在DG中,數(shù)據(jù)及其操作被封裝為節(jié)點,一個節(jié)點含有任意數(shù)目的插槽,其中還有Maya使用的數(shù)據(jù),節(jié)點也包含一個操作符,用于對其數(shù)據(jù)進行處理以生成一些其他的數(shù)據(jù)。

由圖1所示節(jié)點實際是Maya的基本構(gòu)件,每個節(jié)點都有一個或者多個與其相關(guān)的特性,這些特性通常唄成為屬性,每個節(jié)點根據(jù)其屬性的不同實現(xiàn)對數(shù)據(jù)的不同操作。

2 Maya 模型的組成結(jié)構(gòu)

Maya中有多種模型類型,但最常用的靜態(tài)模型主要使用的是nurb,polygon 和 subdiv。

2.1 Mesh 與 Polygon

Mesh 英文翻譯為網(wǎng)格,在Maya中則用于代表一個三維實體,例如一個立方體、圓錐體、球體,這些都是Mesh。而模型中的每個面則就是polygon,如下圖的球體模型則更能體現(xiàn)出mesh和polygon的關(guān)系,圖中的每個四邊形方格就是一個polygon。

2.2 Polygon的組成

Polygon主要有3個主要元素:vertices , edges, faces除此之外還有兩個有助于理解和分析polygon如何工作和運行的元素 Facevertices 和 UVs。

Polygon的Vertices元素是一個表示3d的浮點型數(shù)組,每個點都有自己的元素id,每條邊和每個面都是基于這個數(shù)組產(chǎn)生的。如表1。

3 D Float Point 行中每一個元素都是一個三維坐標(x,y,z)Edge元素儲存在一個邊數(shù)組中,數(shù)組中的每個元素儲存著兩個整型變量,儲存著vertices的id,第一個表示邊的起始點,第二個表示結(jié)束點,這樣儲存數(shù)據(jù)就能表示邊的點組成,點邊的方向以及邊的編號。如表2。

表2

Edge行中的每個元素都是一個二維的點,表示邊的起始點和結(jié)束點的id Faces的元素儲存在一個整數(shù)型數(shù)組中,每個面被一系列數(shù)字表示,每個數(shù)字都表示一個邊的索引。與之相應(yīng)的的是face offset 數(shù)組,這個數(shù)組標示了每個面在face數(shù)組中每個面的起始點,具體格式如表3,表4。

表3

表4

如表4中所示,face 1 的起始點在 EdgeId的Index 3 即,F(xiàn)ace 1是由,0,1,2三條邊組成的三角面。

Face-vertices 是將一個Mesh中的每個面的相對vertices 索引,就是說,他們都是以0為起始的整數(shù)數(shù)列。并不是以整個Mesh為基礎(chǔ)的全局索引坐標。UV uv是專門用于描繪紋理信息的元素,其對應(yīng)著每個每個點都有與之相對應(yīng)的uv,我們要把二維貼圖與3d模型想匹配,必須找到每個3d坐標對應(yīng)的uv。

3 提取Mesh Polygon 的信息的程序?qū)崿F(xiàn)

3.1 選取模型目標

在Maya的C++ Api 中,選取模型有兩種形式,第一種選取指定模型信息,第二種選取全部模型信息。

選取指定模型需要用到的變量類型 ∶ MSelectionList 。顧名思義,這個變量類型儲存了用戶的模型選擇信息,即用戶在軟件界面選擇的圖像(單選或者多選)。然后利用MGlobal類里面的成員函數(shù)getActiveSelectionList函數(shù)將MSelectionList變量進行賦值,如此我們設(shè)置的MSelectionList類型變量就得到了賦值。

得到了選取列表之后,就需要利用選擇迭代器對選擇列表里面的內(nèi)容進行遍歷。MItSelectionList ,MItSelectionList 也是一個類,里面有豐富的函數(shù)可以對選擇列表里面的內(nèi)容進行操作,利用里面的next()函數(shù) 和isDone()函數(shù)可以對他儲存的變量進行遍歷MItSelectionList遍歷的內(nèi)容其實就是我們上面提到的Dependency Graph 中所提到的節(jié)點DagNode,但是MItSelectionList類中并沒有直接提取節(jié)點的函數(shù),它值提供了每個節(jié)點的路徑DagPath,通過DagPath我們就可以定位到相應(yīng)的節(jié)點對模型操作。

3.2 獲取模型信息

要實現(xiàn)模型的轉(zhuǎn)移,就需要知道模型的點信息,面信息,點信息包括 點的空間坐標,點的模型序列,點法線信息。面信息包括面?zhèn)€數(shù),每個面的組成,在模型構(gòu)成中,任何一個面都可以分解成若干個三角面,而Maya中的模型構(gòu)成也是按照這個原則,因此,我們提取面的信息的時候是將模型中的面都分解為若干個三角面,并將每個面的點和點的索引相聯(lián)系。

3.2.1 提取點的坐標以及索引

通過上面一步我們得到了dagpath,這里我們就以polygon模型為例提取上面提到過的模型信息首先創(chuàng)建mesh類的實力 MFnMesh這個類 ,通過這個類我們就可以直接得到點的信息以及三角面的信息,這里我們得到的點是以一定順序儲存的point序列。以立方體為例,point序列的索引為0-7,分別記錄了空間坐標的點,通過GetPoints函數(shù)我們就可以得到這個數(shù)列。

3.2.2 提取每個三角面的索引

通過MFnMesh類之中我們通過getTriangles函數(shù)就可以得到面的信息,主要得到兩變量,一是我們這個立方體的三角面的個數(shù),因為六面體是六個四邊形,因此我們得到的三角面是十二個,而另一個變量就是每個三角面的點與我們得到的點的對應(yīng)索引,以這個立方體為例,我們得到的數(shù)列如下(0,1,2,2,1,3,2,3,4,4,3,5,4,5,6,5,7,6,7,0,0,7,1,1,7,3,3,7,5),這些點每3個對應(yīng)一個面,因為我們以立方體為對象,所以每六個點為同一個四邊形的兩個三角面,而且可以看出每個四邊形的組成。

通過上面的步驟我們成功的得到了每個三角面的信息,通過這些單獨的三角面信息我們就能通過opengl進行仿真對每個面配上顏色我們就能實現(xiàn)模型結(jié)構(gòu)的提取。

3.2.3 提取每個點的法線

為了使一個細分度很高的Polygon Mesh 在轉(zhuǎn)移的情況下表現(xiàn)的更加平緩和光滑,即表現(xiàn)的和軟件中更加相似,就需要提取每個點的法線。

這里我們用到的是MItMeshVertex類來對Mesh的每個點進行遍歷,然后通過getNormals函數(shù)得到一個MVectorArray變量,里面儲存了每個點相對于每個面的法線值,通過計算我們可以得到每個點的實際法線。

下面是具體程序?qū)崿F(xiàn):

MItDag dagIter( MItDag∶∶kBreadthFirst, MFn∶∶kMesh, &stat );

通過以上幾步,我們將成功得到所需要的點的空間坐標,點的個數(shù),面的個數(shù),每個面與相應(yīng)點的索引,每個點的點法線通過歸一化之后的信息。通過這些信息,我們就能成功的利用OpenGl模擬出模型的體信息

4 OpenGl仿真

通過OpenGl中的glBegin(GL_TRIANGLES)函數(shù)我們可以將得到的數(shù)據(jù)重新組合成圖形,因為我們只提取了基本模型信息,對于紋理和材質(zhì)并沒有提取,所以,只能生成模型本體,通過設(shè)置glPolygonMode可以將我們形成線框?qū)嶓w化。如圖2是軟件中的圖形,圖3是仿真后的圖形。

圖2

圖3

5 結(jié)論

我們從Maya的數(shù)據(jù)結(jié)構(gòu)入手,分析了他的模型信息儲存結(jié)構(gòu),通過得到正確的模型信息我們就能將模型從Maya中遷移出來,利用openGl將這些信息重現(xiàn),我們就能讓3d模型脫離那些消耗系統(tǒng)資源巨大的軟件,而在我們希望的平臺展示。

[1]Watt A 3D計算機圖形學(xué)(第三版).機械工業(yè)出版社,2005.

[2]Maya user manual(瑪雅用戶手冊)[OL].http://www.autodesk.com/maya

[3]Woo M,Neider J,DavisTj,Shreiner D.OpenGL 編程權(quán)威指南(第三版)[M].北京:中國電力出版社,2003.

TP31

A

1674-6708(2012)58-0157-02

猜你喜歡
信息模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
一個相似模型的應(yīng)用
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 狼友av永久网站免费观看| 91视频99| 欲色天天综合网| 亚洲VA中文字幕| 亚洲精品在线观看91| 亚洲男女天堂| 欧美日韩中文字幕二区三区| 99精品视频九九精品| 啪啪免费视频一区二区| 亚洲香蕉在线| 五月天婷婷网亚洲综合在线| 在线日韩日本国产亚洲| 国产成人精品2021欧美日韩| 亚洲一区二区成人| 色香蕉影院| 久久婷婷国产综合尤物精品| 国产福利免费在线观看| 亚洲精品无码抽插日韩| 欧美不卡视频一区发布| 欧美97色| 午夜色综合| 污网站在线观看视频| 欧美精品三级在线| 狼友视频国产精品首页| 国产av无码日韩av无码网站| 国产成人亚洲精品蜜芽影院| 亚洲精品免费网站| 国产综合色在线视频播放线视| 亚洲第一成人在线| 婷婷丁香在线观看| 欧美成人精品在线| 国产素人在线| 国产精品香蕉在线观看不卡| 亚洲欧洲一区二区三区| 不卡色老大久久综合网| 久久鸭综合久久国产| 99热6这里只有精品| 久久精品日日躁夜夜躁欧美| 91精品免费久久久| 人妖无码第一页| 亚洲成人播放| 日韩精品中文字幕一区三区| 2022精品国偷自产免费观看| 亚洲男人的天堂久久香蕉网| 亚洲成在线观看 | 在线免费不卡视频| 欧美成人A视频| 国产微拍一区二区三区四区| 囯产av无码片毛片一级| 亚洲综合片| 国产乱人伦精品一区二区| 国产在线专区| 99视频在线观看免费| 国产一区二区精品高清在线观看| 国产日本一线在线观看免费| 一本久道久久综合多人| 亚洲男人的天堂久久香蕉 | 国产精品毛片在线直播完整版| 五月婷婷综合色| a级毛片在线免费| 成人福利在线视频| 91网站国产| 欧美日韩精品在线播放| 国产凹凸视频在线观看| 毛片最新网址| 亚洲性网站| 人妻无码一区二区视频| 亚洲美女高潮久久久久久久| 99视频免费观看| 国产成熟女人性满足视频| 91麻豆精品国产高清在线| 曰韩免费无码AV一区二区| 国产91视频免费观看| 漂亮人妻被中出中文字幕久久| 亚洲人成网址| 国产第一页第二页| 亚洲v日韩v欧美在线观看| 亚洲AV无码久久精品色欲| 亚洲天堂色色人体| 在线欧美国产| 四虎影院国产| 国产欧美精品一区二区|