平滑(smooth)
3D平滑處理是一種減少鋸齒(階梯狀線條)的技術。 平滑處理可設定為有利于提高系統性能或改進圖象品質。(功能可以檢視3Dmax
blender等等)
網格平滑屬于數字幾何處理領域的問題,計算機圖形學和計算機輔助設計中,用多邊形網格可以表示複雜的三維實體。随着三維掃描和曲面重建技術的發展,得到這些實體表面的多邊形網格表示已經不是難事,但所得到的表面往往包含含噪聲。在形狀設計領域,在散亂點拟合和光滑形伏、紋理映射等應用領域,都有對平滑曲面的極大需求。故産生了網格平滑這一個研究點。
如下圖:
平滑的算法多數是基于傘狀結構的操作,所謂傘狀結構,是以三角網格中某一個頂點P為中心,取所有與其相鄰的頂點P1…Pn-1和邊組成的一階鄰域結構,當然 為了友善于在O(1)的時間内擷取點P的相鄰點與相鄰面,故需要提供輔助結構來存儲這些鄰接點面的資訊(自定義)。如下圖所示:
常用的平滑算法:拉普拉斯平滑、 基于曲率的平滑 基于曲率的平滑與拉普拉斯平滑的差別在于,基于曲率的平滑是沿着頂點P的法向量所在直線去移動P的,一般的拉普拉斯平滑會講點P移動到類似于重心的位置,而基于曲率的平滑的移動位置是與法向量方向相反的,這樣做的目的是要更好的保持模型原來的大緻形狀。
拉普拉斯平滑(Laplacian Smooth):
最基礎的平滑,其他的平滑都是在拉普拉斯的基礎上改進的。 最為基礎的拉普拉斯平滑算法的實作,簡單的拉普拉斯平滑算法的原理是将每個頂點都移動到相鄰頂點的平均位置,即采用所謂傘狀算子。
1. 初始化Mesh的鄰接點結構集
2. 建立臨時點集,用來存儲點平滑後的位置
3. 對所有Mesh中的頂點P
1. 初始化臨時向量為零向量
2. 擷取P的鄰域點集Adj(P)
3. 對所有領域點T,将其位置加到臨時向量裡
4. 臨時向量/=領域點集數
5. 将臨時向量的位置存入臨時點集
4. 對所有Mesh中的頂點P
1. 将P的位置修改為臨時點集中對應點的位置
stepSmoothNum 整個算法(法線平滑+頂點拟合)的疊代次數。
Boundary 一維邊界平滑 僅自身平滑邊界邊(例如,形成網格邊界的多段線獨立平滑)。這可以減少邊界上的收縮,但會對非常小的邊界産生奇怪的影響。
cotangentWeight 使用餘切權重方案求位置的平均值。否則使用更簡單的傘形方案(如果存在邊,則為1)。
拉普拉斯平滑算法有很多進一步的變形,首先在求取平均位置時,可以采用不同的權重政策,例如對不同的鄰接點采用不同的權值。一般來說,距離中心點P較遠的鄰接點,我們可以讓他對P平滑後的位置影響小一點。這樣就可以采用一種距離的倒數為權值的拉普拉斯平滑。
有時為了控制平滑的速率,也會引入參數lambda來控制平滑的速率,即從原來所執行的:
轉變成
同時,平滑算法往往可以反複對Mesh執行,使得Mesh越來越光順,疊代次數T也是平滑算法中重要的參數。
缺點:
拉普拉斯平滑雖然能夠讓Mesh的表面光順,但疊代次數一旦多了(使用使用的疊代次數一般不超過10),就會使得模型整體發生收縮現象。
基于曲率的平滑:
基于曲率的平滑與拉普拉斯平滑的差別在于,基于曲率的平滑是沿着頂點P的法向量所在直線去移動P的,從下圖可以看出,一般的拉普拉斯平滑會講點P移動到類似于重心的位置,而基于曲率的平滑的移動位置是與法向量方向相反的,這樣做的目的是要更好的保持模型原來的大緻形狀。
通過适當的選擇拉普拉斯平滑中的權值ω,我們可以讓基于曲率的平滑與拉普拉斯平滑達到算法上的統一。經過推導可知ω選擇如下值的時候,即等價于将P如上圖2中進行移動。
其中α和β的是P與其第i個鄰接點Pi所構成邊所對的兩個角,(這裡假設網格為流形,即每條邊都隻有至多兩個三角形共有),下圖顯示了這兩個角的位置:
這樣點P的位置仍然由如下公式來決定,隻是修改了權值計算方式:
單地說頂點法線就是把共享該頂點的幾個面的法線想加,然後除以面的數量,得到的平均值法線,這就是頂點法線。
頂點光照強度在整個面上是均勻過度的.而如果直接使用面法線計算光照,整個面都是用的同一個法線,是以整個面的光照強度是一樣的;
面法線: 垂直一個平面的直線叫面法線;頂點法線: 每一個頂點都有法向量,就能知道光線到達物體表面的入射角;
頂點法線與面法線
面法線與頂點法線差別
優點:
包括3Dmax等等都是那本用的這個 比較實用好用!
Taubin平滑算法(Taubin Smooth):
關于lambda mu值的幾個注意事項lambda是λ ,mu是μ
Taubin平滑的原理基于了一部分數字信号處理方面的知識,用簡單的話來表述, 就是使用一個負收縮因子μ将拉普拉斯平滑照成的收縮再放大回去( 防止過分的出現變形失真), 其算法的主體采用了2個與拉普拉斯平滑算法相似的過程,一個過程采用正因子λ(0~1), 另一個過程采用負因子μ(-1~0),每一次疊代都必須重複這兩個過程
我們假設0<λ,并且μ是一個負比例因子,使得μ<-λ。
保持μ+λ<0(例如絕對值mu更大)
讓kpb為通帶頻率,taubin說:
kpb=1/λ+1/μ>0
kpb值在0.01~0.1之間,與原文獻相比,結果良好。
kpb*μ-μ/λ=1
μ=1/(kpb-1/λ)
是以如果
*λ==0.5,kpb==0.1->mu=1/(0.1-2)=-0.526
*λ==0.5,kpb==0.01->mu=1/(0.01-2)=-0.502
即有:
HC拉普拉斯平滑(HC Laplacian Smooth):
HCLaplacian平滑是一種對拉普拉斯平滑的改進方法,其針對的問題也是拉普拉斯算法産生的模型整體收縮問題,與Taubin算法不同,其不再是從信号處理的角度去看待拉普拉斯算法所引入的系統誤差,HCLaplacian算法試圖将拉普拉斯算法對頂點的移動以某種程度再移動回去,移動的具體原則需要參考頂點原先的位置
一種拉普拉斯平滑的改進;
缺點:
與拉普拉斯挺接近會破壞模型拓撲結構不實用!
ScaleDependent Laplacian Smooth:
兩個差不多都是基于拉普拉斯不過都可以不要!
缺點:
在大模型下不太友好;
兩步平滑(TwoStep Smooth):
分兩步相對于平滑面的法線/基于曲率的平滑,先平滑法線,然後再移動頂點,當然這個過程不會增加或者删除face與vertex,将相似的法線平均在一起。頂點重定位,将頂點移動到适合新法線的位置。
缺點:
可能會破壞模型的拓撲結構,不實用!
深度平滑(Depth Smooth):
是一種拉普拉斯平滑,與兩步平滑有點相似都是先改變法線然後是頂點的位置,它被限制為隻在一個給定方向(通常是觀察者方向)移動頂點,整個算法(法線平滑+頂點拟合)的疊代次數,
優點:
比兩步平滑實用!
平滑處理大牛布朗大學Gabriel Taubin教授簡介:
Taubin教授目前就職于布朗大學計算機工程系。他在阿根廷布宜諾斯艾利斯大學獲得了數學學士學位,并在布朗大學獲得了計算機工程博士學位。1990年他加入IBM研究院,擔任主任研究員。2003年,他加入布朗大學成為教授。由于他在三維幾何資料壓縮技術和多媒體标準方面的貢獻,被IEEE選為院士。他也曾經在加州理工大學、麻省理工學院等大學擔任客座教授。
從2010年到2013年,Taubin教授擔任《IEEE計算機圖形與應用雜志》的主編,同時擔任《IEEE可視化與計算機圖形學報》的副主編以及《幾何模型》雜志的編委會成員。
Taubin教授的研究方向包括:應用計算幾何、計算機圖形學、幾何模組化、三維影像學、計算機視覺等
1995年tubin平滑算法