最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Mesh 數(shù)據(jù)是怎么組成的 ?

2023-08-31 01:04 作者:Future-QuietRain  | 我要投稿

譯: ChatGPT-3.5 Xiemh 圖:Xiemh


B站什么時(shí)候可以支持 MarkDown?


未經(jīng)授權(quán),禁止轉(zhuǎn)載。本人保留譯文的全部權(quán)利

原文為Maya官方文檔中的一個(gè)小節(jié)

地址:

https://help.autodesk.com/view/MAYAUL/2024/CHS/?guid=Maya_SDK_Polygon_API_How_polygons_are_handled_html


B站只發(fā)布一次,后續(xù)對(duì)文檔的修正全部更新于GitHUB。原文為MD文件,本文本未做精https://github.com/FutureQuietRain/HelpDocumentation/blob/main/documentation/how_to_construction_a_mesh.md


翻譯描述可能并不準(zhǔn)確,并且也可能存在錯(cuò)漏。本文中部分將Vertices 寫(xiě)作 Vertex 它們是同一個(gè)東西。

一切以原始文檔為準(zhǔn)。


多邊形 (polygon) 在Maya內(nèi)部是如何處理的


多邊形 (polygon) mesh 是由基本數(shù)據(jù)結(jié)構(gòu)的組件(面、邊、頂點(diǎn))組成的。 這個(gè)數(shù)據(jù)結(jié)構(gòu)被封裝在一個(gè)多邊形 (polygon) mesh 節(jié)點(diǎn)中, 以保證在 Maya 的核心構(gòu)架--依賴(lài)關(guān)系圖 中提供結(jié)構(gòu)。這些概念對(duì)于在Maya中操作和與多邊形交互至關(guān)重要。

譯者注: 這節(jié)是廢話(huà),無(wú)法理解可以不看


多邊形 (polygon) 的組件

多邊形網(wǎng)格(polygon mesh)由三種基本組件組成:

1. 頂點(diǎn) (Vertices)

2. 邊 ? (Edges)

3. 面 ? (Faces)


除了這三個(gè)基本的多邊形組件外,還有兩個(gè)額外的組件,同樣在理解如何在 Maya 中處理多邊形(polygon)時(shí)非常重要:

1. 面-頂點(diǎn) (Face-Vertices)

2. UV坐標(biāo) ?(UVs)


頂點(diǎn) ?(Vertices)


Vertex


多邊形網(wǎng)格(polygon mesh)的頂點(diǎn)(Vertices)存儲(chǔ)在一個(gè)簡(jiǎn)單的3D浮點(diǎn)點(diǎn)數(shù)組中,每個(gè)點(diǎn)都有基于數(shù)組中給定索引的頂點(diǎn)ID。后續(xù)講到的邊和面都基于此數(shù)組。

Vertex


譯者注: 這里的 X Y Z 就是每個(gè)頂點(diǎn)的 X Y Z 軸的坐標(biāo)。可以理解為這樣的概念:


邊 (Edges)


Edge


多邊形網(wǎng)格(polygon mesh)的邊(Edges)也存儲(chǔ)在一個(gè)數(shù)組中(邊數(shù)組 Edge array)。邊數(shù)組中的每條邊都由兩個(gè)整數(shù)組成,這個(gè)整數(shù)就是頂點(diǎn)(Vertex)的編號(hào)(ID)。第一個(gè)整數(shù)(Vertex ID)表示邊的起始頂點(diǎn),而第二個(gè)整數(shù)(Vertex ID)表示邊的結(jié)束頂點(diǎn)。這為邊提供了頂點(diǎn)組合、方向和邊ID(由邊數(shù)組的索引表示)。


Edge


譯者注: 值得注意的是使用數(shù)組記錄邊的起始點(diǎn)到結(jié)束點(diǎn),不僅描述的邊的形狀位置,還描述的邊的方向。這很重要

可以理解為這樣的概念:


面 (Faces)


多邊形網(wǎng)格(polygon mesh)的面(Face)存儲(chǔ)在一個(gè)整數(shù)數(shù)組中。每個(gè)面由一系列整數(shù)序列描述,序列內(nèi)部的每個(gè)整數(shù)都是一條邊的ID。第一個(gè)邊序列描述面的外邊界,任何后續(xù)序列表示面中可能存在孔洞。我們用內(nèi)部標(biāo)記來(lái)記錄每個(gè)面所有序列的開(kāi)始和結(jié)束,這便是面的描述。


Face


譯者注:這里的圖例和原文檔中的圖例略有不同,為了更好的理解這里的概念,我重新設(shè)計(jì)了這張圖例。

可能和官方文檔想要表述的不完全相符,但是有利于理解概念。圖中所顯示的面的組成在工作中是需要極力避免的,因?yàn)檫@會(huì)帶來(lái)一些問(wèn)題,這種結(jié)構(gòu)在Maya中可以正常實(shí)現(xiàn),但是在其他DCC軟件中可能并不行,而且大多數(shù)數(shù)據(jù)交換格式都不支持這種模型結(jié)構(gòu)的承載。請(qǐng)確保你的面內(nèi)部孔洞和外部邊界的邊是相連的。大多數(shù)據(jù)交換格式在儲(chǔ)存模型時(shí)只儲(chǔ)存面的頂點(diǎn)順序。


這里介紹另外一種更加通用的記錄面數(shù)據(jù)的一種方法,使用一個(gè)整數(shù)數(shù)組, 數(shù)組內(nèi)的每一個(gè)單元全部由頂點(diǎn)(Vertex)構(gòu)成。頂點(diǎn)的順序決定了面的結(jié)構(gòu),這種結(jié)構(gòu)不支持憑空在面中打孔的操作。


Faces


面偏移和索引數(shù)組補(bǔ)充了面數(shù)組。該數(shù)組保存了面數(shù)組中每個(gè)面描述的起始位置。由于每個(gè)面可以由多個(gè)邊序列以及多個(gè)頂點(diǎn)序列組成,因此遍歷數(shù)組以查找每個(gè)面的開(kāi)頭可能是比較麻煩的事情。這個(gè)面索引數(shù)組提供了快速訪(fǎng)問(wèn)有關(guān)每個(gè)面的信息的方法。我們將面ID作為面偏移數(shù)組的引索ID。除了標(biāo)記每個(gè)面的開(kāi)始的元素之外,還會(huì)在面索引數(shù)組的末尾附加一個(gè)元素,以標(biāo)記面列表中的最后一個(gè)索引。這個(gè)最后的索引數(shù)字允許您快速訪(fǎng)問(wèn)每個(gè)面的順序(面中的邊數(shù)/頂點(diǎn)數(shù))。


Face


譯者注:這里的圖例和原文檔中的圖例略有不同,為了更好的理解這里的概念,我重新設(shè)計(jì)了這張圖例。正如上方兩個(gè)小節(jié)所說(shuō)的。邊Offset 實(shí)際上是一個(gè)引索,可以快速的知道指定的面(ID)所構(gòu)成的頂點(diǎn)有哪些。這個(gè)對(duì)于幾何計(jì)算是非常重要的。


圖中,ID 為 0 的面偏移(Offset)值為0,此時(shí)需要查詢(xún)它的頂點(diǎn)數(shù)量以及頂點(diǎn)組成。根據(jù)下一個(gè)面 ID + 1 的引索值可知該面的頂點(diǎn)查詢(xún)的Index范圍是 0 - 3 , 頂點(diǎn)數(shù)為 4 個(gè)。 并且是由 0, 1, 3, 2 組成的。 這樣如果這個(gè)模型面數(shù)非常大的話(huà),就不需要遍歷一整個(gè)模型了。


面-頂點(diǎn) (Face-Vertices)


在面相鄰的情況下,面經(jīng)常會(huì)共用頂點(diǎn)。有時(shí)我們會(huì)需要將數(shù)據(jù)關(guān)聯(lián)到特定面的特定頂點(diǎn),同時(shí)將該特定頂點(diǎn)與共享它的任何面區(qū)分開(kāi)來(lái)。這些稱(chēng)為 面-頂點(diǎn)(Face-Vertices)。


面-頂點(diǎn)(Face-Vertices) 是一種多邊形的概念性組件,其概念可以使用于 —例如— 每個(gè)頂點(diǎn)的顏色或者UV坐標(biāo)。面-頂點(diǎn)(Face-Vertices) 由現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)表示——面數(shù)組和面索引數(shù)組。每個(gè)面-頂點(diǎn)(Face-Vertices)與特定的面ID和頂點(diǎn)ID相關(guān)聯(lián)。您可以使用面ID在面數(shù)組中找到偏移量,然后通過(guò)使用每個(gè)邊的起始頂點(diǎn)在邊循環(huán)中搜索給定的頂點(diǎn)ID。請(qǐng)注意,每個(gè)面中的每個(gè)頂點(diǎn)ID都是給定面-頂點(diǎn)(Face-Vertices)的唯一索引——面-頂點(diǎn)(Face-Vertices)索引。共享的頂點(diǎn)ID在面數(shù)組中會(huì)多次出現(xiàn),在共享該頂點(diǎn)的每個(gè)面描述中都會(huì)出現(xiàn)一次。


Face


現(xiàn)在假設(shè)我們將其用于UV坐標(biāo)

在上面的插圖中,左圖描繪了一個(gè)由四個(gè)面組成的多邊形平面的拓?fù)浣Y(jié)構(gòu),而右圖展示了該四個(gè)面多邊形平面的面頂點(diǎn)視圖。在面頂點(diǎn)視圖中,每個(gè)面都是分開(kāi)的,保持著自己獨(dú)立的頂點(diǎn)。每個(gè)獨(dú)立的頂點(diǎn)都使用相對(duì)于每個(gè)面的頂點(diǎn)索引進(jìn)行標(biāo)記(即從0到3)。每個(gè)面頂點(diǎn)與一個(gè)UV相關(guān)聯(lián)。然而,這并不保證每個(gè)面頂點(diǎn)都有唯一的UV。默認(rèn)情況下,對(duì)于代表共享頂點(diǎn)的面頂點(diǎn),比如左圖中的頂點(diǎn)4,每個(gè)面頂點(diǎn)與相同的UV相關(guān)聯(lián),因此共享一個(gè)UV。將UV進(jìn)行“分割”會(huì)為每個(gè)共享頂點(diǎn)的面頂點(diǎn)提供一個(gè)唯一的UV ID。


譯者注:這里的圖例和原文檔中的圖例略有不同,為了更好的理解這里的概念,我重新設(shè)計(jì)了這張圖例。Face-Vertex 實(shí)際上應(yīng)該是一種抽象的概念。

可以理解為一種模板概念,在MAYA中UV和頂點(diǎn)著色均使用了這個(gè)概念來(lái)安排數(shù)據(jù)。圖中的 UV ID 并不代表了真實(shí)情況下的 UV ID 排列方式,這里只是便于理解。




UV坐標(biāo) (UVs)


UV坐標(biāo)在很大程度上依賴(lài)于面-頂點(diǎn)(Face-Vertices)的概念。UV坐標(biāo)對(duì)應(yīng)于一個(gè)二維平面,用于將紋理映射到多邊形表面上。紋理映射是逐個(gè)面進(jìn)行的。因此,為了允許每個(gè)面具有自己的一組映射坐標(biāo),UV坐標(biāo)是基于面-頂點(diǎn)(Face-Vertices)的。在Maya中,保存UV坐標(biāo)的結(jié)構(gòu)由兩個(gè)數(shù)組組成:


1. 一個(gè)UV索引數(shù)組,它使用與面數(shù)組完全相同的索引(可以視為 面-頂點(diǎn)(Face-Vertices) 數(shù)組)。

2. 一個(gè)UV數(shù)組,它保存由 UV ID 索引的UV點(diǎn)列表。


第一個(gè)數(shù)組將每個(gè)面頂點(diǎn)與特定的 UV ID 關(guān)聯(lián)起來(lái),如果面頂點(diǎn)所屬的面沒(méi)有進(jìn)行映射,則不進(jìn)行關(guān)聯(lián)。每個(gè) UV ID 對(duì)應(yīng)于 UV 列表中的一個(gè)索引,該索引保存了 UV 在 UV 空間中所處的二維坐標(biāo)(U和V浮點(diǎn)值)。

?

UV


譯者注:這里的圖例和原文檔中的圖例略有不同,為了更好的理解這里的概念,我重新設(shè)計(jì)了這張圖例。正如上方兩個(gè)小節(jié)所說(shuō)的。一個(gè)頂點(diǎn)實(shí)際上由于被多個(gè)面共享,所以實(shí)際上在拆分UV時(shí),是可以拆分為多個(gè)UV點(diǎn)的,圖中就演示了這個(gè)現(xiàn)象 點(diǎn)1 由于被兩個(gè)面共享。所以在將這兩個(gè)面的UV拆分時(shí), 可以拆分為兩個(gè)UV點(diǎn)


UV


如這個(gè)圖所示:UV 點(diǎn) 3 的頂點(diǎn)由 兩個(gè)面共享, 但是,由于這兩個(gè)面沒(méi)有拆分,所以 UV 點(diǎn) 3 也還是由這兩個(gè)面共享。 UV 點(diǎn) 7 和 9 實(shí)際擁有同一個(gè) 頂點(diǎn),但是這里我們將UV經(jīng)行了拆分。 所以分配了 新的 UV ID 給它們。


## Mesh結(jié)構(gòu)總結(jié)

mesh 的基本數(shù)據(jù)上可由以下的代碼獲取




Mesh 數(shù)據(jù)是怎么組成的 ?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
天柱县| 邓州市| 博爱县| 日照市| 宜丰县| 锡林郭勒盟| 彰化县| 阿荣旗| 郓城县| 绥宁县| 彝良县| 交口县| 清新县| 巴里| 桂东县| 浠水县| 静宁县| 京山县| 顺平县| 合江县| 莎车县| 安徽省| 修文县| 故城县| 永兴县| 肥乡县| 汝州市| 西充县| 封开县| 建水县| 贺兰县| 辽源市| 郑州市| 台山市| 晴隆县| 丽江市| 文成县| 谷城县| 绵阳市| 若羌县| 防城港市|