胡 亚,朱 军,李维炼,张昀昊,胡明远,曹振宇
1. 西南交通大学地球科学与环境工程学院,四川 成都 611756; 2. 西南交通大学高速铁路运营安全空间信息技术国家地方联合工程实验室,四川 成都 611756; 3. 香港中文大学太空与地球信息科学研究所,香港 999077; 4. 四川省基础地理信息中心,四川 成都 610041
洪水灾害是最普遍的自然灾害,会造成大量的人员伤亡与财产损失[1-2]。构建灾害虚拟地理环境对实现灾害知识的表达与共享,辅助进行洪水灾害模拟、分析、预测与规划决策具有十分重要的意义[3-4]。目前,在这方面已开展了大量的工作,如基于PC系统实现了洪水灾害的三维可视化[3-13];基于PC VR系统实现了洪水灾害的沉浸体验[14-15];基于多计算终端系统,如PC、笔记本、平板电脑、智能手机实现了洪水灾害的三维模拟与可视化分析[16]。
洪水灾害发生时间与地点通常具有不确定性,同时其应急响应要求具有实时性或近实时性[17],这对洪水灾害场景的沉浸感和移动性提出了更高要求,以支持空间异地分布的不同应急处置用户能够更快、更好地感知与认知灾害环境。而现有研究存在以下不足:①移动性不足,现有三维可视化大多侧重于PC系统或PC VR系统,移动性和便携性差,导致其应用局限于室内固定场所,不能及时地为异地分散的应急处置人员提供应急处理支持;②沉浸感不足,虽然有少量研究者利用移动设备进行洪水灾害可视化,但移动设备比如智能手机的屏幕显示尺寸较小,沉浸感差,导致用户难以高效地感知认知洪水灾害环境。
随着移动HMD(head mounted display)、智能手机及移动互联网的发展,移动VR逐渐进入人们的生活[18-19]。移动VR是指把智能手机放入移动HMD,然后人们通过头戴移动HMD来获得对虚拟环境的沉浸感体验。移动VR的出现为任何人在任何地方体验沉浸感的虚拟场景提供了可能,其具有移动性与沉浸感并存的特点[20]。将移动VR与洪水灾害场景三维可视化相结合,进行基于移动VR的洪水灾害场景三维可视化,有望解决现有的洪水灾害场景三维可视化中移动性和沉浸感不足的问题。
洪水灾害涉及空间范围大,其场景数据包含不同尺度的空间数据、专题数据和模拟分析数据等多种类型,数据量大;同时,移动VR对场景绘制帧率要求高,要求超过30帧,达到60帧或以上更理想[20-23]。但智能手机硬件性能较弱且各不相同,常规单一的三维场景数据组织与调度方法主要侧重PC端大规模场景[3-7]或移动端简单地形场景可视化[24-29],无法支持在性能各异的智能手机上进行移动VR场景高效渲染。此外,与游戏等领域的移动VR交互不同,GIS领域更注重灾害场景的漫游探索分析。由于要把智能手机放入移动HMD,这限制了常规的触摸场景交互,因此,凝视成为移动VR中主要的场景交互方式[20,30]。而现有交互研究仅实现了小范围场景中的对象选择[20,30],不能支持对洪水灾害场景的高效漫游探索与交互分析。针对上述挑战,本文将重点开展基于移动VR的洪水灾害场景构建优化与交互分析的研究。
在构建洪水灾害移动VR场景时,需要面对两个难题,第一是洪水灾害场景构建涉及数据量大,而智能手机的存储空间与处理能力有限;第二是应急情景下异地分散用户的手机类型与系统平台可能各不相同。因此,本文提出了一种免插件B/S架构下的移动VR场景构建方案,如图1所示。其中,针对第一个难题,洪水灾害场景数据的处理、组织与存储均在服务器端完成,避免在移动端存储大量数据及进行密集计算;针对第二个难题,通过采用免插件的B/S架构,用户不需要下载与安装特定的应用程序,使用移动端自带的浏览器就能进行洪水灾害场景的三维展示与交互探索分析。
1.2.1 多样化场景数据组织
洪水灾害三维场景通常包括地形模型、洪水模型、房屋与道路等专题模型。构建多细节层次(level of detail,LOD)模型是实现场景高效绘制的关键所在。相对PC机而言,智能手机性能普遍较差、屏幕较小,因此,传统面向PC机的单一场景数据组织方法不再适用。相比PC机大尺寸显示屏幕,智能手机屏幕尺寸较小,在视点相同情况下,采用同样的屏幕像素控制误差,智能手机采用更低级LOD模型也能达到较好的视觉效果;同时,不同智能手机的性能差异也很大,也需要更多样化的场景数据组织,以适应不同手机性能。例如,在构建洪水灾害VR场景地形模型时,常规方法是每个层次影像瓦片模型采用单一瓦片尺寸(如256×256像素),难以适应性能差异化显著的各用户终端,因此,同一层次影像瓦片模型需采用更多瓦片尺寸(如16×16、32×32、64×64、128×128)生成;同理,洪水模型、房屋等专题模型也一样,需要建立更多细节层次模型,以提高对复杂环境的适应性。
图1 基于B/S架构的免插件移动VR方案Fig.1 A plugin-free mobile VR scheme based on B/S architecture
1.2.2 场景数据量控制策略
提高网络传输速度和场景绘制效率的关键是控制场景的数据量。由于智能手机性能较弱,要保持较高的绘制帧率必须要降低场景的数据量。另外,智能手机屏幕尺寸较小,适当减少场景数据量也能达到较好的可视化效果。因此,可以在视点相同的情况下,降低模型的LOD级别来减少场景数据量。对于房屋等离散模型来说较为简单,直接降低其LOD级别即可;但对于连续地形模型就稍显复杂,可通过降低可加载的最大瓦片层级和加载更小尺寸的瓦片这2种策略来实现。
(1) 降低可加载的最大瓦片层级。对于某一瓦片尺寸的影像或DEM金字塔模型,假如当前加载的最大层级为Lmax(比如17),可以把允许加载的最大层级设置为L,L=Lmax-i(i=1,2,3,…,i≤Lmax-Lmin),上式中的Lmin为该瓦片金字塔模型的最低层级。
(2) 加载更小尺寸的瓦片。假如当前加载的影像或DEM金字塔模型的瓦片尺寸为N,加载的最大层级为M,可以考虑加载尺寸为S的瓦片,S=N/2i(i=1,2,3,…),同时允许加载的最大层级也限定为M。
1.2.3 移动VR场景自适应调度
顾及不同智能手机性能及运行环境的差异性,提出了移动VR场景自适应调度方法,以支持在动态复杂环境下场景的高效绘制。其基本思路为:在智能手机上进行场景绘制帧率实时监测,进行动态分析来寻求调度合适的LOD模型,即在帧率较高时可以提高场景模型LOD级别来提升可视化效果,在帧率较低时可降低LOD级别来提高场景绘制效率,达到可视化效率与可视化效果的平衡。各类场景对象的自适应调度策略如表1 所示。
表1 场景自适应调度策略
与小范围移动VR场景的对象选择、用户移动等简单交互方式不同[19-20,30-31],洪水灾害移动VR场景还需要高效的漫游探索与交互分析,其交互分析模式设计如图2所示。下面重点对基于凝视的场景漫游探索、洪水灾害信息交互查询的实现方法进行介绍。
图2 移动VR中洪水灾害场景交互探索方式设计Fig.2 Design of interaction ways for flood disaster scenes based on mobile VR
1.3.1 基于凝视的场景漫游探索
移动VR场景中只能通过凝视虚拟按钮对象实现场景的漫游探索。与视频播放等大部分移动VR应用中的相机视点位置固定不同,洪水灾害三维场景中的相机视点位置需要不受限制地改变以对场景进行平移、旋转与缩放,从而使用户快速感知与认知洪水灾害的宏观与微观信息,这使得用户在场景里面经常看不到这些位置固定的按钮,从而无法进行场景的漫游探索。为了解决上述问题,本文提出了一种用于移动VR的交互菜单动态构建方法,即在与用户视线相垂直的某一平面内(比如该平面距离视点50 m远),动态创建各种虚拟按钮对象,然后用户通过凝视它们实现场景的漫游探索;当场景发生漫游探索之后,需要在与用户新视线相垂直的某一平面内,重新动态创建这些按钮对象,供用户继续凝视。
该方法的原理为:①在相机坐标系中垂直于负Z轴的某一平面(该平面即垂直于用户视线,记为A平面)内指定各按钮对象各个节点及中心点的相机坐标;②对各按钮对象各个节点及中心点的相机坐标,利用相机的视图变换的逆变换来求取这些节点及中心点在世界坐标系中的坐标,并用这些节点的世界坐标来创建三维场景中的按钮对象;③当用户处于凝视状态时,计算用户视线方向与A平面的交点,利用该交点及各个按钮对象中心点的世界坐标来判断用户凝视的是哪个按钮对象,从而触发相应的按钮对象功能,实现场景的漫游探索。采用这种方法,能够最大限度地方便用户进行凝视,从而实现场景的有效漫游探索。基于凝视的场景漫游探索流程设计如图3所示。
图3 基于凝视的场景漫游探索流程设计Fig.3 Design of scene roaming exploration process based on gaze
1.3.2 基于凝视的洪水灾害信息交互查询
洪水灾害信息交互查询指的是在洪水模型模拟结果的基础上,查询重要地方(比如医院)或重要路段的洪水信息,比如淹没时长、最大水深等。基于凝视的洪水灾害信息交互查询分析设计如图4 所示。
图4 基于凝视的洪水灾害信息交互查询设计 Fig.4 Design of interactive flood information query based on gaze
首先,判断用户是否处于凝视状态;如果是,需要判断用户视线是否与场景相交;如果相交,需要以交点为中心,查询一定范围内的房屋或道路;如果有房屋或道路存在,则显示离交点最近的房屋或道路的洪水灾害信息。
2.1.1 试验数据
试验区域原始影像数据的分辨率为1 m,原始DEM数据的分辨率为10 m。由于影像相对DEM,数据量更大、分辨率更高,所以本文仅对影像数据进行多样化表达,如表2所示。
针对洪水演进模拟模型,提供了4种不同细节层次表达,分别为LOD0,LOD1,LOD2,LOD3。LOD0为最精细表达,LOD3为最简化表达,洪水表面模型的表达形式及LOD模型的产生请参见文献[14]。房屋信息以JSON文件形式提供,包括房屋的边界以及高度,为房屋体块模型产生提供数据支持。
表2 试验使用的影像瓦片信息
2.1.2 试验环境
试验选择的移动HMD为暴风魔镜CC,网络环境为10 Mbps带宽的无线WIFI。试验平台分别选择在Android和iOS智能手机的Chrome浏览器上运行,两部手机的信息如表3所示:
表3 试验使用的智能手机信息
试验平台采用Node.js v6.11.2建立网络服务器,该服务器存储多瓦片尺寸的地形模型、多细节层次的洪水演进模拟模型、房屋模型。试验平台浏览器端采用HTML5、JavaScript、Cesium开源框架(支持立体渲染)进行开发实现。本次试验选择在一个溃坝洪水区域进行[6],试验平台可以在Chrome、Firefox等主流浏览器上运行,从而实现在智能手机上对灾害场景进行沉浸式展示与交互探索分析。图5显示了其在智能手机上的Chrome运行效果以及使用移动VR时的情形。
2.3.1 试验方法
为了验证前述的场景构建优化方法,本文选择在上述两部智能手机上进行沿着某一线路飞行的场景漫游,以测试场景在加载不同数据情形下,这些数据对场景绘制帧率的影响。线路走向与洪水演进方向一致,线路高程为800 m,离地面的高度在50 m到200 m之间,以保证飞行时加载的场景瓦片级数可以达到允许加载的最大瓦片层级,飞行时间为120 s。
图5 试验平台在智能手机上的运行截图以及使用移动VR时的情形(右下角)Fig.5 Screenshot of the test platform on a smartphone and the situation of using mobile VR (lower right corner)
2.3.2 试验结果
本文分别测试了:房屋模型与洪水演进模型对场景的绘制帧率影响、降低可加载的最大瓦片层级对场景的绘制帧率影响、加载不同尺寸的瓦片对场景的绘制帧率影响,测试结果分别如图6、图7、图8所示。
图6 房屋模型与洪水演进模型对场景的绘制帧率影响测试Fig.6 Tests of the influence of house models and flood routing models on the rendering frame rate
图8 加载不同尺寸的影像瓦片对场景的绘制帧率影响测试Fig.8 Tests of the influence of the loading image tiles of various tile sizes on the rendering frame rate
图6中的A曲线代表场景中有体块房屋模型、最精细的LOD0级洪水演进模型、地形模型;B曲线代表场景中只有最精细的LOD0级洪水演进模型、地形模型,即场景中没有房屋体块模型;C曲线代表场景中有房屋模型、最简化的LOD3级洪水演进模型、地形模型。从图6可以看出,无论在安卓手机还是苹果手机上,曲线A与曲线B基本一致,这表明房屋体块模型对场景的帧率基本上无影响;曲线C代表的帧率比曲线A更高,尤其是在漫游测试的后半段,这表面加载更简化的洪水演进模型能够提高场景绘制帧率。至于在漫游的后半段帧率明显增加的原因,可能是由于漫游路径后半段所经过的洪水淹没区域范围更大所导致。
图7中的A曲线代表场景中可加载的影像瓦片(瓦片大小为256×256像素)的最大层级为17级,DEM瓦片的最大层级为15级;B曲线代表场景中可加载的影像瓦片(瓦片大小为256×256像素)的最大层级为15级,DEM瓦片的最大层级为15级;C曲线代表场景中可加载的影像瓦片(瓦片大小为256×256像素)的最大层级为17级,DEM瓦片的最大层级为13级。从图7中可以看出,无论在安卓手机还是苹果手机上,曲线B和C所代表的帧率都比曲线A所代表的帧率高,这表明降低可加载的最大瓦片层级对场景绘制帧率的提升十分有用。曲线B所代表的帧率比曲线C所代表的帧率略高,这表明降低可加载影像瓦片的最大层级比降低可加载DEM瓦片的最大层级效果更为明显。
图8中的5条曲线分别代表场景加载的影像瓦片的尺寸为64、128、256、512、1024。从图8可以看出,常规的256影像瓦片尺寸所对应的场景绘制帧率大都在30帧以上,基本能满足移动VR对场景绘制帧率的要求,但是它的帧率变化幅度较大。而采用128、64的瓦片尺寸,不仅能够大幅提高场景的帧率,其帧率的变化幅度也较小,这说明通过加载更低尺寸的瓦片确实能够显著改善场景的帧率;相反,加载更大尺寸的瓦片,比如512或1024,其场景帧率较低,尤其是在Android设备上,大部分帧率都处于30帧以下。
以上的一系列试验表明,加载更简化的洪水演进模型、降低可加载的最大瓦片层级、加载更小尺寸的瓦片都能够有效提高场景绘制帧率,从而满足移动VR对洪水灾害三维场景绘制的高帧率要求。这些研究结果表明本文所提出的移动VR洪水灾害场景构建优化方法是可行的。
为了验证本文场景交互方法在支持大范围洪水灾害三维场景的探索与分析能力,本节开展基于凝视的场景漫游探索、洪水演进模拟分析、洪水灾害信息交互查询试验,以证明本文方法的有效性与可行性。
2.4.1 场景漫游探索
图9、图10、图11显示了要进行场景漫游探索,用户会看到的一些关键场景。当用户戴上移动HMD后,低头到一定角度,会看到Open按钮出现,立体渲染如图9所示。图9中在Open按钮上方的点代表用户视线上的某一点,当用户凝视Open按钮时(凝视效果如图10所示),会出现如图11所示的场景探索菜单,用户只需要凝视相应的菜单项,就会实现相应的场景漫游探索,比如放大、缩小、旋转场景。
图9 用户低头到一定角度Open按钮出现Fig.9 Open button appears when a user heads down to a certain angle
图10 用户凝视Open按钮Fig.10 A user is gazing at the Open button
图11 场景探索菜单Fig.11 The scene roaming exploration menu
2.4.2 洪水演进模拟分析
图12、图13显示了洪水演进模拟分析中的一些场景。当用户凝视场景探索菜单上面的“Simulation”菜单项时,会出现如图12所示的洪水演进模拟分析菜单。图13显示了正在演进中的洪水模拟分析效果。
图12 洪水演进模拟分析菜单Fig.12 Flood routing simulation analysis menu
图13 洪水演进模拟分析Fig.13 Simulation analysis of flood routing
2.4.3 洪水灾害信息交互查询
图14、图15显示了洪水灾害信息交互查询中的一些场景。当用户凝视场景探索菜单上面的“FloodInfo”菜单项时,场景探索菜单会消失,然后用户凝视场景中的某一房屋(凝视效果如图14所示),系统会显示该房屋周围的洪水信息,如图15 所示:被凝视的房屋会变成深色,在房屋的上方显示了该房屋会被洪水淹没超过30个小时等洪水信息。
上述试验表明,本文提出的场景交互方法能够有效地实现基于移动VR的大范围洪水灾害三维场景漫游探索、洪水灾害模拟分析与查询,有助于用户更好地感知与认知洪水灾害环境。
针对采用移动VR进行洪水灾害场景三维可视化存在的挑战,本文提出了一种移动VR洪水灾害场景构建优化与交互方法。该方法通过在免插件的B/S架构下进行多样化场景数据组织、场景数据量优化控制及自适应调度,有效提高了场景绘制帧率,从而满足移动VR对洪水灾害三维场景绘制的高帧率要求;通过设计并实现基于凝视的洪水灾害场景漫游探索、信息交互查询等模式,为洪水灾害移动VR场景的高效漫游探索与交互分析提供了支撑。虽然本文主要围绕洪水灾害开展移动VR场景构建优化研究,但其中一些关键技术与方法也具有较好的通用性,未来可扩展到更多应用场景。此外,移动VR场景中的探索交互模式也还有待于进一步研究完善,以为灾害应急处置提供更加实用的技术方法支撑。
图14 用户凝视某一房屋Fig.14 A user is gazing at a house
图15 房屋周围洪水信息Fig.15 Flood information around the house