在逆向工程中,由于设备或模型的原因,我们获取得到的三维模型数据往往并不完整,从而使得生成的网格模型存在孔洞,这对后续的模型分析会造成影响。下面介绍一种基于径向基函数(RBF:Radial Basis Function)的三角网格补洞方法。
Step 1:检测孔洞边界
三角网格是由一系列顶点(V)以及由这些顶点所构成的三角面片(F)所组成,由三角面片可以得到网格的边(E)。通常一条边连接两个三角面片,这种边称为网格内部边,而如果某条边仅连接一个三角面片,那么称这条边为网格边界边,所有的边界边按顺序连接之后就形成了网格的孔洞。
Step 2:初始化网格
为了使孔洞填充简单、健壮,可以采用最小角度法进行网格修补,具体步骤如下:
(1)得到孔洞边界点信息,计算边界边长度的平均值l。
(2)计算每个边界点的两条相邻边的夹角大小。
(3)找出具有最小夹角的边界点,计算它的两个相邻边界点的距离s,判断s < 2×l是否成立:若成立,则按下图所示增加一个三角形,若不成立则增加两个三角形。
(4)更新边界点信息。
(5)判断孔洞是否修补完整,若未完整,转(2),否则结束。
Step 3:最小二乘网格
初始化补洞得到的网格质量不是很好,我们需要优化网格顶点的位置,优化的条件是:
其中di为顶点vi的1环邻域顶点数。