摘 要:推導了一般三角形網格模型頂點的平均曲率、高斯曲率和主曲率的計算方法,考慮到經常遇到粗糙三角形網格模型,為提高其曲率計算方法的精度,結合Loop細分曲面算法,進一步拓展了該曲率計算方法。該算法用于具有特征保持的網格模型簡化取得了良好的效果。
關鍵詞:平均曲率; 高斯曲率; 主曲率; 網格簡化; 虛擬現實
中圖分類號:TP391文獻標志碼:A
文章編號:1001-3695(2007)06-0107-02
在計算機圖形學、圖像分析處理和幾何建模等研究領域中,如自由曲面、反求工程、圖像識別、三維醫療圖像重構,以及人臉識別等,經常需要計算主曲率、平均曲率和高斯曲率等值,用于折痕、棱邊、隆起、溝壑等關鍵特征的提取、噪聲的過濾和曲面的修補等,因此曲率計算受到了廣泛關注。對于曲面,目前已經有多種數字計算方法,這些方法基本上是基于參數化曲面[1],以隱函數[2,3]或者四邊形網格函數[4,5]計算得到,這些方法都十分復雜,運算量很大。由于三角形網格計算簡單,并且可以通過硬件加速,三角形網格模型在計算機圖形學和幾何建模中十分常用,有必要建立一種能快速方便計算主曲率、平均曲率和高斯曲率的方法。圖1中的部分關鍵特
征,就是通過曲率計算識別出來的。
1 網格描述及算法基本思想
1.1 網格描述
直觀上,三角形網格模型是由三維空間中的三角形通過邊和頂點相互連接而成的分段線性曲面。其中每條邊最多包含在兩個三角形中。嚴格意義上,網格是一個二元組M=(K,V)。其中V={v1,v2,…,vm},vi∈R3表示網格M中的頂點在空間中的位置,K是一個單純復形,包含頂點集{1,2,…,m}及其非空子集,一個單純復形包含了一組單純形,特別地,把{i}∈K,{i, j}∈K,{i, j,k}∈K分別稱作點、邊和面[6]。
1.2 曲線曲率的含義
要知道一條曲線在這一點的彎曲程度,只要知道多條曲線在這一點的曲率大小即可,分析如下[7]:曲線r(s)上任意一點,有一個單位法向量N(s),將N(s)的起點平移到平面的原點,N(s)的終點就落到了單位圓周S1(圖2),這樣就定義了一個映射(Gauss映射):
所以,當s變化時,r(s)的速度是|(s)|=1,而N(s)在S1上轉動的速度是|k(s)|。從圖2可以看出,在A-B區間,N(s)的轉動速度較快,|k(s)|較大,因此比較彎曲;而在C-D區間,N(s)的轉動速度較慢,|k(s)|較小,因此比較平坦。從上面的分析可見曲線曲率反映了曲線的彎曲程度。
2 算法的具體描述
如圖3所示,與v相連的邊為vvi(i=1,2,3,…,n),過法矢量Nv和邊vvi構造一個平面P,設平面P與原光滑曲面相交所得的曲線為r(s)。一般地,曲線r(s)上任意一點,有單位切向量T(s)和單位法向量N(s),則曲線r(s)上任意一點都有沿曲線r(s)的Frenet標架{r(s);T(s);N(s)},則點v=r(sv)處的Frenet標架為{r(sv);T(sv);N(sv)}。由于網格模型不是連續曲面,無法直接求得曲線r(s)在頂點v處的曲率,必須建立其近似求解方法。
3 應用舉例
網格模型是對曲面的逼近,對于較平坦的區域,部分三角形可以刪除,以減少三角形總數;但對于棱邊、棱角和邊界等能充分反映模型特征信息和尺寸的區域,曲面起伏較大,則希望保留更多細節,也就是三角形應該密集分布的地方。該區域的三角形應推遲刪除或不刪除。也就是說,可以根據曲面各個區域的起伏情況來刪減三角形。
利用前面得到的曲率公式,根據曲率的大小,很容易判斷出網格模型的關鍵特征。現代三維掃描設備得到的三維模型往往由幾萬個,甚至上百萬個三角片組成,而計算機性能有限,因此龐大的數據給后續的顯示、存儲和處理等帶來了很大的困難,對于實時顯示要求較高的場合,如虛擬現實和增強現實,過多的面片會導致渲染速度過慢,嚴重影響了沉浸效果,有必要在滿足精度的情況下,盡量減少面片的數量。由于關鍵特征對于保持模型的外觀形狀,保證良好的視覺效果顯得十分重要,利用曲率能很好反映關鍵特征這一特點,建立基于曲率的邊折疊[6]代價函數,由代價函數來指導邊折疊順序,推遲與關鍵特征相關的邊的折疊,也就推遲了與關鍵特征相關的三角片的刪減,起到了既能減少三角片總數,又能保持關鍵特征的效果。基于曲率的網格模型簡化算法與本文的主題無關,在此不作具體介紹。圖7就是基于曲率的網格模型的簡化效果。可以看出,在對網格模型大幅度簡化后,所有關鍵特征均較好地保持下來,如三條凹槽沒有粘連,軸孔依然是圓形,邊緣凸出。
4 結束語
本文給出了三角形網格模型的曲率計算公式,為了提高粗糙網格模型曲率的計算精度,結合網格模型的細分算法,進一步給出了粗糙網格模型的曲率計算公式。其計算方便、運算速度快。作為例子,簡要介紹了曲率在具有特征保持特性的網格模型簡化上的應用。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。