留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

面向大规模滑坡灾害模拟的地形建模与三维可视化

吕奕杰 叶健 徐清杨 徐中卫 孙琦寒 程烨

吕奕杰, 叶健, 徐清杨, 徐中卫, 孙琦寒, 程烨. 面向大规模滑坡灾害模拟的地形建模与三维可视化[J]. 武汉大学学报 ● 信息科学版, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
引用本文: 吕奕杰, 叶健, 徐清杨, 徐中卫, 孙琦寒, 程烨. 面向大规模滑坡灾害模拟的地形建模与三维可视化[J]. 武汉大学学报 ● 信息科学版, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
LÜ Yijie, YE Jian, XU Qingyang, XU Zhongwei, SUN Qihan, CHENG Ye. A Large-Scale Landslide Hazard Simulation-Oriented 3D Terrain Modeling and Rendering Approach[J]. Geomatics and Information Science of Wuhan University, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
Citation: LÜ Yijie, YE Jian, XU Qingyang, XU Zhongwei, SUN Qihan, CHENG Ye. A Large-Scale Landslide Hazard Simulation-Oriented 3D Terrain Modeling and Rendering Approach[J]. Geomatics and Information Science of Wuhan University, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486

面向大规模滑坡灾害模拟的地形建模与三维可视化

doi: 10.13203/j.whugis20180486
基金项目: 

国家自然科学基金 41771419

中央高校基本科研业务费专项资金 A0920502051619-91

详细信息
    作者简介:

    吕奕杰, 硕士生, 主要从事地质灾害模拟与并行计算方面的研究。2442842392@qq.com

    通讯作者: 叶健, 博士, 讲师。yejian518@swjtu.edu.cn
  • 中图分类号: P208

A Large-Scale Landslide Hazard Simulation-Oriented 3D Terrain Modeling and Rendering Approach

Funds: 

The National Natural Science Foundation of China 41771419

the Fundamental Research Funds for the Central Universities A0920502051619-91

More Information
    Author Bio:

    LÜ Yijie, postgraduate, specializes in geological hazard simulation and parallel computing. E-mail: 2442842392@qq.com

    Corresponding author: YE Jian, PhD, lecturer. E-mail: yejian518@swjtu.edu.cn
图(7) / 表(1)
计量
  • 文章访问数:  1516
  • HTML全文浏览量:  212
  • PDF下载量:  238
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-12-16
  • 刊出日期:  2020-03-05

面向大规模滑坡灾害模拟的地形建模与三维可视化

doi: 10.13203/j.whugis20180486
    基金项目:

    国家自然科学基金 41771419

    中央高校基本科研业务费专项资金 A0920502051619-91

    作者简介:

    吕奕杰, 硕士生, 主要从事地质灾害模拟与并行计算方面的研究。2442842392@qq.com

    通讯作者: 叶健, 博士, 讲师。yejian518@swjtu.edu.cn
  • 中图分类号: P208

摘要: 针对大规模滑坡灾害模拟时滑坡模拟计算和大规模地形渲染导致内存消耗大、难以实现大规模滑坡地形数据渲染的问题,提出了一种四叉树多分辨率地形渲染方法。考虑到大规模滑坡地形数据的海量性,分层分块组织地形数据,构建地形块线性四叉树索引;并结合提出的地形节点查找方法动态查找和调度地形数据,建立节点细分评价体系和地形接边算法,提出了四叉树多分辨率地形渲染优化算法。实验结果表明,利用所提出的大规模滑坡地形渲染算法,合理调度三维场景数据,满足了大规模滑坡地形数据渲染要求,也实现了大规模地形高保真度表达,为大规模滑坡模拟奠定基础。

English Abstract

吕奕杰, 叶健, 徐清杨, 徐中卫, 孙琦寒, 程烨. 面向大规模滑坡灾害模拟的地形建模与三维可视化[J]. 武汉大学学报 ● 信息科学版, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
引用本文: 吕奕杰, 叶健, 徐清杨, 徐中卫, 孙琦寒, 程烨. 面向大规模滑坡灾害模拟的地形建模与三维可视化[J]. 武汉大学学报 ● 信息科学版, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
LÜ Yijie, YE Jian, XU Qingyang, XU Zhongwei, SUN Qihan, CHENG Ye. A Large-Scale Landslide Hazard Simulation-Oriented 3D Terrain Modeling and Rendering Approach[J]. Geomatics and Information Science of Wuhan University, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
Citation: LÜ Yijie, YE Jian, XU Qingyang, XU Zhongwei, SUN Qihan, CHENG Ye. A Large-Scale Landslide Hazard Simulation-Oriented 3D Terrain Modeling and Rendering Approach[J]. Geomatics and Information Science of Wuhan University, 2020, 45(3): 467-474. doi: 10.13203/j.whugis20180486
  • 2017年6月24日,中国四川省茂县叠溪镇新磨村新村组发生特大滑坡灾害,造成10人死亡、73人失踪,还造成64户民房被淹、约2 km河道被堵塞、12 km道路被掩埋。在中国,近60 a来由滑坡引起的死亡人数超过25 000人,平均每年超过400人,而且平均每年的经济损失大约为5 000万美元。当前, 滑坡灾害防治已刻不容缓。

    滑坡是重力驱动的地质灾害[1],自然界中的滑坡灾害发生在复杂不规则地形中[2], 复杂不规则地形与滑坡的交互作用是提高滑坡模拟准确程度的重要研究内容[3-4]。复杂地形环境下模拟滑坡灾害动态过程[5]、分析滑坡灾害[6]及淤埋范围[7]已成为当前滑坡灾害防治减灾的重要手段。

    由于滑坡灾害三维可视化具有多源信息融合、交互式的特点,可以直观、真实地再现滑坡灾害场景[8],能够为滑坡灾害评估提供最直接的参考, 已成为滑坡灾害防治减灾的重要补充[9]。然而大规模滑坡堆积速度快、范围广,已知地球上高速远程滑坡的最大速度为278 m/s,最大水平滑距是最大垂直落差的30倍甚至更大,滑程可达几km、十几km、、几十km、甚至上百km[10-12]。利用三维可视化方法模拟滑坡动态过程,滑坡模拟计算与大规模地形渲染常常是相分离的,即利用滑坡力学模型计算滑坡模拟单元[13],利用虚拟现实技术绘制滑坡灾害三维可视化场景[14]。然而,大规模滑坡地形数据既包括参与滑坡力学计算的滑坡灾害区域地形数据, 也包括不参与任何滑坡模拟计算的普通地形数据,即在全域范围内地形可视化的同时,还存在局部滑坡演进过程的力学模拟计算。若直接将所有地形数据调入内存势必会影响滑坡模拟计算的效率,而不参与力学计算的普通地形数据则没必要调入内存参与滑坡模拟计算。因此,可仅保留参与力学计算的滑坡灾害地形数据并调入内存[14],用于滑坡模拟计算,这样可提升滑坡模拟计算的效率。此外,大规模地形渲染同样需要高效的绘制效率,如果直接将大规模复杂地形数据直接调入内存,地形数据不仅难以渲染,难以完成地形数据的三维可视化,而且也难以实现复杂地形环境下的滑坡灾害动态模拟过程。

    层次细节(levels of detail,LOD)技术是解决以上滑坡地形渲染问题的有效途径,该方法通过减少调入内存的数据量,在提升渲染效率的同时增强大规模滑坡灾害模拟效率,即通过不同分辨率的地形模型表示地形, 在离视点近的地方采用细节程度较高的地形模型, 在离视点远的地方采用比较粗糙的细节模型。这样既符合了人的视觉原理,又达到了减少数据量的目的,同时也保证了滑坡模拟计算的要求。具有代表性的LOD算法有实时优化自适应网格(real-time optimal adaptive meshes, ROAM)算法[15]、递进网格(progressive meshes, PM)算法[16]、状态无关单通过自适应细化(stateless one-pass adaptive refinement, SOAR)算法[17]以及基于四叉树的LOD算法。其中,基于四叉树的LOD算法最初由文献[18]提出,该方法采用四叉树结构描述地形瓦片,自顶向下递归建立整个地形高度场。为了提升可视化效果以及地形数据动态调度的效能,该算法被不断地改进与优化[19-23],能够满足大规模滑坡地形渲染的要求。然而,如果相邻地形块在重叠边上的顶点数目不同,则会出现裂缝[22];另外,传统的基于四叉树的LOD算法需要不断判断和调用地形数据文件,频繁地打开、遍历和关闭地形数据,导致计算机执行效率大大降低。

    针对以上问题,本文采用基于四叉树的LOD算法对大规模滑坡地形数据进行组织和管理,利用不同分辨率滑坡地形数据的分批调入和组合显示,采用四叉树多分辨率地形渲染优化算法解决将大规模滑坡地形数据全部调入内存导致程序无法正常运行的问题,实现了大规模滑坡地形数据的三维可视化和快速漫游。

    • 为了查找地形节点,本文提出计算当前地形节点的下一层节点${N_i}\left({i = 1, 2, 3, 4} \right)$的公式为:

      $$\begin{array}{l} \;\;\;\;\;\;\;\;\;{N_i} = 2N + \left| {{\rm{cos}}\left( {\frac{{\rm{ \mathsf{ π} }}}{2}i} \right)} \right| + \\ \left[ {{\rm{int}}\left( {\frac{N}{{{2^L}}}} \right) - \frac{{\sqrt[{}]{2}}}{2}{\rm{sin}}\left( {\frac{{\rm{ \mathsf{ π} }}}{2}i - \frac{{\rm{ \mathsf{ π} }}}{4}} \right) + \frac{1}{2}} \right]{2^{L + 1}} \end{array}$$ (1)

      式中,N为当前地形节点;L为节点的层级值;int为向下取整函数。

      利用该方法可完成对所有地形节点的查找,保证后续地形节点数据的正确调度。

      针对大规模滑坡地形数据的海量性,本文采用金字塔模型对数字高程模型(digital elevation model,DEM)数据及其对应的影像数据进行管理和组织,进行分层、分块处理,将分割后的地形数据按金字塔型四叉树的结构进行组织(如图 1所示)。为此,首先将整个滑坡地形区域构造为一颗四叉树,以每一个地形数据块作为一个四叉树节点(以下称为地形节点),然后从四叉树根节点开始,每一个节点都不断递归细分产生下一个层次的4个子节点,直到达到原始滑坡地形数据的最高分辨率为止。

      图  1  多尺度地形金字塔

      Figure 1.  Tiled Pyramid Example with Different Resolution Levels

      另外,本文需要根据视点与地形节点的距离等因素来对不同层级、不同地形节点进行调用,以达到简化地形的目的。因此,在滑坡地形数据的组织过程中需要为每个地形节点建立相应的索引,以确保后面节点调度工作高效、有序地实施。

      本文以每个地形节点的文件名作为索引,如图 2所示,在塔型四叉树递归细分的过程中,对于每一个地形层级,地形节点的文件名都依据当前层级的地形块数n,从0开始至n-1的位置依次命名。

      图  2  地形节点索引

      Figure 2.  Terrain Block Quadtree Index

    • 滑坡地形数据的调度主要由两方面的内容来决定:(1)地形数据的细分程度;(2)地形数据的取舍。在由滑坡地形数据所构成的塔型四叉树结构中,每一个地形数据块就是一个四叉树节点。当每次进行场景绘制之前,需要对这些地形节点进行遍历,并根据设定条件来判断这些节点是否需要细分,由此决定需要调度的对象,使得多分辨率滑坡地形数据仅有部分调入内存,以此来达到简化地形的目的。因此需要建立一个节点细分评价体系,并由这个评价体系来判断地形节点的细分程度[20, 24-25]。该评价体系需要考虑两个方面的影响因素。

      首先是地形本身的特性。对于平坦的地形,用过多的数据顶点去描绘是没有意义的;而对于陡峭的地形,只有用大量的数据顶点去描绘才能再现其真实的面貌[26]。因此,本文引入一个地形本身粗糙程度的概念[27]。粗糙度值越大,说明地形越陡峭,需要用较高的分辨率渲染;粗糙度值越小,说明地形越平坦,用较低的分辨率渲染即可。

      对于粗糙度值的数学表示,如图 3所示。图 3中,∆h1、∆h2、∆h3和∆h4分别为各自所在地形节点边的中点处高程值与边界端点处高程值的平均值之差;;∆h5、∆h6同理,对应的边为对角线。为度量地形节点的粗糙程度,构造了粗糙度值R

      $$ R = \frac{{{\rm{max}}\left( {\Delta {h_1}, \Delta {h_2} \cdots \Delta {h_6}} \right)}}{D} $$ (2)

      图  3  地形粗糙度

      Figure 3.  Terrain Roughness

      式中,D为地形节点的边长。

      此外,本文还构建了两个节点细分评价公式,一个基于粗糙度,一个基于视点距离。基于粗糙度的评价公式为:

      $$\frac{1}{R} < {C_1}$$ (3)

      式中,R为粗糙度值;C1为粗糙度调节因子。

      对于同一个地形节点来说,R不变,根据式(3),C1越大,该式就越容易满足,地形节点的细分程度也就越高,地形越接近真实地形。

      其次,除了地形本身的特性外,视点到地形节点中心的距离也是节点细分评价体系需要考虑的因素。将距离视点近的地形用较多的数据顶点描绘,而距离视点远的地形则用较少的数据顶点描绘,这样既能模拟人类视觉效果,又能达到简化地形的目的[28]。基于视点距离的评价公式为:

      $$\frac{L}{D} < {C_2}$$ (4)

      式中,L为视点到地形节点中心的距离;C2为距离调节因子。

      对于同一个地形节点,D不变,根据式(4),由于C2是常数,则L越大,该式就越难以满足,地形节点的细分程度也就越低,地形则用越低的分辨率来渲染。

      最后将两个节点细分评价公式进行合成,得到如下所示的节点细分综合评价公式,用于对节点细分与否作出判断:

      $$f = \frac{L}{{DR{C_1}{C_2}}} < 1$$ (5)

      式中,f是节点细分综合评价值。

      对于地形数据的取舍,本文在每次绘制地形节点前,都对节点进行了视景体裁剪,仅保留处于视景体内部的节点,而舍弃位于视景体外部的节点,并由此判断需要调度的节点对象。这样能够有效减少节点的调用和绘制数量,从而达到提升程序运行速度和简化地形的目的。

      另外,由于地形节点本身的不规则性和复杂性,本文通过“包围盒”法[29]来判断节点是否在视景体内。具体方法是:为每一个地形节点都生成了一个以该节点的4个顶点和最大、最小高程值作为包围体顶点三维坐标的长方体“包围盒”,只要节点“包围盒”在视景体内,该节点便是可见的,否则便是不可见的,以此作为节点取舍的判断依据。由于“包围盒”肯定大于其所度量的地形节点,因此可以保证没有任何一个在视景体内可见的节点被舍弃掉。

    • 按照传统的基于四叉树的LOD算法,显示器每显示一帧画面,程序都需要不断地进行判断和地形数据文件的调用。由于地形数据量过于庞大,致使程序需要重复执行大量的地形数据文件调用工作,该调用过程包括文件的打开、遍历与关闭。正是大量的文件调用过程使得程序运行速度大大降低。

      对于此问题,本文提出了以下算法对传统的基于四叉树的LOD算法进行了优化:为地形节点的每个层级都创建一个对应的存储队列,在程序运行过程中,将所有读取过的地形节点数据都存入其所在层级对应的存储队列中,当下次出现需要调用的地形节点数据是曾经读取过的地形节点数据的情况时,则直接从所需调用的地形节点所在层级对应的存储队列中取出该地形节点的数据即可。优化的基于四叉树的LOD算法思想如图 4所示。

      图  4  四叉树多分辨率地形渲染优化算法示意图

      Figure 4.  Multiresolution Terrain Rendering Optimization Algorithm Based on Quadtree Method

      1)创建两条处理队列(处理队列1用于存放正在处理的当前层级的地形节点,处理队列2用于存放待处理的下一个层级的地形节点)以及N条存储队列(N等于总的分层数量,存储队列x用于存储已读取过的第x层级的地形节点数据($0 \le x \le N - 1$))。

      2)采用广度优先遍历四叉树的原则从根节点开始对四叉树进行遍历。在遍历四叉树时,先将四叉树的节点送入处理队列1,并判断该节点所在层级对应的存储队列x中是否存有该节点的数据。若存有数据,则从存储队列x中取出该节点的数据;否则,则读取该节点的数据文件,并将读取的节点数据存入存储队列x中,供下次使用。

      3)判断该节点在视景体内是否可见。若是不可见的,则直接出队列,不予以处理。若是可见的,则使用节点细分评价体系判断该节点是否需要细分,若不需要细分,则将该节点直接送入应用程序编程接口(application programming interface, API)进行渲染;若需要细分,则将该节点出列,进行细分,并将该节点细分产生的下一个层级的4个子节点送入处理队列2,等待下一轮的处理。

      4)当程序运行到处理队列1为空时,说明某一个层级的所有节点均已处理完毕,则交换处理队列1和处理队列2中的节点,并重复如上处理步骤,直到所有需要处理的节点均已处理完毕为止。对于那些分辨率达到最高(层级最高)且在视景体内可见的节点,则直接送入API进行渲染。

      利用以上算法可避免重复执行大量的地形数据文件调用工作,使得地形数据的调度和渲染更加高效。

    • 如果相邻地形节点的层级不同,则相邻地形块在邻接边上的顶点数目便不同,最终造成在它们的拼接处会产生裂缝[30]。裂缝的产生极大地影响了滑坡地形三维可视化渲染的效果(如图 5所示),因此还需要对裂缝进行消除工作。

      图  5  滑坡地形表面裂缝(裂缝消除前)

      Figure 5.  A Quadtree-Based Terrain Surface(Before Eliminating Cracks)

      图 6列出了几种常用的裂缝消除算法。对于如图 6(a)所示的裂缝,本文采用跳点法[29]消除地形节点间裂缝。其方法如图 6(b)所示,就是当两个相邻的不同层级的地形节点拼接时,层级高的节点位于拼接处的边界少绘制一部分顶点,以此来达到消除裂缝的效果。

      图  6  几种常用的裂缝消除算法

      Figure 6.  Several Common Algorithms to Solve Cracking Problem Between Different Detail Levels

      与当前较为常用的加点法[31](如图 6(c)所示)、裙边法[32](如图 6(d)所示)相比,跳点法比加点法具有更少的顶点绘制数量,程序运行速度有所提高;跳点法比裙边法具有更流畅的视觉效果,地形仿真效果更好。由于滑坡地形三维可视化表达既要符合三维可视化效果,同时又对地形渲染效率有较高的要求,因此跳点法成为本文消除裂缝的首选方法。

      本文采用广度优先遍历四叉树实现跳点法,即将每一个遍历到的四叉树节点根据东、南、西、北4个方向与之层级相同的节点的存在情况记录在了该四叉树节点的一个长度为4的一维数组中。若存在,则记录为1;若不存在,则记录为0。在节点送入API进行渲染的过程中,哪一个方向的同级节点不存在,则处于这个方向上且位于边界的顶点按照跳点法的形式少绘制一部分,以此来达到消除裂缝的目的。

    • 根据优化的基于四叉树的LOD算法,本文搭建了四川省茂县滑坡区域大规模地形场景漫游演示系统。

      测试平台参数为:处理器为英特尔Core i5-5200u @ 2.20 GHz双核,主硬盘为希捷ST500LX012-1LM162-SSHD(500 GB / 5 400转/min),内存为8 GB(金士顿DDR3L 1 600 MHz),显卡为英特尔HD Graphics 5500(128 MB /戴尔),操作系统为Windows 8.1。

      图 7为四川省茂县滑坡区域地形地貌三维可视化效果图。

      图  7  四川茂县滑坡区域地形地貌三维可视化

      Figure 7.  Real-Time Rendered 3D Scenery of Landslide in Maoxian County, Sichuan Province

      本文对茂县滑坡区域地形地貌三维可视化的两个关键参数(实时渲染三角形数量和渲染速度)进行了测试,并将测试结果与未经优化的传统基于四叉树的LOD算法的测试结果进行对比,结果如表 1所示。

      表 1  不同算法性能对比

      Table 1.  Performance Comparison of Different Algorithm

      本文基于四叉树的LOD算法 传统基于四叉树的LOD算法
      实时渲染三角形数量/个 渲染速度
      /(帧∙s-1
      实时渲染三角形数量/个 渲染速度
      /(帧∙s-1
      161 792 22.30 147 456 3.25
      190 464 19.55 129 024 2.73
      151 552 23.16 141 312 3.12
      69 632 43.80 24 576 3.88
      81 920 38.67 180 224 2.54
      73 728 37.51 79 872 3.57
      102 400 30.72 90 112 3.38
      133 120 26.92 151 552 2.64
      40 960 65.50 43 008 3.64
      98 304 32.10 55 296 3.52

      表 1可以得出如下测试结果:

      1) 本文算法的渲染速度维持在19~66帧/s之间,满足大规模滑坡地形三维可视化的要求。

      2) 本文算法的实时渲染三角形数量大部分维持在50 000~150 000之间,三角形渲染数量比较稳定。

      3) 本文算法相比于传统算法,在实时渲染三角形数量大致相同的情况下,渲染速度明显更优,说明本文算法是行之有效的。

      由以上测试结果可知,本文所搭建的演示系统在应用了经优化后的基于四叉树的LOD算法后,场景中实时渲染三角形数量较为稳定,场景渲染速度得到大幅提升,满足大规模滑坡地形场景流畅漫游的需要。

    • 目前,复杂地形环境下的滑坡灾害动态过程模拟已成为滑坡灾害防治减灾的重要手段。由于地形为滑坡模拟的边界,考虑到大规模滑坡堆积速度快、范围广,若直接利用传统方法将大规模滑坡地形数据调入内存进行渲染,将无法保证大规模滑坡模拟的效果。因此,本文提出了一种面向大规模滑坡模拟的地形数据组织和调度方法。在算法的实现上,提出了地形节点查找方法来动态调度地形数据,同时还提出了基于四叉树的多分辨率地形渲染优化算法,建立四叉树索引,消除地形接边裂缝,实现了基于四叉树的多分辨率地形金字塔模型。研究结果表明,利用本文提出的四叉树多分辨率滑坡地形建模和可视化方法,可将需要渲染的地形三角网数量控制在稳定的范围内,不仅保证了大规模滑坡地形数据的渲染需求,同时还能实现滑坡地形的高保真度表达,为大规模滑坡模拟创造条件。

参考文献 (32)

目录

    /

    返回文章
    返回