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
主站蜘蛛池模板: 国产网友愉拍精品视频| 国产精品刺激对白在线 | 亚洲综合精品香蕉久久网| 亚洲精品午夜无码电影网| 色哟哟色院91精品网站| 久久99国产综合精品1| 国产综合在线观看视频| 久久精品国产精品青草app| 国产精品19p| 日本一区高清| 亚洲精品爱草草视频在线| 国产精品手机在线观看你懂的 | 欧美日韩国产精品va| 91无码视频在线观看| 午夜日b视频| 国产迷奸在线看| 亚洲国产中文欧美在线人成大黄瓜 | 日韩二区三区| 国产毛片基地| 中国一级特黄视频| 中文无码毛片又爽又刺激| 国产精品一区二区不卡的视频| 谁有在线观看日韩亚洲最新视频| 国产精品3p视频| 熟妇无码人妻| 亚洲av日韩综合一区尤物| 亚洲日本韩在线观看| 精品丝袜美腿国产一区| 国产va在线观看| 2021精品国产自在现线看| 精品国产网| 国产精品无码AV中文| 亚洲国产看片基地久久1024| 欧美亚洲日韩不卡在线在线观看| 久久综合亚洲色一区二区三区 | 亚洲av无码成人专区| 永久成人无码激情视频免费| 亚洲开心婷婷中文字幕| 男女精品视频| 重口调教一区二区视频| 亚洲首页在线观看| 精品久久蜜桃| 欧美成人影院亚洲综合图| 一级毛片免费高清视频| 亚洲资源站av无码网址| 中文字幕在线日本| 91在线精品免费免费播放| 91蜜芽尤物福利在线观看| 亚洲男人的天堂网| 久久永久精品免费视频| 亚洲人成网站观看在线观看| 99久久婷婷国产综合精| 欧美日韩一区二区在线播放| 国产18在线播放| 亚洲综合狠狠| 亚洲精品午夜无码电影网| a亚洲视频| 国产欧美日韩综合一区在线播放| 亚洲日韩AV无码一区二区三区人 | 视频一本大道香蕉久在线播放| 国产国模一区二区三区四区| 一区二区三区四区精品视频| 久久无码高潮喷水| 91九色国产porny| 国产成年无码AⅤ片在线 | 伊人婷婷色香五月综合缴缴情| 91精品国产无线乱码在线| 久久久受www免费人成| 国产一区二区三区在线观看视频 | 欧美一区二区精品久久久| 国产精品国产三级国产专业不| 国产乱子伦无码精品小说| 红杏AV在线无码| 欧美激情成人网| 久久婷婷色综合老司机| 天天综合网色| 中文无码精品A∨在线观看不卡| 99视频全部免费| 天天综合网色| 国产黑丝一区| 国产区在线看| 天堂在线视频精品|