日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【笔记】Polygon mesh processing读书笔记(2)

發(fā)布時(shí)間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【笔记】Polygon mesh processing读书笔记(2) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多邊形網(wǎng)格處理系列第二篇

文章目錄

    • @[toc]
  • 2. 網(wǎng)格數(shù)據(jù)結(jié)構(gòu)
    • 基于面的數(shù)據(jù)結(jié)構(gòu)
      • 基本情況
      • 優(yōu)缺點(diǎn)
      • 改進(jìn)的face-based數(shù)據(jù)結(jié)構(gòu)
    • 基于邊的數(shù)據(jù)結(jié)構(gòu)
    • 基于半邊的數(shù)據(jù)結(jié)構(gòu)
      • 基于有向邊的數(shù)據(jù)結(jié)構(gòu)
      • 小結(jié)

2. 網(wǎng)格數(shù)據(jù)結(jié)構(gòu)

  • 判斷一種數(shù)據(jù)結(jié)構(gòu)的好壞標(biāo)準(zhǔn)包括(但不限于):
    • 構(gòu)建它的時(shí)間
    • 響應(yīng)特定查找的時(shí)間
    • 執(zhí)行特定操作的時(shí)間
    • 存儲(chǔ)消耗與冗余

基于面的數(shù)據(jù)結(jié)構(gòu)

基本情況

  • 每個(gè)面包含3個(gè)頂點(diǎn)位置,不能表示網(wǎng)格連接關(guān)系
  • 也被稱為triangle soup或者polygon soup
  • 一些數(shù)據(jù)轉(zhuǎn)換格式,如stereolighography(STL)使用這種這種表示方式
  • 假設(shè)使用32 bit的單精度數(shù)表示頂點(diǎn)坐標(biāo),則每個(gè)三角形需要3×3×4 bytes。再根據(jù)歐拉定理,面的個(gè)數(shù)大約是頂點(diǎn)的兩倍,因此總共可能需要72 bytes/vertex

優(yōu)缺點(diǎn)

  • 不能顯式表示連接關(guān)系

    • 一些常見(jiàn)的操作不方便:
      • 訪問(wèn)獨(dú)立的頂點(diǎn)、邊和面,使用非特定的順序
      • 有向遍歷一個(gè)面的所有邊,找到下一條/上一條邊
      • 訪問(wèn)邊的相鄰面,根據(jù)朝向有左邊的面或右邊的面
      • 給定一條邊,訪問(wèn)它的兩個(gè)端點(diǎn)
      • 給定一個(gè)頂點(diǎn),至少一個(gè)相鄰面或者邊是可訪問(wèn)的(one-ring neighborhood,1-鄰域)
  • 頂點(diǎn)和對(duì)應(yīng)的數(shù)據(jù)會(huì)重復(fù)多次

    • 通過(guò)建立關(guān)于面的索引,可以大幅減少冗余數(shù)據(jù),indexed face setshared-vertex。

indexed face se被廣泛用于OFF,OBJ,VRML;也被用于OpenGL vertex array

改進(jìn)的face-based數(shù)據(jù)結(jié)構(gòu)

  • 頂點(diǎn)存儲(chǔ)坐標(biāo)之外,還存儲(chǔ)一個(gè)相鄰面(incident face)
  • 面存儲(chǔ)對(duì)應(yīng)頂點(diǎn)之外,還存儲(chǔ)它的相鄰三角形(neighboring triangles)

通過(guò)增加連通信息,可以訪問(wèn)到頂點(diǎn)的one-ring neighborhood,并執(zhí)行上述操作

  • 這種改進(jìn)的數(shù)據(jù)結(jié)構(gòu)被用于CGAL,大約是24 bytes/face × 2 + 16 bytes/vertex = 64 bytes/vertex
  • 這種數(shù)據(jù)結(jié)構(gòu)也有缺陷,不能顯式存儲(chǔ)邊;列舉一個(gè)中心頂點(diǎn)的one-ring需要區(qū)分不同情況

基于邊的數(shù)據(jù)結(jié)構(gòu)

泛用多邊形網(wǎng)格大多是基于邊的,蓋因連接關(guān)系主要與邊有關(guān)。最有名的edge-based data structure有winged-edge和quad-edge

  • Winged-edge,每個(gè)邊存儲(chǔ)它的兩個(gè)端點(diǎn),它的兩個(gè)鄰接面,它在左邊的面和右邊的面的下一條和上一條邊;每個(gè)頂點(diǎn)存儲(chǔ)它的相鄰邊(之一);每個(gè)面存儲(chǔ)它的相鄰邊(之一)。總開銷16 bytes/vertex + 32 bytes/edge +4 bytes/face = 120 bytes/vertex
  • 基于邊的表示可以表征任意多邊形,但是one-ring遍歷依然需要判斷不同情形。最終,被半邊結(jié)構(gòu)解決掉這個(gè)問(wèn)題

基于半邊的數(shù)據(jù)結(jié)構(gòu)

  • 半邊數(shù)據(jù)結(jié)構(gòu)的最大特點(diǎn)就是把原本不帶方向的邊分離成兩個(gè)不同方向的半邊,這種數(shù)據(jù)結(jié)構(gòu)可以表征任意有向的(orientable)2-manifolds(沒(méi)有復(fù)雜邊和頂點(diǎn))多邊形網(wǎng)格
  • 半邊數(shù)據(jù)結(jié)構(gòu)中,半邊之中按照逆時(shí)針(counterclockwise)順序環(huán)繞每個(gè)面和邊緣(boundary)。每個(gè)boundary可以看成是一個(gè)空的面。據(jù)此,每條半邊有唯一的角點(diǎn)(corner),這個(gè)角點(diǎn)可以存儲(chǔ)紋理坐標(biāo)、法向等
  • 每個(gè)半邊存儲(chǔ):
    • 它指向的頂點(diǎn)
    • 它的鄰接面(逆時(shí)針?lè)较?#xff09;
    • 這個(gè)面的下一條半邊(逆時(shí)針?lè)较?#xff09;
    • 這個(gè)面的上一條半邊
    • 以及它的反向邊

若半邊總是成對(duì)出現(xiàn),可以不存儲(chǔ);

上一條半邊也可以省略,蓋因用遍歷可以找到

  • 相應(yīng)的,每個(gè)面存儲(chǔ)它的鄰接半邊;每個(gè)頂點(diǎn)存儲(chǔ)它的出邊
  • 總存儲(chǔ)量大約是16 bytes/vertex + 20 bytes/halfedge × 6 + 4 bytes/face × 2 = 144 bytes/vertex
  • 半邊數(shù)據(jù)結(jié)構(gòu)方便遍歷每種元素(頂點(diǎn)、邊、半邊、面)的相鄰元素,尤其方便one-ring enumeration

基于有向邊的數(shù)據(jù)結(jié)構(gòu)

Directed-edge data structure是一種節(jié)約存儲(chǔ)的半邊數(shù)據(jù)結(jié)構(gòu)的變種,專為三角形網(wǎng)格設(shè)計(jì)

因?yàn)槊?條半邊組成一個(gè)三角形,所以一條半邊的鄰接面和它在這個(gè)鄰接面中的序號(hào)都是可以固定計(jì)算的:
f a c e ( h ) = h / 3 f a c e i n d e x ( h ) = h m o d 3 face(h) = h/3\\ face_index(h) = h \mod 3 face(h)=h/3facei?ndex(h)=hmod3
但是處理邊緣的時(shí)候比較棘手,需要使用特殊標(biāo)記,如負(fù)數(shù)來(lái)表示反向半邊是不存在的

類似的,也可以設(shè)置專為四邊形網(wǎng)格的有向邊數(shù)據(jù)結(jié)構(gòu)。但是這兩者是不能合并的。因此,除了存儲(chǔ)優(yōu)勢(shì)外,經(jīng)典半邊適用性更廣

小結(jié)

建議使用已有的數(shù)據(jù)結(jié)構(gòu),如CGAL,OpenMesh,MeshLab等

總結(jié)

以上是生活随笔為你收集整理的【笔记】Polygon mesh processing读书笔记(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。