AR场景中的基础态势数据展示与优化

2021-02-27 01:29王国伟
计算机与现代化 2021年2期
关键词:区域化分块态势

安 宇,聂 芸,王国伟

(华北计算技术研究所,北京 100083)

0 引 言

随着计算机图形学及相关技术的发展,增强现实技术正在数据可视化领域中扮演越来越重要的角色。增强现实(Augmented Reality, AR)技术是一种基于环境感知物理设备,利用三维建模技术,通过多种交互手段来把虚拟的场景叠加到真实的世界并且进行实时交互的技术[1-3]。

态势呈现广义上是指对指定信息的二维或三维展现,作为本文研究重点的地理信息(包括地形、符号、纹理)呈现问题,是一种典型的态势数据呈现问题[4-6]。传统的地理信息态势(简称态势)呈现被要求精细地展现在AR的设备中。由于AR设备存在视野狭窄、计算和图形处理能力不足的固有问题,将传统的数字沙盘应用到AR场景中会产生可视范围内地形增强边界明显、生成及更新过程缓慢、分辨率低的结果。

本文针对在AR场景中的三维地形生成过程效率低、可视化效果差的问题,通过动态地形剖分技术,结合自然人机交互控制,提出一种高效的三维地形生成呈现算法,实现在AR场景中的三维地形高效生成,提高可视化效果。

1 增强现实与态势呈现的发展

1.1 增强现实的发展

增强现实概念由波音公司于1992年提出,随后确立了AR的3个主要特征:虚实融合、实时交互和三维注册[7-8]。1999年在AR Toolkit项目中,初步实现了计算机跟踪功能,之后应用在塞班操作系统上,实现了移动端的跟踪注册,由此扩展了AR应用的使用范围[9-10]。在移动平台下应用的SLAM算法,使得AR的三维空间定位能力进一步增强,标志着AR技术的进一步成熟[11-13]。2012年谷歌的增强现实眼镜Google Glass是移动穿戴式AR设备的一个里程碑,其在用户眼前展示实时信息的功能,受到了大众的追捧,将穿戴式AR设备的发展推上了高潮,使得增强现实技术备受关注[14]。近年来又诞生了功能更强的微软的增强现实眼镜Hololens,其有着手动追踪、眼动追踪和语音交互的能力,相机具有显示8百万像素静止图像和1080P30的高清展现能力,进一步地提高了用户体验[15]。至此AR设备的应用领域已经十分广泛[16-18]。

1.2 态势呈现的发展

传统态势呈现的形式是地图和沙盘。地图是一个二维的展现方式,可以展现地理信息所处的平面坐标系统位置。实物沙盘则是在地图基础上的进一步发展,增加了态势展现的维度,能概略地展现三维的地理信息,丰富了展现的内容,可以模拟各种数据在三维空间中的位置[19-21]。随着计算机技术的发展,又有了数字态势展现的手段,可以在计算机中模拟真实的地理环境,使得态势呈现的细节变得更加清晰[22-24]。随着可穿戴的AR设备的发展,态势呈现可以应用在AR设备中,并且带给用户丰富的视觉感知和听觉感知体验,实现了用户与态势在真实场景下实时交互的功能。

2 增强态势设计需求

2.1 增强态势概念

增强态势是为了满足地理信息的三维化、高精度、全方位、全息展现和实时多交互手段的需求而提出的一种概念。它既具备三维数字态势高清晰度、高分辨率的能力,又结合了增强现实的虚实融合、三维注册、实时交互的功能来实现全息现实的任意角度展现,并进一步通过物理设备的视线追踪、手势识别、语音识别完成了多感知手段和多控制手段的实时交互能力。

2.2 增强态势关键指标

1)软硬件一致性。

相对于传统设备,AR设备存在视野狭窄的问题,导致了数据富集程度高、增强边界明显等问题。因此在设计增强态势的算法中要考虑在软件中的显示效果能否高效准确地在硬件中显示出来,确保在硬件上的显示效果,从而实现软件与硬件的一致性。

2)运行鲁棒性。

面对开发环境和运行环境的显示能力、计算能力、渲染能力不匹配的固有问题,研究软件在硬件运行环境下的鲁棒性就要着重考虑设计增强现实算法中的性能优化问题,通过减少软件的运行开销来实现运行环境的鲁棒性。

3)人机交互的自适性。

由于地形往往都是很大的,而用户所关注的地形位置与大小一直都在发生变化。基于这样的用户需求,本文在增强态势中定义了关键区域。关键区域是指,随着用户的视线距地形的距离以及投射到地形上的位置变化而自动发生大小、位移变化的地形区域。这就要求在设计增强态势的工作中,地形要有自适应性。

3 关键技术及实现途径

3.1 方案选型与架构设计

本文的开发引擎选用的是Unity,基于其3D开发的专业性和多平台发布的包容性,可以满足本文三维地形开发并且发布到AR设备上的需求。本文提出的区域化算法是一种通用算法,可以在所有的AR平台下使用。本文的头戴式AR设备选用的是Hololens,基于其1080P30的高清展现能力和手动追踪、眼动追踪、语音交互的多种实时交互手段,可以满足本文的高精度、高分辨率以及地形交互自适应的要求。软件架构如图1所示。

图1 软件架构

本文方案的核心由3个部分组成:地形生成、分块算法和区域化算法。通过对地理信息的输入和处理,本文利用地形生成算法来进行地形的生成。分块算法是在地形生成的基础上提出的一种算法,对地形进行剖分,从而提高生成地形的清晰度。区域化算法是在分块算法的基础上进行优化的一种算法,对分块算法在性能上进行了优化,并且可以在AR场景中与用户进行实时交互,从而精细、高效地生成用户可视范围内的地形。

3.2 地形的生成

Unity中通常采用Terrain组件来表达地形信息,但是Terrain组件存在更新成本高、细节呈现能力弱等问题,因此不能满足本文的表达要求。为了能够便捷地进行网格重构以及接入业务控制逻辑,本文直接选用了Mesh组件作为地形表达的载体。Mesh模块保存了构成3D模型表面的多个顺序相连的三角形面的点集、边集等信息。Mesh模块中有3个关键的数组,分别是顶点数组、三角形数组以及UV数组。顶点数组给出了Mesh网格中的每个点的三维坐标,记录了生成地形的每个点的位置信息。三角形数组给出了Mesh网格渲染的方式。UV数组是指纹理贴图的坐标,记录了图上点集的位置信息,同时给出了纹理贴图的位置信息,将点集中的每一个点都映射到了3D模型的表面。Mesh模块要求输入一个高度图Height Map来获取每个地形的每个点对应的高度信息,以及一个贴图Diffuse Map,来给Mesh网格进行贴图渲染。获取高度信息的时候,先对高度图中的像素点进行等间距采样,然后获取采样得到的每个像素点的Red、Green、Blue颜色值,再通过公式(1)中的色彩心理学公式[25]将像素点的彩色值转化为灰度值,从而计算出像素点的高度。

gray=0.3×r+0.59×g+0.11×b

(1)

其中gray是像素点的灰度值,r、g、b是像素点的对应的Red、Green、Blue颜色值。

通过以上步骤,该算法可以生成地形,是只生成一块Mesh的单Mesh算法。但是该算法存在缺点:传统意义下的Mesh生成的精度十分有限,因为每一块Mesh都最多只有65,535个绘制的点,因此当地形很大的时候,传统Mesh生成的显示效果将特别差,完全看不出任何细节,因此需要提出一种新型的Mesh拼接方案。

3.3 Mesh分块化算法

基于高分辨率、高清晰度的需求,本文提出Mesh分块化算法作为一种新型的Mesh拼接方案来对Mesh的生成进行优化。一个大的地形由一块块小Mesh拼接而成。其中每一块小Mesh都有65,535个绘制点,从而保证每个Mesh的清晰度。

Mesh分块化算法的第一步是确立分块数目N以及对高度图Height Map和贴图Diffuse Map进行图像切割。每个块的编号记作λ(λ= 1,2,…,N),该块的起始点记为Ps,坐标为(Xs,Ys),终止点记为Pe,坐标为(Xe,Ye)。

Xs=Ys=λmod sqrt(N)-1

(2)

Xe=Ye=λmod sqrt(N)

(3)

通过式(2)、式(3)的计算,可以根据每个分块的编号计算出每个分块的起始点坐标,依次把大图的像素点赋值给小图从而完成图像切割。

Mesh分块化算法的第二步是进行N块小Mesh的生成,基于第一步得到的坐标信息和对应的2个小图信息来给小Mesh的3个基础数组进行赋值,从而实现了N块小Mesh的生成。

Mesh分块化算法的第三步是对N块小Mesh进行拼接,从而得到一块完整的大地形。由于生成的Mesh直接拼接边缘会存在缝隙,因此需要对每个生成的小Mesh的坐标进行整体平移。设第λ个分块的父节点为Pλ,坐标为(Xλ,Yλ)。

Xλ=Xλ-λmod sqrt(N)+1

(4)

Yλ=Yλ-λmod sqrt(N)+1

(5)

通过式(4)、式(5)的计算,本文将每个小Mesh依据其对应的编号λ,对整体进行相应的平移变换,从而完成了Mesh拼接。

分块Mesh算法解决了生成的地形精度不足的问题,但是存在系统开销大的问题。由于目前AR设备计算能力和图形能力的不足,因此无法直接采用此算法进行地形的生成。

3.4 自适应Mesh区域化算法

区域化算法是基于分块算法,为了降低系统开销并且进一步增强关键区域的显示效果而实现的一种智能化分块算法。由于AR设备存在视野狭窄的问题,本文需要对可视区域内的地形进行高效的精细化生成,并将人眼实际可视区域称为关键区域。因此智能化分块算法要先把一个大地形划分为5块区域,如图2所示,分别为Top区域、Down区域、Left区域、Right区域和关键区域Key区域。然后对5个区域分别进行Mesh生成,最后拼接成一块大地形。

图2 Mesh区域化示意图

图2中所示Key点所处的区域即为关键区域,Key点为关键点,是Hololens中的虚拟光标与Mesh平面的交点,坐标记为(Xkey,Ykey),记关键区域面积为S。如图3所示,人眼观测Mesh区域时,视线交Mesh平面于点Key,距离为d。

图3 人眼观测Mesh区域示意图

本实验的Mesh面积为100个单位。关键区域是在Hololens中的一个正方形可视范围,其面积随着人眼距Mesh平面距离的平方成正比。当关键区域的面积不超过Mesh最大面积时,关键区域的面积正比于距离的平方。经实验测得,当d的值为10.1612、Key点设置为Mesh的中心点时,在Hololens中可以观察到关键区域与Mesh区域恰好重叠。其中d的值可通过图3的方法求出,故而,可以推导出一个实验公式(6)来计算关键区域的面积S:

(6)

从而可以进一步通过公式(7)计算出第一行R1的y坐标YR1,第二行R2的y坐标YR2,第一列C1的x坐标XC1,第二列C2的x坐标XC2,从而确定了图2中所有点的坐标。然后根据Mesh分块化算法完成Mesh的生成与拼接。

(7)

该算法通过自适应关键区域的选择,保证了可视范围内地形的精度,并且相比于分块化算法大大减少了Mesh生成的数量,从而降低了系统开销。

4 实验环境及结果分析

4.1 实验环境

本文实验的Unity的版本为2017.4.18f1 (64-bit),所处的电脑关键配置如表1所示,使用的Hololens的关键参数如表2所示。

表1 开发环境配置清单

表2 运行环境配置清单

4.2 实验结果展示

单Mesh算法、分块化算法、区域化算法下的同区域显示结果,如图4所示。

(a) 单Mesh算法 (b) 分块化算法 (c) 区域化算法图4 3种算法下的显示结果

本文的分块化算法生成了100个Mesh,然后进行拼接。如图4所示,通过对比可以看出,单Mesh的显示效果较差,纹理不清晰,分块化算法下的显示效果明显优于单Mesh的显示效果,区域化算法下的显示效果与分块化算法下的显示效果相比差异不大。

4.3 对比分析

图5~图7的横坐标都是每个Mesh中点的个数,单位是个。本实验通过控制Mesh中点的数量不同,产生了3种算法多组数据下的结果性能对比趋势图。图5中的纵坐标是GFX驱动开销,单位是MB。图6中的纵坐标是帧率,单位是fps。图7中的纵坐标是内存消耗,单位是MB。通过对比分析,可以得出结论:区域化算法下新的地形与分块化算法下的地形相比,大大降低了系统的开销,并且相比于单Mesh的地形系统开销差距不大。综上所述,区域化算法在保障了显示效果的同时,也降低了硬件设备的消耗。

图5 3种算法下的GFX驱动开销

图6 3种算法下的帧率

图7 3种算法下的内存开销

5 结束语

本文介绍了一个新的概念——增强态势,并且给出了增强态势的实现方法与优化方法。首先通过对3种算法生成结果的展示对比,得出区域化算法的显示效果最优。又通过改变每个小Mesh上的点的个数,生成了10组数据来对每种算法的性能消耗进行对比分析。实验结果表明,优化后的区域化算法产生的结果在性能开销上比分块化算法有了显著的降低,并且相比于单Mesh算法产生的结果在性能开销上差距不大。因此,区域化算法是一种既可以保证增强态势的显示效果,又可以维持一个较小的硬件开销的算法。本文的增强态势为将来在真实空间中与态势交互的研究打下了基础,并且进一步拓展了增强现实应用的多样性。

猜你喜欢
区域化分块态势
强化区域化管理 聚焦信息化建设
城燃企业区域化管理模式下技术创新体系搭建
阿尔金山西部区域化探数据处理方法对比研究
2019年12月与11月相比汽车产销延续了增长态势
分块矩阵在线性代数中的应用
汇市延续小幅震荡态势
我国天然气供需呈现紧平衡态势
职工代表区域化协作管理的实践探索
反三角分块矩阵Drazin逆新的表示
基于自适应中值滤波的分块压缩感知人脸识别