卜晓励,张天羽,房昱纬,鄢 文,汤 华,倪洪亮
(1.云南省交通规划设计研究院有限公司, 云南 昆明 650011;2.中国科学院 武汉岩土力学研究所岩土力学与工程国家重点实验室, 湖北 武汉 430071;3.中国科学院大学, 北京 100049)
90年代初,随着计算机图形学和三维可视化技术的高速发展,三维地质模型的可视化技术与分析成为地质、岩土、资源、环境和GIS等领域的研究热点。三维地质模型的可视化技术是利用计算机图形学,将场地内地质信息以直观三维图像方式展现,并通过计算机技术对其进行分析,便于人们了解场地内的地质现象,和对工程建设做指导[1-6]。
三维地质模型的可视化空间数据模型构建方法可以分为面模型、体模型、混合模型三大类[7-8]。其中面模型是使用面元描述三维空间对象的表面,描述地质体的轮廓。面模型构建速度快,显示和数据更新方便,但是没有对三维空间对象的内部属性进行记录和表示,不便于对三维空间对象进行分析。
基于混合模型的三维地质模型构建方法结合面模型和体模型的优点,能更好的对场地三维地质的边界和内部信息进行表示。但是混合模型难以解决两种方法数据一致性的问题,在实际应用中,混合模型的混合方法,模型的处理和分析技术还待深入研究[9]。
基于体模型的三维地质模型构建方法能对三维空间对象的内部属性的特性进行描述,分为规则体元和非规则体元两大类,其中规则体元主要是基于体素的构建方法,体素是使用规则的立方体来描述三维空间内的对象信息,其结构简单,使用插值方法获[10]取到的场地内每个点的对象信息可直接用于构建基于体素的三维模型,对于场地内三维空间信息的分析和操作也相对容易,而且模型通用性高,缺点是对于需要描述精确度要求较大的空间实体,需要生成大量的体素体元,其精度每提升一倍,数据量将提升2的3次幂,对数据的存储和模型的计算速度有非常大的影响。对于不规则体元的三维空间描述方法具有代表性的为广义三棱柱模型,广义三棱柱模型由上下两个三角形和侧面三个四边形组成的不规则三棱柱作为构建三维模型的基本体元,广义三棱柱模型相较于体素模型在相同精度下需要的数据量将大幅减少。但是广义三棱柱模型结构相对复杂,在对三维空间三角剖分算法复杂,在使用广义三棱柱模型对地层进行剖分时会造成大量数据的冗余,难以同时能精准表示地质体内外部信息和拥有简单易处理的数据结构,对地质体进行有效的分析。
针对上述问题,如能解决基于规则体元的三维地质模型的数据存储量大、计算速度慢、渲染效率低的问题,将大大提高规则体元三维地质模型的适用性。Max等[11]分析模型内各区域的相关性,提高了规则体元的渲染效率。文四立等[12]提出了一个处理规格化数据的算法。李斌等[13]对规则体元间的相邻关系进行分析,提高渲染时光线与体元的求交速度,加速了模型渲染效率。
本文基于钻探数据地层分层信息,利用OSG(Open Scene Graph, OSG)图形平台[14],建立规则体元的三维地质模型。利用LOD(Levels of Detail, LOD)切片技术[15]、数据分块存储和多线程计算技术等方法对三维地质模型构建方法进行优化,提升了模型渲染速度和模型操作时的帧率。
本文使用克里金插值方法[16]来计算场地内未知点的地层信息,不考虑尖灭、断层等复杂的地质条件的处理,将重点讨论体素三维地质模型的加速技术。利用地质勘察钻探数据的地层分层信息作为三维地质模型的基础数据。对场地出现的地层类型进行单独处理,钻孔位置处的地层高程信息作为已知点信息。根据设定的精度和场地大小确定范围内数据点数量(见式(1)),当精度为1 m时,在100 m×100 m大小的场地范围内有10 000个数据点来表示该地层在场地内的高程信息;当精度为10时在100 m×100 m场地范围内有100个数据点来表示该地层在场地内的高程信息,以此类推,精度越高数据点越多,对数据的计算速度和模型渲染效率影响就越大。
(1)
首先利用普通克里金方法得到场地内未知点处各地层的高程信息,而后对场地内出现的地层进行从上到下的排序,并按从上到下的顺序对各地层进行组合,每层地层的深度为该地层每个数据点的高程到下一层地层的高程。
通过计算后得到的场地内数据点信息并使用OSG图形平台进行三维地质模型的构建,其中每个数据点对应一个规则体元,每个体元均为规则立方体,对体元进行密铺层叠就得到了三维地质体。在3D场景中对三维地质体进行Ray Trace方式体渲染得到地质体实时交互分析图形环境。图1为1 280 m×128 m场地范围内,通过8个钻孔信息建立的高度为128 m的三维地质模型。该模型精度为1 m,由2 097万个数据点构成,模型生成后大小为160 M,模型查看时的帧率为30(帧率越高,显示画面越流畅,如果帧率小于30时模型显示会明显感觉不连贯)。按全线场地256 m×256 km估算,存储空间占用会达到32 G,同时显存空间占用也会达到32 G。同时传统方式的体渲染是基于物理的视线追踪体渲染,即便使用高透明度体元,累积之后也会得到一个较低的透明度,呈现果冻样效果,不利于地质体内部查看。低帧率和高存储空间占用率导致使用该模型不能有效用于对地质体的分析,需要对地质体模型进行效率优化,提高规则体元三维地质模型的适用性与直观性。
图1 1 280 m×128 m×128 m三维地质模型
针对模型渲染速度慢、占用存储空间等问题,引入降采样LOD技术,模型压缩技术,多线程Paged LOD调度技术,并且对渲染着色进行调整。
为降低全线地质体显存与渲染消耗,对显存占用和渲染着色进行优化。首先将全线地质体进行规则分块。如果按1 280 m×128 m大小进行分块,在256 m×256 km全线场地中可得到400块1 280 m×128 m大小的地质体。精度为1 m时,每块有1 280 ×128×128个体元,总共有256 000×256×128个体元。地质体距离观察点远时,占用屏幕像素少,没有细节观察的需求,可以对地质体进行线性降采样,并且根据观察距离远近进行调度,降低显存消耗以及渲染消耗。
构造低分辨率的地质体,使用长宽高两倍于高分辨率的体元对地质体进行重新层叠密铺,根据每个体元的中心对应的中心点坐标,获取高分辨率地质体模型对应坐标点周围的四个体元,根据体元中心坐标,进行三次线性插值,就能得到新的低分辨率地质体元显示参数。重复使用此方法,可以得到多个分辨率层级的地质体模型。此时得到的多个不同分辨率层级的地质体,实际是对应同一个地质空间,不同分辨率下的图形呈现。为使图形显示近处有细节,远处消耗低,就需要使用LOD技术对分辨率层级进行调度。使用视点坐标和地质体包围盒中心点的距离作为参考参数,指定各分辨率层级地质体的适用参数范围通过LOD技术进行自动调度,灵活呈现远近地质体概况与细节。
降采样得到低分辨率的地质体,加上原本就存在且作为最精细一层LOD的高分辨率地质体模型,实际提高了数据存储空间的用量,为降低内存消耗,并考虑更大范围的地质体渲染,引入OSG的PagedLOD技术,并加以优化,使用磁盘空间缓存不处于显示状态的地质体。OSG的PagedLOD技术默认使用单线程磁盘文件加载,加载压力大时效率较低;如果视点视角快速调整,会出现各视点所需LOD缓存排队的情况,导致显示延迟加大;并且数据从内存传输至显卡没有限制,如果某一帧加载了大量数据,会由于显卡带宽占用大导致卡顿。
针对OSG的技术特征,将PagedLOD调整为多线程磁盘文件加载,极大增加了磁盘文件加载效率。经测试在6线程左右时效果最佳。视点视角快速调整时,LOD缓存请求队列中会有很多过期请求,每帧剔除这部分请求大幅降低了排队数量,以及通过限制每帧并入场景的节点数量,避免了显存带宽占用过大导致卡顿。
由于地质体数据点分布均匀,随机性低,相邻数据点有较大概率具有相同的数据值,因而不需要考虑有损压缩方法,直接引入Bzip算法进行数据压缩即可,实测压缩率可达99%。
常见体渲染是对每个采样体元的颜色按照透明度进行累计,最终得到一个较低透明度的屏幕颜色。按地质体观察的特点,对渲染方式进行改进,着重呈现体元不连续的部分,对连续体元则不进行累计,得到一个透明度较高,又能呈现地质体内部结构的渲染效果。
测试显示,使用加速技术对比,在存储空间占用,显卡性能消耗,帧率,显示效果上具有明显的优势。图2和图3分别为没有使用加速技术和使用加速技术的12 800 m×1 280 m×128 m大小的三维地质模型。从图中可以看出使用加速技术构建的三维地质模型的透明度较高,呈现地质体内部结构的渲染效果;没有使用加速技术构建的三维地质模型很难对地质体内部进行查看。表1为没有使用加速技术和使用加速技术后的效率对比。没有使用加速技术时帧率为0 fps,模型基本卡住不动;使用加速后帧率为50 fps,渲染效果比较流畅。没有使用加速技术时占用了计算机的全部显存,如果计算机显存大于6 G,则占用显存会更高。使用加速效果后,显存占用和存储空间占用量都远远小于没有使用加速的模型构建,模型生成时间有非常大幅度的提升。
图2 没有使用加速技术构建的三维地质模型
图3 使用加速技术构建的三维地质模型
表1 不同构建方法效率对比
使用加速技术后的规则体元三维地质模型在帧率、显存占用大小、存储空间占用大小、和模型生成时间都可以满足大小为1 280 m×128 m×128 m三维地质体模型的分析需求。通过对比不同地质体大小、不同线程数量和不同LOD层级对模型加速技术效率进行评价。
对不同LOD精度层级对三维地质模型构建效率分析,图4为三种地质体大小下不同LOD精度层级对帧率的影响,其中LOD0的精度为64 m;LOD1的精度为8 m;LOD2的精度为1 m。从图中可以看出,精度相同情况下地质体越大,帧率越低。在地质体大小为12 800 m×12 800 m×128 m,精度为64 m时的帧率小于精度为8 m的帧率,因为精度为64 m时所显示的是全线地质体,体元节点过多,所以导致帧率反而下降。在12 800 m×12 800 m×128 m大范围地质体条件下,精度为1 m时的帧率为29 fps,可以满足对地质体的分析需求。
图4 不同地质体大小下LOD精度帧率对比
图5为三种地质体大小下不同LOD精度层级对显存占用的影响。从图中可以看出,精度越高显存占用越大,精度从1 m到8 m时显存占用下降比较明显。地质体越大需占用显存越多,在12 800 m×12 800 m×128 m大范围地质体条件下,1 m精度数显存占用为1 466 MB。目前主流的显卡显存都在2 048 MB以上,所以对于12 800 m×12 800 m×128 m大范围地质体条件下所占用显存,可以满足对地质体的分析需求。
图5 不同精度显存占用
对不同地质体大小下的存储空间占用对比,地质体越大存储空间占用越多,存储空间占用大小的增长比例与地质模型大小的增长比例相同。在12 800 m×12 800 m×128 m大范围地质体条件下,仅占用507 MB的存储空间,可以满足对地质体的分析需求(见图6)。
图6 不同地质模型大小的存储空间
图7为不同处理线程下不同大小的三维地质模型的生成时间,从图中可以看出地质体越大所需要的模型生成时间越长。线程数量从1条到5条时模型生成时间大幅度下降,而后时间下降趋势减缓。使用25线程生成12 800 m×12 800 m×128 m大小的地质模型大概需要4.5 min,在可以接受范围。
图7 不同线程数量的模型生成时间
通过OSG图形平台和计算得到的场地内数据点信息进行基于规则体元的三维地质模型的构建,如果不对生成方法进行优化,生成12 800 m×128 m×128 m大小的三维地质模型所需要的时间、存储空间和显存占用和显示帧率都不能满足地质模型的分析需求。本文提出一种基于规则体元的三维地质模型构建加速技术,相比较不使用加速技术,模型所需要的时间、存储空间和显存占用和显示帧率都有大幅度的提升。
使用加速技术后,对于12 800 m×12 800 m×128 m大小的三维地质模型,对于低精度的大范围模型显示帧率可以大于43 fps,高精度的模型显示帧率可以大于29 fps;显存占用低于1 466 MB;存储空间占用低于507 MB;模型生成时间低于1 075 s。可以满足对地质体的分析需求。