Loop Subdivision與Modified Butterfly Subdivision

winka9587發表於2020-11-18

crease是什麼

當說一條邊是crease edge的時候,我們的意思其實是說這條邊是sharp edge.

為的是在Subdivision的時候能夠保留一些銳利的部分,例如

正常的Loop Subdivision

下圖中的色邊即為標記的sharp edge,標記出來的目的是為了在之後的Subdivision過程中還能保持銳利。 

新增了對crease處理的Loop Subdivision

Loop Subdivision

參考:Piecewise Smooth Surface Reconstruction

Loop Subdivision包含3個階段:為每條邊計算一個新的頂點;更新原有舊頂點的位置;更新網格的拓補結構。

預處理

進行下面的操作之前,需要識別出每一個頂點的型別。

 A smooth vertex is one where the number of incident sharp edges s is zero; a dart vertex has s = 1; a crease vertex has s = 2; and a corner vertex has s > 2. Crease vertices are further classified as regular and non-regular depending on the arrangement of smooth edges.An interior crease vertex is regular if it has valence 6 with exactly two smooth edges on each side of the crease; a boundary crease vertex is regular if it has valence 4. All other crease vertices, whether interior or boundary, are non-regular. 

將每個點按照crease邊的入度s分別劃分為normal vertex(s=0)dart vertex(s=1)crease vertex(s=2)corner vertex(s>=3),其中crease vertex根據邊的數量以及排列分為regular crease vertexnon-regular crease vertex.

regular crease vertex有兩種情況

(a)如果頂點不在邊界上(在mesh內部),要求頂點共與6條邊相連,且兩條crease一邊有2條smooth邊(即普通邊)。如下圖:

(b)如果頂點在邊界上,那麼只要周圍相連邊的數量為4即是regular

crease vertex中不是regular的就是non-regular

(1)為每條邊計算一個新的頂點

 根據邊上兩個端點的型別,查表Table.1,得到的序號去上圖找對應的權重分配策略。

注意:只有crease邊才需要查表,普通邊直接按照下圖的smooth edge來計算,邊界邊兩個頂點權重1/2

(2)更新原有舊頂點的位置

根據頂點的型別來更新其位置。

圖中數值為權重

(3)更新網格的拓補結構

Modified Butterfly Subdivision

可以參考 : https://www.cnblogs.com/yezhangxiang/archive/2011/04/10/2011284.html

一條邊的兩個頂點v1和v2,尋找v1和v2各自周圍點,根據其連線邊的數量不同,採取不同的權重分配策略(共四種)

(a)沒什麼好說的

(b)當v1和v2其中一個連線邊的數量為6,另一個不為6時。不為6的那個點稱為k-vertex(上圖中是v1),該點的權重為3/4,剩下1/4的權重按該點周圍點的數量分配給周圍點(v2也是v1的周圍點s0)。

 注意特殊情況:如果處理的模型是非閉合的,即處理的模型有開口。那麼當尋找v1周圍的頂點並儲存時,應該注意儲存頂點的順序問題(k=4,>=5的情況)

當前處理的邊是(v1,v2),假設一向上找周圍頂點,找到邊(v1,3)遇到邊界邊停止,想要找剩下的頂點就需要從(v1,v2)向下尋找,找到點的順序是5,4.在最終儲存時需要將向下尋找時找到的點倒序存到123後面才能保證順序正確。

 

(c)分別對v1和v2各執行一次b,計算出的兩個新頂點取平均值

(d)處理邊界邊和crease邊

先說邊界邊的情況,下圖中紅色的為boundary edge,假設當前處理的邊為AB,那麼就需要找到AC和BD,頂點C和D的權重為-1/16,A和B的權重為9/16

如果處理的是crease邊,那麼左右兩邊的數量不一定為1,可能有多條

也可能一條也沒有。

如果一條也沒有,直接令這一側的頂點權重為1/2.如果有多條crease邊,則讓它們平分這-1/16的權重。

效果

 

 

相關文章