黄兴怀, 毕 翔, 周立国
(1.中国能源建设集团 安徽省电力设计院有限公司,安徽 合肥 230601;2.合肥工业大学 计算机与信息学院,安徽 合肥 230009)
基于VTK的工程地质三维可视化中间件研究
黄兴怀1, 毕 翔2, 周立国1
(1.中国能源建设集团 安徽省电力设计院有限公司,安徽 合肥 230601;2.合肥工业大学 计算机与信息学院,安徽 合肥 230009)
采用VTK技术,探讨工程地质三维可视化技术的实现,通过表面模型和GTP模型构建地层模型,将虚拟钻孔加入到三维模型的构建中,有效地处理了地质尖灭现象。结果证明:最终完成一套工程地质三维可视化中间件,提供缩放、旋转、平移、切割、剖面提取、钻孔提取及土方量计算等功能接口,可以较方便地进行二次开发。
三维地质;可视化工具(VTK);表面模型;GTP模型;虚拟钻孔
目前成熟的三维可视化技术已经应用在矿产资源勘查、油气勘探开发、煤田地质勘探、矿山生产和管理及地质灾害治理领域,而对于工程地质三维可视化技术只表现在三维展示和简单的数据分析层面上[1]。
因此,本文结合工程地质和岩土工程等学科的交叉性,探讨开发一套采用VTK (Visualization Tool Kit) 三维可视化工具,基于钻孔数据、物探数据及土工实验数据等基础参数,同时提供三维展示、图形数据处理、数据分析及数据查询等功能接口的三维可视化中间软件,以方便用户基于本中间件快速地进行工程地质三维软件的二次开发。
VTK是一个开放资源的免费三维可视化工具,它不仅支持对几何体的显示及渲染,还同时支持许多图形和可视化算法及高级建模技术,将常用算法封装起来以类库的形式提供给使用者,能较大地提高工作效率[2]。
VTK采用管道技术(也称流水线)实现可视化,它包括可视化管道和图形管道。可视化管道用于构造几何表达,而后经由图形管道渲染成图片[3]。
VTK定义14种基础数据结构,包括点、线、面、体等几何元素, VTK数据结构的表达特点是以点为基本元素,即不管多复杂的几何单元聚集体,首先由点集组成基本几何单元,再由基本几何单元组成任意复杂的几何体,能较好地表达工程地质中三维剖面、二维剖面、单孔柱状图、地层线及土层分层线等属性数据。因此,三维建模中的可视化数据结构可直接使用VTK的数据结构。
2.1 表面模型
表面模型是指通过表面信息描述空间对象,内部是空的一种三维空间模型。这种模型的优点是数据储存量小,建模速度快,便于显示和数据更新。但是,正是由于它侧重于对象的视觉三维效果和建模的速度,使其难以进行空间分析和操作。
本文研发的软件中间件实现了表面模型,首先根据钻孔数据,将同一土层的上、下面运用Delaunay三角网算法构成一组三角网,由上至下,构成垂直分布的多组三角网(相邻土层的交界面公用同一个三角网)。然后求出每一组三角网的边缘,同样运用Delaunay算法构建土层的侧面,称之为侧面三角网,进而封闭土层。为了实现土层的正确渲染和切割后自动封闭,要求土层3个三角网(上、下面三角网和侧面三角网)中的每个三角形的法向量指向土层的外部。对于上、下面三角网较易实现,而侧面三角网由于是环形的,处理较繁琐。本文处理方法如下:
(1) 在不考虑法向量的情况下,由侧面三角网构建侧面对象,此时侧面对象中的三角片面的法向量并不是统一由土层内部指向外部。
(2) 由土层上、下三角网求出土层近似中心点P。
(3) 构造一个由P指向侧面三角网中的三角片面的重心的一个向量V。
(4) 遍历侧面对象中三角片面,若该三角片面法向量和V的夹角大于90°,则将其法向量取反。
2.2 实体模型
实体模型侧重于三维空间体的表示,通过对体的描述实现三维空间目标表示,与表面模型相比较,其数据结构更为复杂,所要求的存储空间也更大,但实体模型更适合于空间分析和操作。
本文研发的软件中间件采用广义三棱柱(generalized tri-prism,简称GTP)实现实体模型,该模型可以使采集到的地质勘探数据更容易生成紧密实际的地质模型,能够更加精细地表现和灵活地操作土层。GTP模型是一种真三维地质建模体元模型,通过棱边退化为金字塔或四面体模型,可以灵活表达断层、褶曲等复杂构造形态,并具有易于扩充的特点[4]。
图1所示为GTP的3种形式,其中图1(a)为标准的三棱柱体元,3条棱的高度都不为0。图1(b)和图1(c)分别是图1(a)缺失1条棱和2条棱后的变体,这2种三棱柱体元存在于底层的尖灭处。
图1 三棱柱体元
与表面模型一样,在构建GTP模型的时候,也要运用Delaunay算法构造三角网,但是它除了构建三角网之外,还需要在相邻的层面之间构建一系列三棱柱。
3.1 辅助钻孔
虽然钻孔数据中记录了详尽的信息,但初始钻孔数据常存在地层编号重复、地层缺失等数据不一致及不完备的情况,所以在进行建模和可视化之前,需要对钻孔数据进行一些必要的处理,称之为钻孔数据的预处理。
通过构建辅助钻孔,进而完成钻孔地层数据的补全,保证各钻孔地层数据的层序完整性,为后续的三维建模和可视化处理做好准备[5]。
3.2 虚拟钻孔
本文所提的虚拟钻孔是根据已有的钻孔数据,按一定规则构建并参与三维建模,是与实际钻孔无差别的一种钻孔数据。
使用辅助钻孔对实际钻孔进行预处理后,就可以构建虚拟钻孔,其构建分为自动构建和人工手动构建。自动构建的原则是在原始钻孔的基础上先进行三角网化,然后寻找三角形所有的边,在每条边的中间插入一个标记为isvirsual=true的钻孔[6]。如图2所示,2个原始钻孔,初始化三角网时直线连接,同属一个三角形,然后在中间位置直接插入一个新的钻孔。如果2个钻孔点的高度均不为0,则取这2个钻孔该层土层的中间值;如果2个钻孔的土层高度有一个为0,则该土层的高度取0。
图2 虚拟钻孔自动插入示意图
手动构建是由用户在二维剖面图中根据经验自主插入一个虚拟钻孔,并可调节地质各层高度,然后反馈到三维模型中,实现人工对三维模型的修正功能。图3中标有虚拟钻孔字样的钻孔即为手动添加。
图3 手动添加虚拟钻孔
通过让虚拟钻孔参与地质的三维建模,能够有效地解决地质尖灭问题,而且手动构建虚拟钻孔,可以融合工程师的经验,对地质三维模型进行修正。
地质三维建模完成后,运用VTK作为三维图形开发工具,本文研发成一套工程地质三维可视化中间件,该中间件提供以下功能接口:① 自动生成工程地质三维模型,包括表面模型和GTP模型,具有尖灭处理能力;② 模型纹理渲染功能;③ 缩放、平移功能;④ 在地质体的任意位置布置剖线,查看地质体的任意剖面的功能;⑤ 任意平面切割,任意长方体和四棱台提取土方功能;⑥ 预定范围土方计算功能;⑦ 虚拟钻孔手动插入及反向修改功能;⑧ 打点提取地质数据功能[7];⑨ 通用三维模型(3dmax等)与三维地质模型的叠加功能;⑩ 截图、录像输出功能。
(1) 中间件结构。中间件分为3D、2D显示和数据读取3个总模块,如图4所示。使用时,将图形显示与数据结构分离开,用于二维和三维交互的模块为2DView和3DView,这2个图形的显示数据输入为ReadData数据源。这样,使一次ReadData初始化完成,即可用于2个控件使用,保证数据同步刷新。
图4 总模块示意图
(2) 中间件功能。为了演示中间件接口的功能,本文设计并实现一个简单的演示程序,如图5~图7所示。
图5 地层模型图
图6 切割及土方提取示意图
图7 为钻孔和任意剖面提取示意图
本文对工程地质三维建模进行讨论,所提出的虚拟钻孔概念,有效地解决了地质尖灭的问题。通过运用VTK作为三维图形图像显示工具,开发一套工程地质三维可视化中间件,实现对地层的三维显示和操作。同时提供图形数据处理、数据分析及数据查询等功能接口,可以与其他专业软件接口进行跨专业数据融合和处理,以方便用户基于中间件快速地进行工程地质三维软件的二次开发。
[1] 王家伟,郭甲腾,张荣兵.含尖灭地层的地质剖面图自动生成与2D/3D绘制[J].沈阳建筑大学学报(自然科学版), 2012, 28(3):405~410.
[2] 刘玉芳,王润怀,宋金星.基于 VTK 的三维地层可视化探讨[J].河南理工大学学报(自然科学版), 2009, 28(3):303~306.
[3] 高 琴,洪振刚,李朝晖,等.基于VTK的三维地质建模方法研究[J].工程勘察, 2011(4):59~63.
[4] 徐 帅,孙豁然,穆太升,等.三维实体建模中矿岩尖灭线自动生成系统的研究与实现[J].金属矿山,2000(11):93~96.
[5] 陈建宏,周智勇,陈 纲,等.基于钻孔数据的勘探线剖面自动生成方法[J].中南大学学报(自然科学版),2005,36(3):486~490.
[6] 贺毅岳,耿国华,周明全,等.基于VTK的三维模型切割研究[J].计算机应用研究,2010,27(11):4322~4327.
[7] 董 志.GeoEngine中基于多数据源三维地层半自动建模技术的研究[D].北京:中国地质大学,2008.
2016-05-12;修改日期:2016-05-17
黄兴怀(1973-),男,安徽安庆人,中国能源建设集团安徽省电力设计院有限公司高级工程师.
TD672
A
1673-5781(2016)03-0303-03