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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【图形学实验】Loop Subdivision与Modified Butterfly Subdivision

發布時間:2023/12/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【图形学实验】Loop Subdivision与Modified Butterfly Subdivision 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記一下圖形學實驗的坑

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 classi?ed 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

crease邊采取(2)(3)的權重分配方式,最終生成的新頂點必定也會在這條邊上,因此就能保持crease邊的“銳利”。而smooth?edge就會受到周圍另外兩個頂點的影響,所以會使新生成的點“弓起來”。

(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的權重。

?

總結

以上是生活随笔為你收集整理的【图形学实验】Loop Subdivision与Modified Butterfly Subdivision的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。