高飞
摘 要:本文主要介紹细节层次模型的定义和生成方法,重点介绍了场景建模优化的主要方法,利用边折叠法即二次测度误差的改进算法对吉林动画学院的校园场景进行简化处理。结果表明,该方法有效降低了三维场景的复杂度。
关键词:多层次细节模型 网格简化 三维场景模型 边折叠算法
中图分类号:TP319 文献标识码:A 文章编号:1674-098X(2017)09(c)-0113-02
随着计算机技术的快速发展、网络的普及、虚拟现实技术的应用和理论研究已经成为当今信息技术领域内最热门的研究,在实际应用中,大规模的虚拟现实场景内有很多复杂的模型,由于计算机硬件和网络速度的限制,场景在加载过程中,无法进行实时显示。因此,为了解决这个问题,本文采用边折叠算法对模型进行场景内模型优化,不仅可提高加载速度,同时也给用户带来更好的真实体验。
1 细节层次模型(LOD)
细节层次模型是指针对同一个对象模型,利用不同细节的描述方法得到一组模型。在实际绘制当中,以视点距离对象模型的远近为依据进行绘制。当距离近时,利用较细致的LOD模型来绘制;当距离较远时,便利用粗糙的LOD模型来绘制。在运动物体的场景中,当物体移动速度快时,利用粗糙的LOD模型来绘制,当物体移动速度较慢或者处于静止时,利用细致的LOD模型来绘制。
2 LOD模型的生成
在计算机图形学内,多边形网格经常被用来描述场景内的对象模型,为物体提供不同层次的LOD模型,可有效控制场景复杂度及加速图形绘制速度。而LOD模型通常是由网格简化算法生成的。所谓网格简化,就是在保持原网格模型的外观特征基础上,通过一些方法,减少顶点数量,将原始模型用近似模型表示出来。常用的方法是将对模型外观特征影响不大的或不重要的顶点、三角形或边从多边形网格中移走,进而简化模型。简化过程遵循的原则是:(1)顶点最少原则;(2)误差最小原则;(3)效率最高原则。
3 几何元素删除型算法
该算法主要是对网格模型边、三角形或者中点的重要性进行判断,将不重要的部分进行删除,再把删除后的空洞进行重新网格化,通过此方法来简化网格。
该简化方法主要可分为:近似平面合并型、折叠型和顶点删除型。三角形算法和边折叠算法是折叠型算法的主要两种基本算法,主要思想是对网格中的三角形或者边进行折叠误差计算,选择折叠误差小的三角形或者边进行折叠,生成新的顶点后,把与之有关联的点进行连接,然后将折叠区域重新网格化。边折叠算法的过程如图1所示。
边折叠算法也称二次误差测度算法(Quadric Error Metric,QEM),不仅运行速度快、内存消耗小,算法计算简单且简化后的网格与模型具有非常高的整体相似度。本文将原来的二次误差测度算法(QEM)进行改进,利用改进的QEM算法对场景建模进行优化处理。
4 改进的二次误差测度算法(QEM)
具体步骤如下。
(1)读入原始网格数据,其中包含网格内的顶点坐标和与其连接的三角面片的顶点、序列等数据信息。
(2)求出网格内各个顶点的离散曲率K(v)由式得出和局部区域面积LRA(v),将这两个加权因子与矩阵Q(v)进行加权,得到网格内每个顶点的二次误差矩阵Q'(v):
式中,K(Lv)为包含顶点v的边的高斯曲率,Kv为顶点v的高斯曲率。
Kv的表达式为:
式中,为顶点v的邻接夹角;n为与顶点v相关联的三角形数目;(v)为顶点v的邻接三角网格面积之和,即局部区域面积(LRA)。
二次误差矩阵表达式为:
(3)通过输入适当的合适的阈值w=0.9,判断是否为边界,若为边界,则设置。
(4)根据步骤2得到每个顶点的二次误差矩阵Q(v),从而计算得出每条边的收缩代价c,若(v1,v2)→收缩代价表达式为:
将其放入堆栈中,c值越大,在栈中的位置越靠后,反之,越靠前。
(5)从堆栈中取出收缩代价最小的边进行收缩操作,即栈顶,同时更新网络的数据结构,对新的边折叠代价进行计算并且更新堆栈序列。
(6)如果达到理想简化要求,则算法结束,否则继续重复上述过程,直到满足简化要求。
5 实验结果
通过边折叠法对场景内的模型进行优化处理,优化后的场景不仅具有原有的特征,同时降低了场景复杂度,提高了加载速度(见图2、图3)。
参考文献
[1]张欣,秦茂玲,谢堂龙.基于特征保持的三角形折叠网格简化算法[J].计算机技术与发展,2012,22(1):94-97.
[2]俞静.三维复杂场景优化处理的研究与实现[D].成都:西南交通大学,2011.endprint