在逆向工程里面由于原始点云存在点云死角或者重建算法等问题导致重建结束后会存在孔洞的情况,在后期的应用不管是美观及三维打印输出都需要封闭的Mesh模型。
很多学者都对该问题进行了研究,大体上经历了三个阶段,第一个阶段是不考虑网格孔洞周边的点情况,直接平面填补,小的孔洞这样操所还可以,但是曲面比较复杂的情况这样补齐效果很难还原真实模型;第二阶段是大家根据边界环周边的一环点的法向逼近修补三角形,这样对较小的孔效果不错,稍微大一点的孔也是很难还原;第三阶段是大家根据周边点及边界环点,拟合一个曲面方程,采用径向基RBF神经网络来拟合曲面,来预测孔洞点的位置,该方法相较前面算法可靠性及还原度都大大提高。
下面介绍小基于LabVIEW数组半边数据结构的网格填补方法
第一步:找到边界边并组成连续的环。
在数组半边数据结构中,每条边有正反两条半边组成,找到只有一条半边边,称之为边界边如下图所示:
第二步:通过该边界环的邻接三角形外扩两圈,用于曲面拟合
第三步:对这边界边点及外扩的两圈点进行法向计算,并旋转到XY平面,并拟合曲面方程,Z=F(X,Y)。
第三步:对边界环进行扩张剖分,剖分算法如下,
1)判断该多边形是逆时针排序还是顺时针排序,判断方法是通过每条边按照顺序产生边向量,两两进行向量积运算,大于0的多就是逆时针,否则就是顺时针,但最终都要归一化为逆时针排序。
2)计算每条边的夹角,并按照夹角大小进行排序,选择夹角最小的那个顶点,进行剖分,剖分策略如下
分四种情况进行重建,如下图所示:
第四步:对新增加的点带入曲面方程重新计算Z值,然后旋转回原来的坐标系。
填补效果如下:基本还原球体本来的形状,该算法考虑了边界边周边点的情况并进行了曲面拟合。
============================
有任何问题欢迎交流: