虚拟现实在数字展馆表面重建中的实践应用
2024-03-23薛亚娣
王 欣,薛亚娣
(兰州文理学院 数字媒体学院,甘肃 兰州 730000)
虚拟现实(virtual reality,VR)技术不断成熟和更新,为数字化展馆环境构建以及展品建模提供了更直观、更快速的实现方法。虚拟现实技术基于计算机模拟产生三维的虚拟空间[1],让受众在虚拟的展览环境中产生身临其境的沉浸感、交互感。陈小连基于VR/AR技术实现了室内云设计[2],易用性强、渲染速度快,满足了互联网层面室内云软件的设计需求。为此,本次关于数字展馆场景图像表面重建的研究也通过虚拟现实技术来实现。从虚拟现实技术的应用特性角度而言,本研究旨在解决以往展馆虚拟环境构建中表面格网狭长三角形过多、三角格网复杂度高、模型渲染计算量大、渲染不畅等问题,利用虚拟现实技术中的优化算法实现数字展馆场景表面三角格网的重建与渲染,在实验分析环节验证本文方法在数字展馆场景图像表面重建中的优越性。
1 基于四叉树优化算法的数字展馆场景表面重建
1.1 场景表面三角格网精简重建
采用经典的Delaunay三角形格网表达TIN,Delaunay三角形格网应用二维平面内的离散数据点实时连接得到,具有互不交叉的特点[3],生成狭长三角形的概率较低[4],在三维场景表面重建中应用广泛。基于逐点插入法的Delaunay三角形格构建方法包含三个步骤。首先,将展馆场景三维坐标xoy平面投影,获得二维平面点集中x与y轴正负4个方向极值点,分别采用xα、xβ、yα、yβ表示;增加λ表示正偏移值,取值在0之上,由此计算最小矩形包围盒的横坐标与纵坐标如式(1)-式(4)所示。
Xα=xα+λ
(1)
Xβ=xβ-λ
(2)
Yα=yα+λ
(3)
Yβ=yβ-λ
(4)
式(1)-式(4)中,(Xα,Yα)、(Xα,Yβ)、(Xβ,Yα)、(Xβ,Yβ)表示矩形包围盒的4个顶点坐标,原始的三角格网通过连接随机一条角线得到。其次,全部点依次插入此刻三角格网内,遍历全部三角形获得最优的三角形插入点位。最后,确定其所在三角形附近全部有外接圆(该插入点涵盖在内)的三角形并构成影响域凸包,影响域内全部三角形之间的公共边需剔除,将插入点、影响域形成多边形的顶点进行连接[5]。此过程中基于空外接圆准则局部优化插入点的影响域,最大程度避免空间三角形和二维平面的夹角较大情况下还原到三维空间后出现狭长三角形。第二步和第三步循环操作,插入全部点生成最终的三角形格网。
复杂的场景模型往往生成巨大规模的三角形网格,为了构建具有不同细节层次的展馆场景模型,基于Hoppe等人提出的边折叠算法对网格实施简化[6]。就是删除三维模型一条边中的顶点,求取新顶点位置重新连接边,模型表面三角面片规模大量削弱。图1和图2展现了边折叠前后的细节原理,在边折叠操作中定义(k1,k2)表示待折叠的边,v0表示折叠后新顶点,删除顶点k1、k2,k1k3、k1k4、k1k7、k1k8、k2k4、k2k5、k2k6、k2k7、k1k2是与原顶点相连的边需全部删除,连接待折叠边相邻顶点和新顶点得到新折叠后的边,此为一次边折叠的过程。
图1 未折叠边效果
图2 折叠边效果
1.2 数字展馆场景表面重建渲染
1.2.1 改进循环结构四叉树算法
传统递归遍历四叉树算法进行三维模型渲染过程中,递归函数在压入、读取操作中产生极大的堆栈负担,延长了计算用时[7]。不仅如此,一次调用往往需要后续调用的配合,增加了所需堆栈操作数规模,当前堆栈可用空间难以满足应用需求[8]。所以改进传统递归遍历四叉树算法的渲染策略,使用循环结构,由上至下按顺序地生成全部四叉树节点。
首先,基于四叉树算法分割待渲染的数字展馆场景。数字展馆场景三维渲染过程中,将全部待渲染画面视为一个矩形网格,基于四叉树思想实施区域划分。场景数据发送至渲染处理模块,定义三维元素顶点坐标为(x,y,z),顶点的高度用y表示;将各个(x,y,z)拆分为(x,z)与y,单独实施渲染操作。待渲染矩形网格中,该节点三维元素渲染精度值需求基于节点与观察者位置的距离、平坦水平共同确定,距离越近,平坦水平越差的节点所在位置对应的渲染精度要求更高,应深度细分对应的四叉树节点。
其次,基于改进循环结构四叉树算法进行场景渲染。改进循环四叉树算法的操作原理如图3所示。算法实施前确定好模型渲染的需求、四叉树的层数、四叉树节点数量。循环四叉树结构采用“上→下”顺序生成四叉树节点[9]。第一步,打造一个立体空间场景,全部数字展馆模型节点涵盖在内;第二步,循环调用构造函数创建空间内全部节点新的子节点,全部节点均为叶子节点时终止;第三步,查看是否满足终止迭代条件,迭代符合预设节点数量判断是否继续循环,满足预设值则终止迭代,否则继续迭代操作。迭代构造四叉树子节点策略有效降低了数据运算规模,减少了堆栈操作负担和压力,数字场景渲染速度有效提升。
图3 改进循环结构四叉树函数实施流程
1.2.2 双层渲染裁剪策略
第一层“淡入淡出”裁剪。淡入淡出裁剪策略注重层次细节,传统层次细节算法切换各个LOD等级时导致顶点高度值突变,“突越”问题严重,改进后“淡入淡出”层次细节算法重点缓慢地处理顶点高度值[10],以高度补偿的模式避免“突越”问题。数字展馆建模属于大场景建模,这种“淡入淡出”层次细节算法基于当前模型在预设区间中的比例值,确定采用粗略裁剪还是精准裁剪,且裁剪掉预设视野外的模型精准有效。
第二层“缓慢剔除”裁剪。以往剔除裁剪算法通过求取三维向量实现剔除,同样导致“突越”问题严重,为此采用二维向量计算代替以前的三维向量计算,预设2个剔除距离值作为不透明度约束,从而减少“突越”问题的存在。
2 实验分析
为表明本文方法可行性与优越性,将本文方法用于数字展馆场景实施三维表面重建模拟实验。引用基于FLOD单层裁剪的数字展馆场景建模方法、基于Delaunay三角剖分的数字展馆场景建模方法进行对比测试,以评估本文方法的优势与劣势。
2.1 场景表面网格重建效果分析
采用网格质量系数评估场景图像表面三角格网的构建质量,针对三角格网均匀程度的评估。网格质量系数用U表示,计算方法如式(5)所示。
(5)
式(5)中,第i个三角形圆径比用oi描述,当U趋近于1时说明三角格网的质量更佳,均匀程度较好。
同时展示了每插入一个点需要搜索的三角形数量,用p表示,需要搜索的三角形数量越少说明该方法的三角格网构建越高;另外,采用三角格网简化率h表示其精简水平。本文方法的表面三角格网重建效果如表1所示。
表1 各方法在数字展馆场景表面三角格网重建中的质量评估结果
分析表1数据可知,和两种对比方法相比,改进算法的网格质量系数、每插入一个点需要搜索的三角形数量、三角格网简化率均处于较高水平,网格质量系数趋近于1,另外两种方法的质量系数均大于2.5,说明其网格构建的均匀程度不够理想,这是因为本文方法构建Delaunay三角形格网过程中,找到其所在三角形附近全部有外接圆(该插入点涵盖在内)的三角形并构成影响域凸包,删除了影响域内全部三角形之间的公共边,将插入点、影响域形成多边形的顶点进行连接,将具有不规则特征、凸包特征三角形对网格均匀度的影响降到最低。本文方法每插入一个点约需要搜索48个三角形,基于Delaunay三角剖分的数字展馆场景建模方法需要搜索的三角形数量达到486个,说明本文方法网格构建定位较为精准,搜索三角形数量较少、格网生成的效率较高。此外,本文方法对三角格网的精简水平达到了75.30%,且没有损坏场景模型的细节几何特征,不影响数字展馆场景表面重建的效果,实现了模型轻量化特征、减少了建模对内存的占用水平。
2.2 场景表面重建渲染效果分析
数字展馆场景表面重建渲染效果如图4所示,能够看出图中场景重建画面清晰、场景灯光设置合理,场景层次分明、细节丰富,可以充分展现数字展馆的场景信息。
图4 数字展馆表面重建渲染效果
为进一步了解本文方法的渲染流畅度情况,采用三种方法同步进行渲染帧数对比测试,帧是评估模型渲染效率的权威指标,较大的帧率值表示其渲染效率越高,较小的帧率值则表示其渲染效率越差。选取3个展馆场景进行渲染测试,场景规模由小至大,场景1包含约35412个面、场景2包含约254784个面、场景3包含约451423个面,实验结果如表2所示。
表2 渲染帧率实验结果 Hz
表2数据显示,本文方法处理相同规模场景的渲染能力突出,渲染场景1的帧率可达164Hz,是三种方法中最优,其他两个场景渲染能力同样突出。可见,本文方法对于复杂场景和简单场景模型的渲染均具有良好的流畅度,能够满足受众对于数字展馆的沉浸式浏览需求。本文方法帧率高,一方面是因为采用了改进循环结构四叉树算法,由上至下按顺序地生成全部四叉树节点,减少了极大的堆栈负担;另一方面应用了双层裁剪策略,应用“淡入淡出”裁剪+“缓慢剔除”裁剪的方式裁剪掉预设视野外的模型,减少渲染数据提升了渲染的效率,并且良好避免了模型格网“突越”问题的存在,保障了良好的渲染感观。
3 结论
为进一步增强数字展馆虚拟建设场景的沉浸感以及交互感,本文利用虚拟现实技术进行了数字展馆建模研究,具体采用基于四叉树优化算法实现数字展馆场景表面重建。该方法存在两个显著优势:第一,利用Delaunay算法构建场景表面格网,降低生成狭长三角形的概率,结合边折叠方法精简三角形格网的数量,减少表面重建数据规模,大大减少了对内存的开销,运行效率更快;第二,改进传统递归遍历四叉树算法的渲染策略,使用循环结构的四叉树算法,由上至下按顺序地生成全部四叉树节点,高质量实现LOD技术,呈现趋近现实的虚拟场景效果。最后,在测试中验证了该方法生成网格效率高、质量佳,模型渲染的流畅度较好、场景重建画面趋于现实,提高数字展馆场景的交互性、沉浸感、还原度。