下面介紹一種基於Poisson方程的三角網格補洞方法。該算法首先需要根據孔洞邊界生成一個初始化補洞網格,然后通過法向估算和Poisson方程來修正補洞網格中三角面片的幾何形狀,使其能夠適應並與周圍的原始網格融合。算法的主要步驟如下:
1-檢測孔洞邊界並初始化補洞網格
2-調整補洞網格
2.1-計算補洞網格中頂點的期望法向
2.2-基於期望法向旋轉補洞網格中的三角面片
2.3-基於Poisson方程調整補洞網格頂點位置
下面分別介紹算法中每一步的具體過程:
1:檢測孔洞邊界並初始化補洞網格
檢測孔洞邊界和初始化補洞網格方法與以前介紹的方法相同。由於初始化補洞網格無法與原始孔洞周圍的網格有效融合,因此需要調整補洞網格的頂點位置使得補洞網格與原始網格之間光滑過渡。


2.1:計算補洞網格中頂點的期望法向
由於已知原始網格孔洞邊界的法向,將其作為補洞網格邊界的法向,構建Laplace方程
求解補洞網格內部頂點的法向分布。
- Laplace算子:
假設f表示在每個頂點上的標量,那么網格域上在頂點xi處的Laplace算子定義如下(不考慮面積影響):

其中N1(xi)表示頂點xi的1環鄰域點,αij和βij為邊eij對應的2個對角。
2.2:基於期望法向旋轉補洞網格中的三角面片
計算得到補洞網格中頂點的期望法向之后,可以進一步求得三角面片的期望法向,三角面片的期望法向是其三個頂點期望法向的平均值,然后補洞網格中所有的三角面片根據期望法向進行旋轉。旋轉參數計算方法如下:假設ni、ni’和ci為三角面片fi的原始法向、期望法向和重心位置,ni與ni’的叉乘方向a為三角面片fi的旋轉軸方向,ni與ni’之間的夾角φ為三角面片fi的旋轉角度,那么三角面片fi將以ci為旋轉中心,繞旋轉軸a旋轉角度φ到新的位置。




2.3:基於Poisson方程調整補洞網格頂點位置
旋轉補洞網格的三角面片會撕裂補洞網格,因此我們利用Poisson方程將其重構成連續的網格曲面。在建立Poisson方程時我們需要先計算撕裂網格的梯度場,將其作為Poisson方程的引導場,從而進行網格頂點位置的調整。
其中f為待求的調整后網格頂點位置,w為撕裂網格的梯度場。
- 梯度算子:
假設f表示在每個頂點上的標量,那么網格域上標量場f在任意三角面片T內的梯度算子定義如下:
其中基函數梯度▽Φi的表達式是
,⊥表示將向量逆時針旋轉90度,AT表示三角片T的面積。
- 散度算子:
假設w表示在每個三角片上的向量,那么網格域上向量場w在頂點xi處的散度算子定義如下:
其中T1(xi)表示頂點xi的1環鄰域三角片,AT表示三角片T的面積。



效果:



本文為原創,轉載請注明出處:http://www.cnblogs.com/shushen
相關:
三維網格形變算法(Gradient-Based Deformation):http://www.cnblogs.com/shushen/p/4932089.html
三維網格補洞算法(Radial Basis Function):http://www.cnblogs.com/shushen/p/5759679.html
參考文獻:
[1] Wei Zhao, Shuming Gao, and Hongwei Lin. 2007. A robust hole-filling algorithm for triangular mesh. Vis. Comput. 23, 12 (November 2007), 987-997.
