当前位置: 首页 > 专利查询>东南大学专利>正文

一种针对不光滑表面考虑面积和法向量的网格简化方法技术

技术编号:17009362 阅读:29 留言:0更新日期:2018-01-11 05:31
本发明专利技术公开了一种针对不光滑表面考虑面积和法向量的网格简化方法,包括:读取三维网格中所有的顶点和面,计算其基础二次方矩阵和初始二次误差矩阵;计算每条边折叠的估计误差和新顶点的位置,在折叠后新顶点的代价中包含法向量约束,将最小的折叠代价以及对应的新顶点和原顶点的位置存入顶点属性中,将折叠误差插入优先队列;从队列中取出折叠代价最小的边,对其折叠操作,并更新相关顶点和面;判断满足设定的简化条件为止。本发明专利技术能够在快速精简网格的同时,尽可能的保持原模型的细节特征。尤其是对于一些非流体、不光滑的表面,本方法相较于传统方法能够更好的保留细节特征,能够取得更为突出的简化效果,从而提升整体的简化效果。

【技术实现步骤摘要】
一种针对不光滑表面考虑面积和法向量的网格简化方法
本专利技术属于图形处理
,涉及计算机图形学领域的三维网格简化技术,更为具体的说,是涉及一种考虑面积和法向量度量的网格简化方法。
技术介绍
在计算机中,三维模型通常表示为面模型或者体模型;其中,使用多边形网格的面模型最为常用,这种模型的通用性和灵活性比较好,而且数学表示简单。近年来,使用三维激光扫描技术获得的三维模型精度非常高,能够得到非常好的渲染效果。但随之而来的是网格模型复杂度的提高,即便是一个非常简单的模型,可能也需要上万个三角面来描述,这对于计算机的存储、计算和绘制带来了巨大的挑战。而在实际应用中,高复杂度的网格模型并不是经常需要,在某些场景中简化后的三维模型依然能得到很好的显示效果,因此网格模型简化算法的研究显得尤为重要。一个好的简化算法,能够极大的提升运算速度,降低内存消耗,提升整体的简化效果。基于三角面的网格简化算法有很多种,包括顶点删除法,顶点聚类法,边折叠法,面折叠法等等。但这些简化算法均不够理想,例如,边折叠的方法是一种最经典的方法,其通过选择一条边,并用一个顶点取代这条边来重新生成网格结构并简化网格。Garland和Heckbert等学者基于此方法提出了QEM(QuadricErrorMetrics,二次误差测度)的简化算法,其误差测度为顶点到平面的距离平方和,优点为计算速度快,且它所生成模型网格较为平均,质量较高,是一种非常有效的化简算法,应用广泛。但是它也有一些固有缺点:因为没有考虑网格的几何特性,如体积、形状、曲率等,所以在简化过程中容易损失模型的细节特征,对于一些非流体表面的简化效果也不够理想。
技术实现思路
为解决上述问题,本专利技术公开了一种针对不光滑表面考虑面积和法向量的网格简化方法,通过加入面积和法向量的度量,对模型进行综合简化。为了达到上述目的,本专利技术提供如下技术方案:一种针对不光滑表面考虑面积和法向量的网格简化方法,包括如下步骤:第一步,读取三维网格中所有的顶点和面,使用QEM算法计算其基础二次方矩阵和初始二次误差矩阵并保存在顶点属性中,二次误差矩阵中包括面积因素;第二步,计算每条边折叠的估计误差和新顶点的位置,在折叠后新顶点的代价中包含法向量约束,将最小的折叠代价以及对应的新顶点和原顶点的位置存入顶点属性中,并将折叠误差插入优先队列;第三步,从优先队列中取出折叠代价最小的一条边,对其进行折叠操作,并更新相关顶点和面;第四步,判断是否满足设定的简化条件,若不满足,则返回第三步;若满足,则过程结束。其中,第一步具体过程如下:定义p=[abcd]T代表了平面:ax+by+cz+d=0(a2+b2+c2=1)使用距离的平方作为误差的度量,折叠点v的误差可以写作:将其写成二次型的形式:其中,Kp是平面p的基础二次方矩阵:对于网格中所有的面,计算其基础二次方矩阵Kp。其中,a、b、c可以由面的单位法向量得到;d=-(ax+by+cz),通过代入面的一个顶点坐标,可以获得d的值。同时计算网格中所有面的面积约束因子Sp,计算方法为:其中,p1、p2、p3为面的三个顶点。接着,对于网格中的所有顶点,计算初始二次误差矩阵Q(v)。某一顶点v的初始二次误差矩阵定义为相邻面基础二次方矩阵乘以面积约束因子的和,即初始二次误差矩阵为:进一步的,第二步中新顶点位置的计算方法如下:首先计算新顶点的二次误差矩阵,其由原来两个顶点v1、v2的二次误差矩阵相加得到:Q=Q(v1)+Q(v2)判断矩阵是否可逆,其中,qij是矩阵Q中的项;如果矩阵不可逆,则从折叠边的两个端点v1、v2或中点(v1+v2)/2中选择折叠代价最小的作为折叠新顶点;如果矩阵可逆,则计算出该新顶点的位置为:所述折叠误差计算中考虑法向量约束因子的影响,计算方法如下:其中,法向量约束因子Nα的计算方法为:Nα=1-α+α·N其中,N为约束项,α为影响因数,计算方法分别为:上式中,v1,v2分别为边的两个顶点,Sp和Sp1是三角面p和p1的面积,S∑是相邻面的总面积,Kα是调整系数。进一步的,所述第三步更新相关顶点和面的过程中包括以下过程:获取顶点v1,v2所有相邻的面,删除共有的面,将其他面中的顶点v1,v2替换为新顶点v,并重新计算这些面的法向量和基础二次方矩阵;获取顶点v1,v2所有相邻的顶点,更新这些顶点的相邻顶点列表,用新顶点v代替v1,v2,并同时更新新顶点的相邻顶点列表,使用第二步的方法重新计算这些点相邻的边的折叠误差,重新插入到优先队列中。进一步的,所述第四步中简化条件为顶点数或简化比例。与现有技术相比,本专利技术具有如下优点和有益效果:本专利技术能够在快速精简网格的同时,尽可能的保持原模型的细节特征。尤其是对于一些非流体、不光滑的表面,本方法相较于传统方法能够更好的保留细节特征,能够取得更为突出的简化效果,从而提升整体的简化效果。本专利技术方法运算速度快、简化效率高,且算法简单。附图说明图1为本专利技术提供的针对不光滑表面考虑面积和法向量的网格简化方法。图2为模型简化效果比较,其中α为简化比例,α=简化后的顶点数/原模型的顶点数;(a)为原模型;(b)为采用QEM算法对原模型简化后效果图,α=0.5;(c)为采用QEM算法对原模型简化后效果图,α=0.1;(d)为采用本专利技术方法对原模型简化后效果图,α=0.5;(e)为采用本专利技术方法对原模型简化后效果图,α=0.1。图3为图2中QEM算法和本专利技术方法在简化比例α=0.1时局部细节放大比较图,其中(a)为QEM算法细节放大图,(b)为本专利技术方法放大图。具体实施方式以下将结合具体实施例对本专利技术提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本专利技术而不用于限制本专利技术的范围。本实施例采用Java作为编程语言,如图1所示,本实施例采用如下步骤:步骤1,读取网格三维网格中所有的顶点和面,计算基础二次方矩阵Kp和二次误差矩阵Q。建立两个类Vertex和Face,用来对应模型中的顶点和面。对三维obj文件进行解析,读取网格三维网格中所有的顶点和面,分别建立两个ArrayList:VertexList用于保存顶点,FaceList用于保存面。在解析的同时,保存与顶点相邻的顶点和面的信息,存入Vertex中的属性中;计算面的法向量和面积,存入Face的属性中。首先遍历FaceList,对其中的每一个Face对象(即所有面)计算基础二次方矩阵Kp,存入对象的属性中,计算方法为:其中,p=[abcd]T代表了平面:ax+by+cz+d=0(a2+b2+c2=1)a、b、c可以由面的单位法向量得到;d=-(ax+by+cz),通过代入面的一个顶点坐标,可以获得d的值。将计算获得的矩阵Kp保存在顶点的属性中。接着遍历顶点的列表VertexList,计算所有顶点的二次误差矩阵Q,计算方法如下:其中,与顶点相邻的面已经提前保存在了顶点的属性中,Sp是相应面的面积。最终将计算获得的Q保存在顶点的属性中。步骤2,在顶点的数据结构中包括与其相邻的待折叠的边的另一个顶点,最小的折叠代价以及新顶点的位置,这样就可以将所有边的折叠代价作为顶点的属性保存在顶点的数据结构中。本步骤对于列表VertexList中的每个顶点Vertex,遍历与其相邻的所有顶点,本文档来自技高网
...
一种针对不光滑表面考虑面积和法向量的网格简化方法

【技术保护点】
一种针对不光滑表面考虑面积和法向量的网格简化方法,其特征在于,包括如下步骤:第一步,读取三维网格中所有的顶点和面,使用QEM算法计算其基础二次方矩阵和初始二次误差矩阵并保存在顶点属性中,二次误差矩阵中包括面积因素;第二步,计算每条边折叠的估计误差和新顶点的位置,在折叠后新顶点的代价中包含法向量约束,将最小的折叠代价以及对应的新顶点和原顶点的位置存入顶点属性中,并将折叠误差插入优先队列;第三步,从优先队列中取出折叠代价最小的一条边,对其进行折叠操作,并更新相关顶点和面;第四步,判断是否满足设定的简化条件,若不满足,则返回第三步;若满足,则过程结束。

【技术特征摘要】
1.一种针对不光滑表面考虑面积和法向量的网格简化方法,其特征在于,包括如下步骤:第一步,读取三维网格中所有的顶点和面,使用QEM算法计算其基础二次方矩阵和初始二次误差矩阵并保存在顶点属性中,二次误差矩阵中包括面积因素;第二步,计算每条边折叠的估计误差和新顶点的位置,在折叠后新顶点的代价中包含法向量约束,将最小的折叠代价以及对应的新顶点和原顶点的位置存入顶点属性中,并将折叠误差插入优先队列;第三步,从优先队列中取出折叠代价最小的一条边,对其进行折叠操作,并更新相关顶点和面;第四步,判断是否满足设定的简化条件,若不满足,则返回第三步;若满足,则过程结束。2.根据权利要求1所述的针对不光滑表面考虑面积和法向量的网格简化方法,其特征在于,基础二次方矩阵Kp计算方法如下:其中,p=[abcd]T代表了平面:ax+by+cz+d=0(a2+b2+c2=1)a、b、c可以由面的单位法向量得到,d=-(ax+by+cz);二次误差矩阵Q计算方法如下:其中,Sp是相应面的面积。3.根据权利要求1所述的针对不光滑表面考虑面积和法向量的网格简化方法,其特征在于,所述第二步中新顶点位置的计算方法如下:首先计算新顶点的二次误差矩阵,其由原来两个顶点v1、v2的二次误差矩阵相加得到:Q=Q(v1)+Q(v2)判断矩阵是否可逆,其中,qij是矩阵Q中的项;如果矩阵不可逆,则从折叠边的两个端点v1、v2或中点(v1+v2)/2中选择折叠代价最小的作为折叠新顶点;如果矩阵可逆,则计算出该新顶点的位置为:

【专利技术属性】
技术研发人员:王慧青焦越杨燕
申请(专利权)人:东南大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1