VR环境下应用于三维虚拟建模的复杂艺术场景优化技术
2019-11-15胡博,陈锋,刘敏
胡 博,陈 锋,刘 敏
(1.广东技术师范大学天河学院, 广州 510540;2.福州市科学技术情报研究所, 福州 350014;3.西华师范大学 计算机学院, 四川 南充 637009)
作为20世纪90年代新兴的全新技术方向,虚拟现实技术(VR)已经发展成为仿真技术的一个重要研究领域,是仿真技术与计算机图形学、人机交互技术、信息处理技术、传感器技术等多种技术的集合,是多学科综合发展的产物[1]。如今,随着计算机技术的不断发展,VR技术也随之不断成熟和普及。由于具有“身临其境”的真实感,虚拟现实能以更加自然和逼真的人机交互方式,给用户带来全新的体验经历[1-3]。现阶段,虚拟现实技术已经在医学、教育、军事和文化等领域中得到广泛应用[4]。但是文化领域中的艺术场景建模与展示往往需要处理十分复杂的三维场景,现有的虚拟现实技术仍具有某些局限。由于计算机处理性能的限制,在虚拟仿真中对图像进行实时绘制时需要对逼真度和绘制速度两者进行有效平衡,从而在现有硬件条件下为用户提供流畅的真实感体验[5]。VR环境下的复杂场景建模要求具有真实感的模型,而且虚拟场景还必须实时生成,即要求三维场景刷新速度需要和用户视点变化的速度一致。这就要求复杂场景建模在不降低画质的条件下,减少三角形面片的数量,且一般要求刷新速度至少40 FPS以上,才能无延迟感觉。所以,复杂三维场景的模型优化和快速绘制方法,在理论和实际应用方面均存在巨大的研究价值。
现阶段,三维虚拟建模的复杂场景优化方法主要有3种:① 基于图像的加速绘制;② 细节层次技术;③ 可见性判断。文献[6]提出了一种基于SketchUp虚拟场景快速建模方法,能够满足大批量场景建模的需求。文献[7]通过合理建模减小复杂度、通过真实感贴图来增强逼真度、通过模型导入的对象化来实现对虚拟物体的控制,最终在虚拟现实场景建模的逼真性、实时性和可控性方面达到了较好的效果。文献[8]提出了边折叠网格简化的二次误差度量计算方法,利用该方法对模型进行了简化处理,结果表明:该算法可有效降低虚拟漫游三维模型的复杂度。文献[9]提出了基于半边折叠的多细节层次模型(levels of detail,LOD)简化算法,通过引入二次误差量度、曲率特征、视觉特征度、折叠点的度以及折叠边长度排序,减少了模型误差累积。
在上述研究理论的基础上,针对复杂三维场景优化问题,本文采用三维模型简化和加速绘制技术相结合的方法对复杂艺术场景的实时绘制进行了优化研究。具体改进方法为:① 采用半边折叠算法对复杂三维几何模型进行简化处理,减少了计算开销,提高了模型渲染的效率;② 在复杂场景的细节层次绘制过程中,增加了一个选择细节层次的预处理阶段,通过投影值计算为每帧的场景区域选择合适的细节层次视差度量系数,加快了实时计算速度。实验结果显示,在保证虚拟场景画面质量的条件下,本文优化方法能够以较快的渲染速度完成复杂艺术场景实现。
1 VR环境下的复杂场景建模需求分析
三维场景实时绘制技术的本质是利用计算机技术让用户在所有视点和方向上对虚拟场景进行观察时均具有三维视觉感的技术[9]。为了给用户提供最佳的真实感,该技术需要尽量统一图像的刷新速度和用户的视点变化速度,否则用户最终看到的画面会出现掉帧现象,从而影响用户的体验感。
但是,在三维虚拟场景的绘制中,需要处理复杂的图像数据,尤其是信息量较多的复杂艺术场景时,如果不能大幅提高内存、CPU和图像处理设备的性能,则会导致图像的刷新率明显降低。但是,必须保证足够高的图像刷新率才能确保场景显示保持一定的实时性。如果VR系统必须在一定延迟后才能刷新出新的场景,那么将大幅降低系统中用户的体验感,严重情况下还会导致用户产生“眩晕”“恶心”等生理不适现象[10]。现阶段,复杂场景建模优化的常用方法为LOD技术,该技术可以有效提高三维场景的刷新率,例如文献[9]提出了一种基于半边折叠的LOD简化算法,该算法能较好地保持模型的外形特征,实现起来快速有效。LOD的基本思想是在不影响画面质量的前提下,通过逐次简化景物的表面细节来减少场景的几何复杂度,从而提高绘制算法的效率。图1为人像模型的LOD显示结果。
图1 头像模型的LOD显示
2 三维几何模型的优化
2.1 模型表示分析
目前,三维几何模型的表示方法大致分为2种:面表示和体表示。两者均有一定的优势和缺陷。体表示方法可以全面显示物体的表面和内部属性,但是存储空间较大,因此运算成本较高。面表示方法仅显示模型的表面属性,占用空间相对体表示方法减少很多,因此成为现阶段较为流行的三维几何模型表示方法。
在面表示方法中,计算机图形学中的三角网格表示方法是最常用的一种表示方法,能直接表示大多数的复杂网格模型。因此,本文选择三角网格作为研究内容来实现模型表示及优化。以三角网格模型为例,其网格模型表示示意图如图2所示。其中:v1,v2,…,v6表示每个拓扑顶点,包含空间坐标信息;f1,f2,…,f6表示三角形的编号,由该三角形3个顶点组成。
图2 网格模型表示示意图
2.2 半边折叠操作
作为得到最广泛支持的三维模型简化算法,边折叠算法将边视为要删除的操作目标,对1条边执行1次折叠操作实现2个顶点的合并,从而消除2个三角形,如图3所示。
图3 边折叠操作
如文献[8]所示,基于二次误差度量的边折叠算法所需的内存较小且计算速度较快。设三维模型中的任意2个顶点(p1,p2)满足下列任一个条件: (p1,p2)为一条边;||p1,p2|| (1) 其中:l(i,j)表示和有效边(pi,pj)连接的三角形平面集合;l=[a,b,c,d];a2+b2+c2=1;a,b,c,d为一个平面方程ax+by+cz+d=0的系数。 Δ(q)的值越小,则顶点q到一个有效边(pi,pj)附近平面的距离越近。式(1)可以简化为 (2) (3) 则M即为边折叠的误差矩阵。 根据最小二乘法对Δ(q)进行偏导计算,即∂Δ(q)/∂x=∂Δ(q)/∂y=∂Δ(q)/∂z=0,获得如下公式: (4) 通过求解式(4)的唯一解,得到新顶点q的坐标。如果没有唯一解,选择有效边(p1,p2)的中点、p1或者p2作为边折叠算法产生的新顶点。 通过上述分析可以看出,采用传统边折叠算法执行模型简化可能导致出现连续过渡的多个LOD模型,这会影响到模型简化的速度。因此,本文采用半边折叠来减小简化模型的复杂运算和存储。边折叠算法通过对原始顶点的加权平均操作得到新顶点坐标。但是,半边折叠算法无需该加权平均过程,仅需原始顶点的采样,因此减少了计算开销和占据的内存容量,可以较好地提高多分辨率模型的渲染速度。 本文半边折叠算法的代价函数计算方式如下: (5) 其中:Tvi-Teij为包含vi但是不包含eij的三角形面集合,t为该集合中的任意一个三角形面。IMpvi表示顶点vi的视觉重要度,其计算方式为: IMpvi=1=||kvi|| (6) 式中:kvi为视觉特征因子。此外,本文为每条半边的半边折叠代价函数引入一个阈值因子,则: (7) 利用该阈值因子的调节功能能减少误差累积,从而维持模型的重要视觉特征,避免降低用户体验。 一般情况下,按照视点到场景区块中心的距离d来为该场景区块选择合适的层次细节模型LOD。但是,仅仅按照距离d的数值这一个条件来实现一个层次细节转换到另一个层次细节,很容易会引起几何场景的网格模型产生较大形变,造成十分剧烈的抖动现象,那么将大幅降低系统中用户的体验感,严重情况下还会导致用户产生“眩晕”“恶心”等生理不适现象[10]。本文不采用最精简的层次细节模型,而是采用了近似选择结果[11],从而充分发挥了核心图形显卡GPU的绘制能力,进一步加快实时计算速度。高度差μi在屏幕上的投影值εi示意如图4所示。 图4 高度差μi在屏幕上的投影εi 距离d的计算方法为: (8) 式中:V表示视点;D表示观察方向。场景区域块的中心点为C,在屏幕上的投影εi值为: (9) 式中:H为视点高度;μi为高度差。在复杂场景的细节层次选择的预处理阶段,通过投影值计算为每帧的场景区域选择合适的细节层次视差度量系数δi,加快了实时计算速度。设λ为阈值(一般为4像素),如果εi超过了λ的数值会引起明显的视觉误差,即此时将场景块的细节模型切换会导致人眼可察觉的抖动现象,因此需要满足εi<λ,故 (10) 针对艺术场景的虚拟仿真应用,本文采用了非配带型VR系统(非沉浸型 VR系统)[12-13],无需用户佩戴专门的头盔显示器设备。虚拟环境系统的原理如图5所示。 图5 虚拟环境系统原理 PC主机的CPU为AMD FX-8350,内存为 8 G,硬盘为200 G, VR系统硬件的核心显卡设备为NVIDIA GeForce GTX1060,DRAM为6 GB。虚拟现实环境的层次结构如图6所示[14]。虚拟环境采用的操作系统为Windows 10。软件开发语言采用了Visual C++ 6.0,三维物体绘制软件为DirectX。 图6 虚拟现实环境的层次结构 以某户外艺术漫游系统为例,对本文设计的场景优化方法进行了仿真验证,地形场景的模型简化效果如图7所示。该户外艺术漫游系统以展示传统客家建筑文化为目的,在户外真实自然地貌地形环境下让用户自主的游览客家仿真户外空间。从图7可以看出:提出模型优化方法的网格分布较为合理,能保持场景模型的重要视觉特征,避免降低用户体验。此外,图8给出了地形场景漫游时本文方法和SR-LOD方法[15]的帧速FPS率变化曲线。图9给出了本文方法和SR-LOD方法的显示三角形数。 图7 场景地形效果显示 图8 帧速率变化曲线 图9 三角形数 从图8可以看出:本文方法能一直保持较高的帧率性能,保证了场景绘制和交互时的实时性和用户体验。从图9可以看出:由于采用半边折叠,本文优化方法的显示三角形数有所增加,即时间复杂度有所提高。但是由于采用了改进的细节层次模型选择预处理机制,算法执行的总时间仍比SR-LOD方法要少,即仍然能相对较快地实现复杂场景的绘制,执行时间对比如表1所示。 表1 执行时间对比 s 本文采用三维模型简化和加速绘制技术相结合的方法对复杂艺术场景的实时绘制进行了优化研究。具体改进方法为:① 采用半边折叠算法对复杂三维几何模型进行简化处理,减少了计算开销,提高了模型渲染的效率。② 在复杂场景的细节层次绘制过程中,增加了选择细节层次的预处理阶段,通过投影值计算为每帧的场景区域选择合适的细节层次视差度量系数,加快了实时计算速度。实验结果显示,在保证虚拟场景画面质量的条件下,本文优化方法能以较快的渲染速度完成复杂艺术场景实现。3 场景实时绘制的细节层次模型选择
4 虚拟环境系统的软硬件体系结构
4.1 系统结构设计
4.2 系统的硬件和软件配置
4.3 测试结果
5 结论