一种面向VR多投影环幕设备的可视化结果显示方法

2020-03-11 12:50姜忠鼎
计算机应用与软件 2020年2期
关键词:清晰度投影可视化

李 鑫 姜忠鼎

(复旦大学上海市数据科学重点实验室 上海 201203) (复旦大学软件学院 上海 201203)

0 引 言

近年来,具有研究意义的数据呈爆炸式增长,涵盖了社会科学、生命科学、自然科学等领域。解析大量数据的一种方法是数据可视化,用直观的几何图像展示数据间的联系和意义。数据的可视化需要经过数据的处理、过滤映射等过程,最后利用特定的程序输出可视化结果,这些结果可以是完整的渲染画面,也可以是2D或3D的几何模型。对于复杂数据可视化结果显示的应用场景,显示设备需要提供高分辨率、视角广阔且支持立体显示的沉浸式显示环境。然而传统的显示设备,例如标准LCD屏幕,已经无法满足上述需求。为此学术界提出了沉浸式可视分析课题,该课题注重如何利用新兴用户界面技术来构造沉浸式的数据分析工具[1]。虚拟现实技术近年来发展迅猛,虚拟现实设备提供的沉浸式体验可以良好地应对沉浸式可视化结果显示的应用情景。虚拟现实设备可以分为投影式虚拟现实设备和头戴式虚拟现实设备。投影式虚拟现实设备利用一个或多个投影机将画面显示在投影幕上。投影幕根据表面形状还可以分为环幕、折幕、半球幕、球幕等。相比于头戴式虚拟现实设备,投影式设备支持多人同时使用系统,适用于参观、展示等情景。

目前学术界提出了不少沉浸式可视化系统,例如Hanula等[2]设计的基于CAVE2[3]显示设备的Carven Halos天文数据沉浸式可视化系统以及EVL实验室开发的基于拼接屏支持显示Web可视化应用和远程桌面的可视化系统SAGE[4]和SAGE2[5]。然而拼接屏的显示环境会存在拼缝问题,损害了沉浸式体验,虚拟现实投影式显示设备并不存在上述问题。多投影环幕显示设备可以呈现视角广阔的画面,并利用偏振光投射左右眼画面提供立体显示支持。在多投影环幕环境中,系统的显示画面需要经过一系列几何、投影校正等过程才能保证显示结果的正确性。在面对可视化结果显示需求时,系统需要支持兼容呈现信息密度较高的2D可视化结果画面和3D数据可视化模型。然而传统的渲染流程和处理方法将2D画面按照3D物体的处理流程进行处理,会出现严重的2D画面模糊等问题。针对上述问题和研究背景,本文提出了一个面向VR多投影环幕设备的可视化结果显示方法。该方法详细描述了在多投影环幕环境中如何清楚地显示2D与3D可视化结果,并如何支持立体显示和用户交互。利用本文方法实现的系统实例如图1所示,该系统基于Unity[6]游戏引擎实现。

图1 VR多投影环幕可视化系统实例

1 方法概述

1.1 VR多投影环幕显示环境

VR多投影环幕显示设备由若干台高清投影仪和120度投影环幕构成。高清投影仪由若干台计算机节点驱动,节点运行特定的应用程序并将画面输出至投影仪,并最终呈现在投影环幕中。用户可以借助偏振光眼镜查看立体影像,并利用虚拟现实手柄与系统进行交互。

1.2 可视化结果获取

可视化结果指的是由各种可视化应用程序利用不同的可视化方法将原始数据转换得到的几何图像或模型。为了保证通用性,可视化系统需要支持呈现Web可视化应用、一般桌面应用以及3D数据可视化模型。对于Web应用,可以利用系统内嵌浏览器内核的方法,将Web应用的解析和渲染交给内核处理,然后利用API接口获取画面数据。对于一般的桌面应用,可以直接开辟独立的进程在后台运行该应用,然后利用底层图形接口获取窗口画面数据。对于3D数据的可视化模型,可以直接从网络上下载模型文件,并部署到本地进行解析渲染。然而,本地运行可视化应用程序的方式会占用额外的系统(CPU、GPU、内存)资源,所以将可视化应用程序的运行和渲染任务交给外部节点执行,然后通过网络获取可视化结果画面的方法更为可取,获取示意如图2所示。

图2 可视化结果获取示意

应用程序执行随着时间推移会生成流式的可视化结果画面,这些画面需要经过一定的分块和压缩处理以面对远程传输的带宽压力。这些画面数据即为像素流数据。用户产生的交互数据也同样经过网络传输至远程节点并应用至可视化应用程序中。对于3D数据可视化模型文件,其解析过程相比于运行额外的可视化应用程序而言耗时较少,所以为了保证完整的三维空间信息和立体显示效果,我们认为3D模型适合采用本地部署进行渲染的模式。

1.3 可视化结果显示

我们获取的可视化结果主要有两种类型:一种是2D的可视化结果画面;一种是3D的数据模型。实际的使用情景要求上述的可视化结果需要同时呈现,如图3所示。图中的3D模型为陆家嘴金融中心城市数据模型,同时呈现的还有与该模型地理位置相关联的2D百度地图可视化应用和两个金融数据可视化应用。

图3 2D可视化画面与3D模型兼容显示示意

在多投影显示环境中,虚拟相机采样的平面图像在曲面投影幕上显示会出现变形问题,所以需要进行几何校正。由于多个投影机的投影画面有重叠区域,还需要进行投影的颜色校正。复旦大学交互式图形学实验室对此类问题有大量的研究,并提出了较为完整的渲染流程和处理方法来实现多投影环幕环境中正确、立体地显示虚拟场景中的3D物体[7-8]。然而上述方法没有对2D画面的渲染和显示进行单独处理,只是将2D画面依附于3D空间的曲面画布进行渲染。对于信息密集的2D可视化结果画面,进行上述复杂的采样、校正步骤会对2D画面的清晰度造成严重的损失,使得用户难以分辨画面中的信息。所以本文基于先前的研究工作,结合可视化结果显示的需求提出了在多投影环境中兼容2D与3D显示的渲染流程,在该渲染流程中对2D画面进行单独的渲染处理。为了保证可视化结果的立体显示,可以使3D可视化应用输出左右眼画面,然后通过设置纹理的UV坐标实现可视化结果的立体显示。对于非3D的可视化应用程序,其结果画面可以通过将画布面板凸现至用户眼前来实现沉浸感。例如在科幻电影中,主人公将呈现2D图像的3D虚拟操纵面板“召唤”到眼前。该操作可以令用户更加清晰地查看可视化内容,并与之交互,如图1所示,用户将左上角的可视化应用“召唤”至眼前进行操作。该功能的实现需要经过妥善的处理和计算。同时,数据可视化除了显示之外的另一项核心要素是用户交互[9]。在新的渲染流程下,会面临显示和交互逻辑分离造成的交互坐标转换问题。

2 兼容2D与3D显示的渲染流程

在多投影显示环境中,传统的渲染流程和处理方法没有特别地对2D画面进行单独处理,只能将2D画面依托于3D画布进行渲染。然而对3D物体的多次虚拟相机采样和校正过程损失了画面本身的清晰度。为了解决这个问题,我们在先前的研究基础上提出了新的在多投影环幕中兼容2D与3D显示的可视化结果渲染流程,如图4所示。

图4 兼容2D与3D显示的渲染流程

在该渲染流程中,我们对2D画面与3D物体渲染进行独立处理。2D画面渲染不再经过多个代理几何对应相机的采样、变形与融合的过程。2D可视化画面跳过的操作步骤并不会影响2D内容本身的显示效果。2D可视化结果画面获取之后,将整合后的纹理依附于2D画布进行渲染。仍然使用画布的渲染策略是因为存在可视化结果画面添加额外UI元素的需求。对于3D物体,我们根据虚拟屏幕将完整的虚拟空间划分为两部分,离虚拟用户位置较近的近用户空间以及相对的远用户空间。虚拟屏幕对应着2D画布的空间位置,不同空间内的3D物体将被渲染到不同的纹理上。将不同空间的3D画面与2D可视化结果画面融合时,为了确保正确的遮挡关系,按照远用户空间3D画面、2D可视化结果画面、近用户空间3D画面的顺序进行Blending操作。投影校正的目的是解决投影重叠区域问题,该处理步骤不能省略,所以把2D内容的纹理融合步骤安排于投影校正阶段前,几何校正变形后。这样的流程可以有效解决2D画面渲染模糊问题,同时不影响3D物体本身的渲染。

对于3D物体类型的划分,可以通过程序进行标记,在3D相机进行采样时剔除掉不必要的物体。而物体的标记过程可以由开发者自行决定方法,例如简单的基于距离进行判断,或者利用Raycast方法求得该物体在虚拟屏幕前方还是后方,本文不再赘述。

3 可视化结果画面的立体显示方法

显示所需的可视化结果数据是2D的图像。如果可视化应用本身是3D应用,这样的显示方式会影响到数据的视觉表达,所以需要解决立体呈现的问题。对于本身具有3D信息的可视化应用程序,解决方法是令可视化应用输出左右眼画面,在呈现时通过纹理UV坐标设置左右眼的显示区域,再利用偏振光眼镜进行查看。在3D可视化应用程序中设置两个虚拟相机,确定左右眼的零视差表面,然后根据零视差表面与相机的位置确定视锥体近平面和远平面的四条边的位置,如图5所示。

图5 左右眼立体机制示意

零视差表面的左右眼成像完全一致,处于零视差表面的物体给用户的空间距离感和真实世界的投影环幕距离一致。所以在零视差表面前的虚拟物体,成像后给用户脱离真实世界屏幕靠近了自己的感觉(进入了近用户空间),而零视差表面后的物体,给用户脱离了真实世界屏幕远离了自己的感觉(进入到远用户空间)。左右眼相机通过投影矩阵完成配置,经典的投影矩阵Mp的计算如下:

(1)

式中:far、near分别代表着视锥体远、近平面距离虚拟相机的距离;left、right、top、bottom分别代表着相机近平面的左、右、上、下四条边相对于虚拟相机中心在近平面空间的对应位置。

对于非3D的可视化应用程序,其结果画面可以通过将画布面板凸现至用户眼前来实现沉浸感。但在本文提出的渲染流程中,2D画面不再按照3D物体进行渲染和处理,不具备额外的空间信息,无法进行上述功能的实现。为了解决这个问题,我们需要通过模拟计算,在2D画布中模拟3D空间的凸现效果。该模拟过程的关键点是求出两个数据:一个是由于透视关系造成的物体缩放比例;二是由于左右眼相机的空间位置不同造成的成像位置偏移。所以本方法的核心目的是求得合适的缩放比例R以及偏移量大小Doffset。缩放比的计算方法是:取模拟呈现平面的任意两点,计算两点在非凸现位置和凸现位置的坐标,得出在不同位置上的两点距离,然后求得比值即可。同理计算偏移量取模拟呈现平面的任意一点计算不同凸现位置上的坐标差值即可。进行上述运算我们需要先确定模拟呈现面板在凸现位置与非凸现位置的世界空间坐标Pworld,凸现位置坐标通过非凸现坐标向虚拟相机平移一定的值得到。利用式(2)转换到剪裁空间得到Pclip,然后利用式(3)-式(4)转换到屏幕空间得到Pscreen,其中S代表屏幕空间的像素个数。

Pclip=Mp·Mview·Pworld

(2)

(3)

(4)

对于模拟呈现面板对应的矩形ABCD,缩放比例可以通过一条边AB在屏幕空间下非凸现位置的长度LAB除以凸现位置长度LA′B′得到,如式(5)所示:

(5)

(6)

求得缩放比例和偏移量之后,就可以在程序中通过顶点着色器修改可视化应用面板的缩放值以及顶点位置偏移量实现凸现效果。

4 交互坐标计算

可视化的两大核心要素是显示与交互。2D可视化应用画面通过2D画布进行渲染,然后将结果和3D画面一起最终呈现在环幕表面上。由于交互逻辑表面是2D的平面,所以会出现交互逻辑与显示分离的问题,如图6所示。图中以AD方向为x轴方向,AB为y轴方向,OM为z轴方向。

图6 逻辑与显示分离的坐标转换示意

对于生成环幕的虚拟碰撞体,实质上是生成对应的环幕虚拟3D网格数据。首先构建一个矩形网格ABCD,x轴方向长度(AD或BC)对应真实世界中环幕的弧长,y轴方向长度对应环幕的高度。然后分别在AD、BC上均匀分布若干个点Pi,数量越多代表剖分越细致,还原度越高。再对点Pi的x分量和z分量进行修正,利用弦长等关系计算每个分片对应点在弧上应该出现的位置。设角θ是某个分片端点对应半径与圆弧中心点对应半径的夹角,R为环幕圆柱对应的底面半径,Pi的x坐标分量和z坐标分量可以由式(7)-式(8)得出。θ可以通过求得当前分割面片的排序位置与总个数的比值,并与整个环幕对应圆弧的圆心角α相乘得到。

Pix=sinθ·R

(7)

(8)

(9)

Pplaney=PHy

(10)

5 实验结果与分析

5.1 系统实例

使用本文方法在多投影环幕显示设备上实现了可视化系统实例。系统基于Unity游戏引擎实现,支持立体呈现Web、一般桌面程序和3D数据模型,并支持用户与其进行正确的交互。

5.2 实验环境

可视化系统实例的运行节点采用Intel i7 4790处理器,3.6 GHz,显卡NVIDIA GTX1060 3 GB,内存16 GB,Windows 7操作系统。运行可视化应用程序的多个远程服务器采用Intel i7 6700 2.6 GHz,显卡NVIDIA GTX1060 3 GB,内存16 GB,Windows 10系统。所有节点通过内部交换机相连。

5.3 渲染效果对比实验

本实验分别利用传统的3D画布渲染流程和兼容2D与3D显示的渲染流程对2D可视化结果画面进行渲染,可视化应用的内容分别为纯文本文字、纯图像,以及文本与图像皆有的真实可视化应用程序百度地图。实验将截取最终的系统渲染图像并进行对比。纯文本对比如图7(a)所示,纯图像对比如图7(b)所示,文本图像均有的对比如图7(c)所示。可以看出,本文提出的渲染流程有效提高了2D可视化结果画面的清晰度,相比于传统方法,用户可以更清楚地分辨画面中的信息。

(a) 纯文本对比效果

(b) 纯图像对比效果

(c) 文本与图像均具备的可视化结果画面对比效果图7 传统3D画布渲染流程(左列)与本文兼容 2D与3D显示的渲染流程(右列)显示效果对比

为了定量分析图像清晰度的效果,实验采用了三种经典的无参考图像质量测试方法,分别是Brenner梯度方法[10]、Tenengrad方法[11]以及SMD灰度方差[12]方法。所有测试图像的分辨率均为512×512。对于Brenner方法,图像清晰度C(g)计算如式(11)所示:

(11)

式中:g(x,y)代表图像在(x、y)点处像素的灰度值,灰度值取值为0~1,C值越大代表图像越清晰。测试结果如图8所示。

图8 Brenner方法测量的清晰度对比

对于Tenengrad方法,清晰度C(S)的计算如式(12)所示:

(12)

式中:Sx(x,y)和Sy(x,y)分别代表在(x,y)至(x+2,y+2)处的像素灰度值与Sobel水平方向算子ix和竖直方向算子iy的卷积。其中用于累加的卷积结果阈值取0,测试结果如图9所示。

图9 Tenengrad方法测量的清晰度对比

对于SMD方法,清晰度C(g)计算如式(13)所示:

|g(x,y)-g(x+1,y)|)

(13)

g(x,y)定义与Brenner方法一致。结果如图10所示。

图10 SMD灰度方差方法测量的清晰度对比

从上述数据可以看出,定量测量的图像清晰度与主观清晰度感觉一致,本文提出的渲染流程相比于传统的方法有效提升了显示图像的清晰度。同时对于信息密度较高的文本信息,清晰度提升的比率更为明显。特别地,由于清晰度的值随着像素间的变化程度不同而改变,所以实际测量的纯文本清晰度值为表中数值的10倍。为了使图表更加直观而做了数据缩小处理,但是并不影响分析的结果。

5.4 立体显示效果实验

实验主要目的是测试第3节中非3D可视化应用的凸显立体效果,如图11所示。可以看出,凸显状态符合透视关系以及左右眼的偏移规律,可以呈现良好的立体效果。

(a) 未凸显状态

(b) 凸显左眼画面 (c) 凸显右眼画面图11 凸显立体效果示意

5.5 交互坐标正确性实验

实验主要目的在于验证本文第4节提出的交互坐标计算方法的正确性。实验中我们令实验者站在不同的位置通过手柄移动交互的光标。使用者手柄的朝向与使用者眼睛到手柄的朝向一致。手柄光标为2D图标,在2D画布中渲染,照片中屏幕上的被黑色虚线框包围的圆点即为用户交互光标,如图12所示。可以看出,交互光标与用户的虚拟射线和屏幕的交点基本吻合,该计算方法的正确性得到了证实。

图12 光标位置计算测试示意图

6 结 语

面向虚拟现实多投影环幕设备提出了沉浸式可视化结果显示方法,该方法有效地解决了传统方法中显示模糊的问题,并支持正确的立体显示与交互,具有良好的使用价值。

猜你喜欢
清晰度投影可视化
新入职护士工作价值观、未来工作自我清晰度与心理弹性研究
自然资源可视化决策系统
全息? 全息投影? 傻傻分不清楚
投影向量问题
思维可视化
影响摄影图像清晰度的因素
基于知识图谱的我国短道速滑研究可视化分析
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
找投影