計算機圖形學:Mesh

第七章:Mesh

0 基本描述

  • 網格有一系列的三角面片組成
  • 三角面片包含三個點的索引
  • 點索引可以在點表中找到相應的點

1 Tessellation

1.1 基礎網格化方法(低效)

  • 檢測多邊形的任意兩頂點連線是否與任意邊相交
  • 如果相交則無法切割,否則可以切割,繼續用該方法進行三角化.

1.2 Ear clipping

  • 取相鄰三個頂點i,i+1,i+2,檢查線段[i, i+2]是否與邊相交
  • 如果沒有相交則將該耳朵從多邊形中去除,繼續三角化

Subdivision(細分)

2.1 Loop Subdivision

  • 每個邊都會添加一個新節點,連接後一個三角形轉變爲四個三角形,同時更新每個原始頂點的位置
    在這裏插入圖片描述

在這裏插入圖片描述

2.1.1頂點更新

如圖(a)所示,新的頂點根據相鄰點及自己的權重得到,n爲相鄰點數

pk+1=(1nβ)pk+i=0n1βpik β=58(38+14cos2πn)2n p_{}^{k+1} = (1 - n\beta)p_{}^{k} + \sum_{i=0}^{n-1}\beta p_{i}^{k}\\ \ \\ \beta = \frac{\frac{5}{8} - (\frac{3}{8} + \frac{1}{4}cos\frac{2\pi}{n})^2}{n}\\

2.1.2新節點

pk,pikp_{}^{k},p_{i}^{k}是兩個端點,pi1k,pi+1kp_{i - 1}^{k},p_{i + 1}^{k}是兩個相對頂點,如圖(b)所示

pik+1=38(pk+pik)+18(pi1k+pi+1k) p_{i}^{k+1} = \frac{3}{8}(p_{}^{k} + p_{i}^{k}) + \frac{1}{8}(p_{i - 1}^{k} + p_{i + 1}^{k})

2.2 Catmull-Clark subdivision

image

  • 設四邊形的四個頂點爲v0、v1、v2、v3,則新增加的頂點位置爲v = 1/4*(v0 + v1 + v2 + v3)
  • 設內部邊的兩個端點爲v0、v1,與該邊相鄰的兩個四邊形頂點分別爲v0、v1、v2、v3和v0、v1、v4、v5,則新增加的頂點位置爲v = 3/8*(v0 + v1) + 1/16*(v2 + v3 + v4 + v5)。
  • 設內部頂點v0的相鄰點爲v1、v2,…,v2n,則該頂點更新後位置爲v=αv0+βni=1nv2i+γni=1nv2i1v = \alpha v_0 + \frac{\beta}{n}\sum_{i=1}^{n}v_{2i} + \frac{\gamma}{n}\sum_{i=1}^{n}v_{2i-1},其中α、β、γ分別爲α = 1 - β - γ。
  • 設邊界邊的兩個端點爲v0、v1,則新增加的頂點位置爲v = 1/2*(v0 + v1)。
  • 設邊界頂點v0的兩個相鄰點爲v1、v2,則該頂點更新後位置爲v = 3/4v0 + 1/8(v1 + v2)。

2.3 3\bm{\sqrt{3}}Subdivision

  • Different from Loop’s scheme Kobbelt, Kobbelt’s 3\bm{\sqrt{3}} scheme 3 scheme creates only 3 new triangles per-step
  • It creates a new vertex (called mid-vertex) in the middle of each triangle, instead of a new vertex per edge.

image

爲了得到更均勻分佈的三角形,每個原始三角形的邊都被翻轉,使之連接兩個相鄰中間頂點而不是連接兩個已經存在的舊頂點

2.3.1頂點更新

第一個式子爲中間點的計算,第二個式子是三角形頂點的位置更新,第三個式子是β\beta的計算

pmiddlek+1=pak+pbk+pck3 pk+1=(1nβ)pk+βi=0n1pik β(n)=42cos(2πn)9n p_{middle}^{k+1} = \frac{p_{a}^{k} + p_{b}^{k} + p_{c}^{k}}{3}\\ \ \\ p_{}^{k+1} = (1 - n\beta)p_{}^{k} + \beta \sum_{i=0}^{n-1} p_{i}^{k}\\ \ \\ \beta(n) = \frac{4 - 2cos(\frac{2\pi}{n})}{9n}\\

3 Simplification(簡化)

Approximating a given input mesh with a less complex but geometrically faithful representation

  • remove reddundant(多餘的) geometry
  • reduce model size
  • improve run-time performance

3.1 levels of detail (LOD)

在這裏插入圖片描述

  • Topology (拓撲結構):多邊形網格的連接結構
  • Genus(虧格):網格表面孔洞的數目。如球或立方體爲0,圓環爲1

3.2 簡化的基本算法

3.2.1 Vertex Decimation頂點刪除

image

3.2.2 Edge Contraction邊坍塌(邊變成點)

image

3.2.3 面收縮(面變成點)

image

3.3 簡化算法

3.3.1 Schroeder的局部判別準則

對於網格內部頂點v,記其周圍相鄰面片集爲S,則該點的平坦性準則由下述的距離來描述:

d=N(vC) N=fSn(f)A(f)fS C=fSc(f)A(f)fS d = |N\cdot(v - C)|\\ \ \\ N = \frac{\sum_{f\in S}^{} n(f) A(f)}{\sum_{f\in S}^{}}\\ \ \\ C = \frac{\sum_{f\in S}^{} c(f) A(f)}{\sum_{f\in S}^{}}\\
這裏A(f),c(f),n(f)分別爲三角面片的面積、中心和法向量

3.3.2 Hoppe-漸進的網格簡化技術

3.3.3 基於二次誤差度量的簡化技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章