一种三维图形自动简化生成方法与流程

文档序号:14250674阅读:349来源:国知局
一种三维图形自动简化生成方法与流程

本发明属于图形学几何分析领域,尤其涉及一种三维图形自动简化生成方法。



背景技术:

随着计算机图形学与计算机视觉技术的发展,三维模型的应用场景越来越广。而随着模型精度的提高,无论是存储、传输还是渲染方面,都会消耗大量的资源。很多场景下,我们对三维模型的需求只是满足视觉上的一个大致显示,并不需要太高的精度。如随着webgl技术的发展,人们可以将很多的操作移植到浏览器端,构造出一个复杂的交互应用。但很多情况下因为模型的过于复杂导致整个应用变得非常卡顿,对模型进行一定程度的简化就可以很有效地缓解这个问题。

实际上,对于模型简化的研究工作可以追溯到上世纪90年代。其中最经典的是基于边折叠(edgecollapse)的方法,而以garland等人提出的基于二次误差(quadricerrormetric)模型简化方面的工作最为有影响力。后续模型简化方面的工作也基本在此基础上进行改进。

然而,现有的这些方法依然有一些不足之处:

(1)对于一些尖锐的薄面处理上,garland等人虽然在后面的工作中把几何边界约束加入到误差的考虑范畴中,但对于非几何边界的尖锐薄面,原始的qem方法依然不能很好地处理,会导致尖锐面被“压平”。

(2)由于qem方法是基于点到面的几何距离来定义二次误差,对于那些二次误差为0,但可能会导致模型面片法向翻转的情况,依然会纳入简化的候选列表中,显然这种情况应该要避免掉。究其原因在于,qem方法会将所有的候选集合维护在一个优先队列中,优先级直接定义为二次误差越小,优先级越高,这样带来的问题在于很多情况下,二次误差虽然很小,但由于会导致简化结果糟糕,所以其对应的优先级应该非常低。

(3)对于那些带纹理和法向信息的模型,现有技术中主要将纹理与法向信息加入到二次误差对应的误差矩阵中,将原来三维矩阵扩展到高维进行优化求解,导致计算时间大幅增加。

(4)现有技术中,只能通过对比它与原始模型的hausdorff距离来判断是否简化结果合理。



技术实现要素:

针对现有技术的不足,本发明提供了一种三维图形自动简化生成方法。该方法将二次误差归一化到同一个尺度,定义相应的合理指标,使得自动的简化控制成为可能。

本发明实施方式提供的一种三维图形自动简化生成方法,包括以下步骤:

在预处理三维图形的基础上,通过对三维图形中几何变化显著的位置引入虚拟边界,并将所述虚拟边界的边界约束添加至对应顶点的二次误差矩阵中;

对折叠边进行预检查以确定所述折叠边对应面片的法向变化程度,并根据所述法向变化程度与所述折叠边的二次误差矩阵确定边的简化优先级;

按照简化优先级,迭代收缩最小二次误差对应的边,并更新所有关联面片对应的边的二次误差矩阵和简化优先级,满足迭代终止条件后,输出自动简化生成的三维图形。

与现有技术相比,本发明具有的优点为:

本发明实施方式提供的方法对经典qem算法进行改进,具体地,对于几何变化差异非常大的地方引入虚拟边界的概念,且在简化过程中提前对折叠边进行预检查,并根据二次误差及法向变化度等信息重新定义优先级,以便更好地控制自动简化。此外,该方法在平衡简化率与简化质量上具有突出的进步。

附图说明

图1是实施例提供的三维图形自动简化生成方法的流程图;

图2是实施例1提供的简化结果对比图;

图3是实施例2提供的简化结果对比图;

图4是实施例3提供的简化结果对比图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

图1是实施例提供的三维图形自动简化生成方法的流程图。参见图1,该方法包括以下步骤:

s101,在预处理三维图形的基础上,通过对三维图形中几何变化显著的位置引入虚拟边界,并将虚拟边界的边界约束添加至对应顶点的二次误差矩阵中;

本步骤中,预处理三维图形的具体过程为:

根据三维图形对应包围盒的大小,归一化处理三维图形,具体将三维图形缩放到原来的1/l,其中,l为三维图形对应包围盒的对角线长度,并存储缩放系数1/l,以便后续还原简化的三维图形尺寸。

对归一化处理后的三维图形,构建顶点与边的连接关系;

在构建顶点与边的连接关系时,增加一条虚拟边于没有连接关系且靠得非常近的顶点之间,具体为:

对每个顶点的几何坐标(x,y,z),以一个步长对三个维度分量进行离散化以变换到整数空间上,并哈希处理三个整数以确定每个顶点的哈希值;创建哈希值一致的顶点之间的连接关系。

预处理过程中还包括初始化每个顶点对应的二次误差矩阵的所有元素为0,初始三维图形的所有顶点和所有面片的有效标志为1。

在本步骤中,在预处理三维图形后,确定每个顶点的二次误差矩阵。采用经典的qem方法会将三维图形中的非边界尖锐面(几何变化显著的位置)压平,进而降低图形的简化生成质量,因此,本实施例通过对三维图形中几何变化显著的位置引入虚拟边界,并将虚拟边界的边界约束添加至对应顶点的二次误差矩阵中,以提升三维图像简化生成质量,具体为:

对于面片f,计算面片f对应的二次误差矩阵qf,计算公式为:qf=(a,b,c)=(n·nt,d·n,d2),其中,面片f的平面方程为n·(x-v)=0,n为面片f的法向量,v为平面上任一点,d为-n·v;

当面片f中的边e=(v0,v1)对应的两个面片的法向相差超过预设阈值(该预设阈值可以设为150°~170°)时,对边e增加边界约束qe,边界约束qe的定义与qf相同,仅是边界约束qe中定义中的(n,b)表示通过边e并垂直于面片f的一个面;将qe和qf按权重叠加至面片f对应顶点的二次误差矩阵vq;

当面片f中的边e=(v0,v1)对应的两个面片的法向差没超过预设阈值时,将qf增加至面片f对应顶点的二次误差矩阵vq。

s102,对边进行预检查以确定边对应面片的法向变化程度,并根据法向变化程度与边的二次误差矩阵确定边的简化优先级。

为避免技术背景中序号(2)中描述的问题,即基于几何距离的二次误差所带来的面片翻转问题,对边进行预检查以确定边对应面片的法向变化程度,并根据法向变化程度与边的二次误差矩阵确定边的简化优先级,具体为:

定义简化优先级priority=f(qerror)/g(cosin);

qerror为边的二次误差;

cosin为边对应面片的法向变化程度,具体为:找到所有包含该边两端顶点v0和v1的各面片,预计算每个面片第一法向及将v0和v1替换为最优顶点后面片的第二法向,并计算第一法向与第二法向的点积,取面片集合中点积的最小值,并将该最小值映射到0~1之间;

当qerror大于0时,函数f(qerror)与函数g(cosin)均为单位函数,即f(x)=x,g(x)=x;

当qerror接近0时,加大cosin对简化优先级的影响程度;

当cosin小于变化阈值时,定义函数f(qerror)为边长度的负反比,g(cosin)为1–cosin,表示对此边进行简化;

当cosin大于变化阈值时,直接将简化优先级设为inf,表示避免此边被简化。

s103,按照简化优先级,迭代收缩最小二次误差对应的边,并更新所有关联面片对应的边的二次误差矩阵和简化优先级,满足迭代终止条件后,输出自动简化生成的三维图形。

在本步骤中,迭代简化过程为:

在确定边的简化优先级后,将四元组(边,边对应的最优顶点,边对应的二次误差矩阵,边的简化优先级)按照简化优先级顺序排列,形成简化优先队列;

按照简化优先级,选择简化优先队列中最小二次误差对应的边e=(v0,v1),在v0和v1的标志位均不为0,且不满足迭代终止条件下,将边e合并成其对应的最优顶点,并更新该最优顶点影响的边的边的二次误差矩阵和简化优选级,在本实施例中,该过程具体为:

(1)判断简化优先队列中弹出的最小二次误差对应的边e=(v0,v1)中的v0和v1的标志位是否均不为0,若是,执行步骤(2),若否,重新弹出一条边;

(2)判断三维图形的剩余面片数小于面片数阈值或简化优先队列中的二次误差超过误差阈值时,终止迭代过程,否则执行步骤(3);

(3)将边e合并成一个顶点,具体为:

保留v1,并置v0的有效标志为0,删除所有包含边e的面片,置删除的面片的有效标志为0,;并将所有包含v0且不包含v1的面片连接关系更新为v0,进入步骤(4);

(4)将顶点v1更新为边e对应的最优顶点,该最优顶点包括该最优顶点的几何坐标、纹理坐标以及法向坐标,进入步骤(5);

(5)对于所有包含顶点v1的面片,在简化优先队列中,更新面片各边的二次矩阵误差、最优顶点以及简化优先级。

本步骤中,确定边对应的最优顶点,包括确定边对应的最优顶点的几何坐标:

对于边e=(v0,v1),将顶点v0和顶点v1的二次误差矩阵相加得到矩阵a,对矩阵a求解以确定边e对应的最优顶点的几何坐标,由于二次误差最终描述成一个二次矩阵的形式,为求解最优顶点的几何坐标,通过简单地推导就会发现,只需要求解ax=-b对应的解即为最优顶点,具体为:

当矩阵a可逆的情况下,最优顶点的几何坐标为-a-1b;

当矩阵a不可逆的情况下,选取顶点v0、v1及两个顶点中心点vc=(v0+v1)/2中二次误差最小的顶点的几何坐标作为最优顶点的几何坐标。

在确定最优顶点的几何坐标时,除了考虑以上情况,还需要考虑到当矩阵a出现病态矩阵的情况,这会引起解空间受误差扰动非常大,从而引起简化过程中生成奇异点。为解决这个问题,在本实施例中,在判断矩阵a的可逆性的同时,判断矩阵a的条件数cond(a)=‖a‖·‖a-1‖,对条件数过大的可逆矩阵a,选取顶点v0和顶点v1及vc中二次误差最小的顶点的几何坐标作为最优顶点的几何坐标。

该处的矩阵a对应qf中的a和b形式,只不过是两个顶点vq矩阵中a那部分相加,具体的可以参考原始qem论文。

本实施例中,对于包含纹理信息的三维图形,在确定最优顶点的几何坐标时,还要采用坐标插值法确定最优顶点的纹理坐标和法向坐标,具体过程为:

确定最优顶点的纹理坐标:

对于边e关联的m个面片,计算边e对应的最优顶点在每个面片的三个顶点上的投影权重,将三个顶点的纹理坐标值按三个投影权重进行插值,得到m个插值纹理坐标;

以各面片的面积作为权重,将m个插值纹理坐标进行加权平均,并以加权平均后的结果除以m个面片的总面积得到最优顶点的纹理坐标;

确定最优顶点的法向坐标:

对于边e关联的m个面片,计算边e对应的最优顶点在每个面片的三个顶点上的投影权重,将三个顶点的法向坐标值按三个投影权重进行插值,得到m个插值法向坐标;

以各面片的面积作为权重,将m个插值法向坐标进行加权平均,并以加权平均后的结果除以m个面片的总面积后再进行归一化处理,得到最优顶点的法向坐标,该步骤进行归一化处理以确保法向长度为1。

在本实施例中,为避免更新顶点对应的二次误差矩阵信息与简化优先队列中旧的结果相互混淆,在迭代简化过程中,为每一条边维护一个更新计算器,在该边被从简化优先队列前,利用所述更新计算器判断该边是否被更新过,若被更新则直接跳过该边。

当满足迭代终止条件后,输出自动简化生成的三维图形的具体过程为:根据存储的缩放系数1/l,将归一化处理后三维图形恢复到原始尺寸,并删除简化过程中有效标志为0的顶点和面片,重新排列顶点的连接关系后,保存结果,并输出。

实施例1

本实施例中,在经典原始qem方法上仅引入虚拟边界,对图2(a)所示的三维图形进行简化,输出的简化结果如图2(c)所示。图2(b)为经典原始qem方法对图2(a)进行简化的结果,对比图2(a)、图2(b)以及图2(c),可以看到,原始方法会导致模型出现严重的破面,如图2(b)所示,其原因主要在于,对于顶部的边,单纯的顶点偏移所引起的几何误差几乎为零,此时会导致该边会被优先简化。但增加边界约束后,就可以避免这种情况,从而得到一个比较合理的简化结果,如图2(c)所示。

实施例2

本实施例中,在经典原始qem方法上仅引入上述的简化优先级,对三维图形进行简化,输出的简化结果如图3(b)所示。图2(a)为采用经典原始qem方法(该方法直接将二次误差作为优先级)输出的简化结果,对比图3(a)和图3(b),可以发现,在图3(a),一个凹槽体中明显出现了面片结果异常的情况,纠其原因在于点简化结果中对应边的二次误差为零,但面片本身法向却出现了翻转。由于该边对应的面片夹角为90°,属于正常面片夹角(相对前面的虚拟边界夹角而言),因此,本实施例对法向变化进行预检查计算,会发现简化结果有明显改善。

实施例3

本实施例中,在经典原始qem方法上仅引入上述的纹理插值方法对图4(a)所示的三维图形进行简化,输出的简化结果如图4(b)所示。图4(c)为采用文献1中的方法输出的简化结果,对比图4(a)、图4(b)以及图4(c),可以看到图4(b)和图4(c)的纹理结果在纹理边界上几乎无明显差异,但其好处在于,相对文献1每条边的计算复杂度随着顶点属性的增长而成倍上升,本实施例的最优顶点优化只涉及到几何信息,因此最优点的计算是一个固定值,而属性的计算只涉及一个插值过程,因此,会比文献1结果快多倍,从本实施例属性包含纹理及法向的实验结果来看,在取得几乎一致的属性结果前提下,本实施例的计算速度会快4倍以上。

文献1为hoppeh.newquadricmetricforsimplifiyingmesheswithappearanceattributes[c]//proceedingsoftheconferenceonvisualization'99:celebratingtenyears.ieeecomputersocietypress,1999:59-66.。

以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1