Mesh網格簡化


Mesh簡化算法:

1. 通過mesh簡化,可以將一個多邊形的網格A轉化成另一個網格B

網格B相比A,有更少的三角形面、邊、頂點。

2. 簡化的過程是受到一定的約束的。會有一系列自定義的質量標准來控制簡化的進行。這些質量標准是為了讓簡化后的網格盡可能和原來的網格有相差不大的質量。

 

3. Mesh簡化往往都是迭代的,例如每一次移除一個頂點或者一條邊。並且這一過程是可以反轉的,也就是可以通過優化后的網格,恢復到原網格

 

主要的簡化算法:

1. 頂點聚集(Vertex Clustering)。

按照我自己的理解大致概述下,就是將距離 (記作ε )一定范圍內的頂點合並成一個代表頂點。

這種處理方式速度快,時間復雜度是O(n),n是頂點數量。(暫留疑問為什么是O(n))

當然缺陷也很明顯,可能會出現一個三角形退化成一條線段甚至一個頂點的情況。

a) 聚集生成(Cluster Generation)

用一個大的方框囊括mesh,然后將這個大方框分割成一個個小空間(cells),確定一個數值 ε > 0,作為小空間的邊長。然后將mesh映射到這個方框里

(上圖白點黑線是原mesh,綠點是簡化后的mesh頂點)

b) 選擇代表頂點(Representative Vertex)

就是將一個小空間里的所有頂點合並,選一個代表頂點來表示(這個代表頂點不一定是原mesh中存在的頂點)

第一種選擇方法:平均值

應該是將小空間內頂點坐標取平均,最后選取一個代表點vp

第二種方法:中值

應該就是取最靠近中間的頂點吧

第三種方法:Quadrics Error Metrics(QEM) 二次誤差測算

具體QEM的處理方式在另一篇文章中記錄,其中我也有很多疑惑的地方,但還是簡單的梳理了一遍

“QEM是一種誤差度量,表示一個頂點到理想點的距離”,

按照我的理解就是,在一個小的空格(前面提到的cell)里,有多個頂點存在(共n個,v1~vn),最終我們需要選擇一個代表點vp ,

對於每個頂點,都計算一次用vp代替vi的二次誤差;最后再將這n個二次誤差加和Esum。而我們的任務就是找到一個合適的點Vp,使得Esum最小。

 上述三種方法的效果如下:

c)網格生成(Mesh Generation)

經過上面步驟的處理,每個小空間(cell)中都會最多有一個代表點vp

假設有兩個cell,記作Cella和Cellb,其代表點為vpa,vpb

Cella中的頂點集合為{p1,p2, ..., pn},Cellb中的頂點集合是{q1,q2, ..., qm},如果存在連線<pi, qj>,就將vpa,vpb連接

d)拓撲結構改變(Topology Changes)

(這張圖就可以看出上面提到的缺陷)

 

2. 增量式減少(Incremental Decimation)

a) 思路如下:

  • Repeat:
  •     pick mesh region
  •     apply decimation operator
  • Until no further reduction possible

針對一個網格區域,找到所有簡化的方法(每種簡化方法后都會生成一個新的網格區域)

然后(有錯誤評估值的控制,偏差超出范圍的簡化方案不做考慮):

  • For each region
  •     evaluate quality after decimation
  •     enqueue(quality, region)
  • Repeat:
  •     get best mesh region from queue
  •     if error < ε
  •         apply decimation operator
  •         update queue
  • Until no further reduction possible

對每個簡化后的網格區域進行偏差評估,然后放入一個隊列;

取出最優項(未完成)

b) 簡化處理方法(Decimation Operators)

包括頂點移除(Vertex Removal)、邊去除(Edge Collapse)、Half-Edge Collapse(不知道怎么翻譯了)

這幾種處理方法看圖解很清晰,不加贅述

 

 

 

c) 誤差度量(Error Metrics)

分為局部誤差度量和全局誤差度量

局部誤差度量,按我理解的是,對 簡化處理導致平面減少 這一情況進行度量

全局誤差度量,計算簡化處理后的網格區域誤差值(未完成)

d) Fairness Criteria (按照我的理解,指的是簡化過程中需要注意的約束標准,一下幾點具體解釋都是我自己的推測)

合理的誤差——簡化處理導致的誤差不能過大(似乎有點像廢話)

三角面的形狀——三角面的形狀變化不能過大

 

3. 兩種方法的比較

Vertex Clustering

a) 頂點聚集時間復雜度O(n),處理速度快;但是簡化過程難以控制(暫留疑問)

b) 拓撲結構(可能)會改變,(可能)會出現非流行網格

Increment Decimation

a) 在網格質量和簡化速度之間有很好的平衡(暫留疑問)

b) 對網格的拓撲結構有明確的控制

c) 限制法向量偏差提升了網格質量

 

4. 參考

http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/08_Simplification.pdf

https://pages.mtu.edu/~shene/COURSES/cs3621/SLIDES/Simplification.pdf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM