基于着色器LOD的模型间平滑过渡技术*
2018-12-05叶迎萍吴文江朴美燕刘劲松
叶迎萍,吴文江,胡 毅,朴美燕,刘劲松
(1.中国科学院大学,北京 100049;2.中国科学院沈阳计算技术研究所 高档数控国家工程研究中心,沈阳 110168;3.沈阳高精数控智能技术股份有限公司,沈阳 110168)
0 引言
随着“工业4.0”和“中国制造2025”的提出,当前制造业开始从传统以经验为主的管理模式转型为以数字信息为基础的管理模式。数字化车间是以加工产品整个生命周期中的相关数据为基础,结合虚拟现实技术,对整个生产过程进行仿真、监控、评估和优化,并进一步扩展到整个产品生命周期的新型生产组织方式。它以数字化技术为手段,融合先进的管理思想,提高生产效率,降低企业成本,切实提高车间的管理水平,是目前制造车间的发展方向[1-2]和中国制造2025的核心技术。其中,利用虚拟现实技术构建的三维虚拟车间是数字化车间的一个重要部分。然而随着车间场景大小、整体场景结构的复杂程度,以及用户对场景质量需求的增加,在实际的虚拟车间开发过程中,可能出现场景加载时间过长、实时显示滞后,甚至出现用户交互行为处理滞后问题,严重影响虚拟车间的交互体验,因此对虚拟车间进行场景优化势在必行。
LOD技术,即层次细节技术,作为目前主要的场景优化方法,它根据物体的重要性、视点的相对速度或者位置等衡量标准,动态改变场景中三维模型的复杂程度,模型距离视点越近,显示的模型细节越丰富,从而降低了CPU和GPU需要处理的顶点数量,提高场景的渲染速度[3-4]。但是在虚拟车间场景中为同一模型提供较多不同精度的切换模型,场景运行时会大幅度增加计算机系统内存占用量;如果使用较少切换模型,在模型切换临界点,可能会出现严重的画面闪烁问题[5-7]。因此,考虑系统运行内存占用问题,可切换的模型个数一般都会控制在3个以下,因此多个模型之间进行切换时的平滑过渡问题也就显得尤为重要。
目前模型间切换平滑过渡方法主要有两种:第一种是模型-贴图渐进过渡方法,将原始纹理贴图利用外部图片压缩工具生成多个不同质量的纹理贴图后根据距离进行动态切换[8-9],这种方法需要额外的贴图文件,增加了贴图文件的总体积;第二种是MipMap方法,纹理贴图被处理成由一系列被预先计算和优化过的图片组成的文件后动态切换[10-11],经过处理后的纹理贴图文件总体积也会相应增加。
本研究利用计算机中可编程管线着色器,提出一种基于着色器LOD的模型间平滑过渡技术。该技术根据模型和视点的距离远近,在着色器中直接对贴图输出颜色进行不同程度的高斯模糊处理,进而达到模型间平滑过渡的效果。
1 着色器LOD平滑过渡方法
场景中物体从三维模型到屏幕画面,需要经过着色器进行一系列的处理。着色器是可编程管线,它可以接收CPU计算出三维模型顶点的相关信息,如位置、法线、贴图坐标等,利用顶点着色器将此时的模型坐标,依次转换为世界坐标,观察坐标,投影坐标,再利用像素着色器,根据需要对纹理贴图进行处理,填充到栅格化后的图形像素中[12]。
根据计算机图形图像渲染上述机制,提出基于着色器LOD模型间平滑过渡技术。该方法利用着色器中的顶点着色器和像素着色器配合使用。在顶点着色器中利用Model Matrix和View Matrix将输入的顶点数据从Model坐标系转换到Camera 坐标系下。通过一系列计算后获取物体在Z方向上的位置和整个Z方向上归一化后的视距。根据现实生活中人眼看近处物体清晰远处物体模糊情况,在像素着色器主要采用高斯模糊对纹理贴图进行模糊处理,从而降低纹理贴图细节,并根据顶点着色器处理得到的不同视距值,对纹理进行不同程度的模糊处理,如图1所示。
图1 着色器LOD原理示意图
2 关键技术
着色器LOD中的关键技术主要可分为两个部分:首先获取物体距离视点的距离,这里采用归一化后的视距,然后是对纹理贴图进行的处理方法,这里采用高斯模糊算法。
2.1 归一化视距δ计算
在观察者坐标系下,存在一个近截面和一个远截面,只有在这两个截面范围内的物体才会显示出来。在顶点着色器中,通过Model Matrix和Camera Matrix将CPU处理好的原始物体坐标转换到观察者坐标系中,物体投影到Z轴上的点到近截面中心点的距离和远截面中心点到近截面中心点的距离即为归一化视距δ,如图2所示。
假设在观察者坐标系中,此时视点为坐标原点O,即(x0,y0,z0)=(0,0,0),三维物体为V,坐标为(x1,y1,z1),OV间距离为dv,V投影到Z轴上的点为V′,V′到视点O距离为dz,OV和Z轴之间的夹角为θ,视点到远近截面的距离dnear和dfar,根据几何知识,视距比δ的计算方法见公式(1):
(1)
图2 观察者坐标系示意图
2.2 纹理贴图高斯模糊算法
高斯模糊广泛应用于图形图像处理领域,使用该技术处理后的图片可以降低图片的细节。从本质上看,高斯模糊就是一种数据平滑技术,模糊后的图片中的每一个像素点取周围像素的平均值[13]。由于图像是连续的,距离像素点之间距离越近相互作用越大,反之越小,因此计算平均值时,分配的权重也应该更大,二维高斯函数正好符合这个标准,高斯函数在二维空间的定义公式为(2):
(2)
图3 三维高斯函数示意图
其中,σ为偏差,在给定σ值时,该公式在二维空间产生的曲面是从中心开始向四周呈现正态分布,如图3所示。
高斯模糊从数学角度分析,图片的高斯模糊过程相当于图片和高斯分布做卷积计算,见公式(3):
J(x,y,σ)=G(x,y,σ)×I(x,y)
(3)
在对纹理贴图运用高斯模糊算法处理时,一方面利用高斯模糊是线性可分的的特性[14],先对纹理贴图在水平方向进行一维矩阵变换,再在垂直方向进行一维矩阵变换,从而降低了采样次数;另一方面,通过对贴图进行多次迭代模糊处理提高图片的模糊程度,从而降低了采样阶数,提高了贴图的模糊效率。
3 实验分析
3.1 动态模型加载的数字化车间场景构建
结合Unity3d开发平台和3ds Max建模工具,实现三级模型LOD的数字化车间三维场景,即场景中的物体模型一种具有三个不同精度的模型可供替换。
首先利用3ds Max中创建车间模型,并导入Unity中,并利用uniLOD插件生成两个低层次细节的车床模型。根据数字化车间布局图,在Unity中先用高进度模型按照相应的比例进行布局,如图4所示。
图4 Unity中数字化车间布局图
利用Unity中的LODGroup组件和上述步骤创建的三个不同精度的车床模型,实现三级模型LOD[15]。当车床与物体的视距比≤50%时,使用高精度模型,当50%<车床与物体的视距比≤70%时,使用中档精度模型,当70%<车床与物体的视距比≤90%,使用低精度模型,否则Culled,如图5所示。
3.2 模型间平滑过渡
对车床模型使用1024×1024纹理贴图,分别利用着色器LOD技术、模型-贴图过渡显示方法以及Mipmap方法进行进行模型平滑过渡处理。
对于着色器LOD技术,利用ShaderLab语言定义所需的Shader文件。采用三级模型切换方法,在一二级模型间采用三级Shader LOD,分别对上述贴图进行1,2,4次高斯模糊处理,在二三级模型间采用两级Shader LOD,分别对上述贴图进行8,16次高斯模糊处理,每次都进行2像素的模糊操作。
对于模型-贴图过渡显示方法[4],利用外部图片压缩软件对上述贴图进行不同程度的压缩处理,获取5张不同质量的纹理贴图文件。同样采用三级模型切换方法,在一二级模型间采用相对高质量的3张贴图进行切换,在二三级模型间采用相对低质量的2张贴图进行切换。
图5 Unity中的LODGroup组件
对于Mipmap方法,直接利用Unity游戏引擎对上述贴图进行Mipmap处理,生成8张不同精度的贴图,Unity自动进行贴图切换。
实验结果显示,使用上述三种方法均可以达到平滑过渡的效果。但是相对于模型-贴图和Mapmip方法,着色器LOD方法在整个平滑过渡过程中,只需添加一个Shader文件,贴图文件总大小不变。而采用模型-贴图方法,同一贴图需要多个不同质量的贴图,对于实验中的贴图,应用五张不同质量的替换贴图,文件大小依次为104.38KB、95.74KB、86.00KB、55.02KB及29.52KB,贴图文件总大小从140.38KB增加到511.04KB,增加近72.5%;而对于Mipmap技术,在Unity中直接对贴图采用该技术后,统一贴图文件中包括了8张不同精度的贴图,因此大小也从140.38KB增加到341.4KB,增加了近58.6%,如表1所示。
表1 三种模型平滑过渡方法文件大小对比
根据以上实验可以得出,使用Shader LOD方法进行模型间平滑过渡,不仅可以达到预期的效果,同时可以大幅度的降低系统运行时贴图文件内存占用率,同时该Shader文件可以直接被任意贴图使用,相对于模型-贴图平滑方法,也大幅度减少了整个系统的贴图文件数量。从用户体验方面来说,使用Shader LOD方法对贴图进行渐进模糊处理,让三维场景中的物体可以达到近处清晰,远处模糊的效果,从而增加了整个虚拟车间的真实感,如图6所示。
图6 Shader LOD处理后的局部场景
4 结束语
利用虚拟现实技术对数字化车间进行虚拟仿真是目前车间技术发展的趋势。在实践过程中,为了实现更好的用户体验,需要对场景进行必要的优化处理。LOD技术广泛应用于三维场景优化方面,它根据物体和视点的距离动态切换不同精度的模型。在模型切换时容易出现画面闪烁。本文提出一种基于着色器LOD技术的模型间平滑过渡方法,同样根据物体与视点之间的距离,利用着色器直接对物体进行绘制到屏幕中的贴图像素进行高斯模糊处理,达到近处贴图细节清晰,远处细节模糊的效果。相对于现有平滑过渡方法,该方法不仅可以大幅度降低系统运行时的贴图文件在内存中占用率,还提高了数字化虚拟车间的真实性。