系统以单隧道工程为单位建立隧道工程文件(*.prj文件),最终导入到隧道群文件(*.TOS文件)进行管理。
首先利用数据导入模块实现对监测数据(EXCEL表格)有用信息的筛选并导入到数据库工程文件中。对导入的监测数据通过三维隧道建模查询和二维断面图查询,选定查询的断面以及查询数据类型之后,结果通过曲线图的形式表现出来,结合了课题组研究的预警值判断模块,通过设定的断面具体参数计算出各个断面的最大预警值以及最大预警速率,画出预警线,并将超出预警线或者预警数据的数据通过特殊颜色表示。可以实时切换到断面视图查看断面状态。系统整合了课题组研究的数据预测模块以进行今后几天的监测数据预测,完善了隧道三维可视化监测系统的功能[2]。
2 数据库模块
隧道工程施工监测数据非常复杂庞大,如果将其全部导入到数据库中,会造成过多的数据冗余,管理困难,降低数据查询速度。因此,在导入监测数据的时候应进行必要的筛选,系统可根据用户设定的数据类型(比如拱顶下沉)来进行选取有用的数据列,并且通过判断特定列的数据状况自动过滤其中由于故障等原因测量不全的数据,尽量做到数据库的最优化,各种类型的数据以不同表的形式存入数据库文件中,可随时打开工程添加新类型的数据。
预警值参数设定时,所填入的各种工程信息在设定完后全部入库,既保留了完整的施工工程信息,又可用于程序以后的扩展使用。
断面查询时,通过搜索数据库数据,将其与断面图或者三维隧道模型关联。点击断面查询时,自动从数据库里调出关于该断面的信息;进一步到曲线查询模块时,将数据库中关于该断面的数据读取到数组中,实现数据接口。
曲线查询时,曲线数据自动关联上该断面的预警值数据,判断是否超出进行曲线的特殊表示;调用预测模块进行数据的预测时,可以选择是否将预测的结果更新入数据库,同时保存各种算法的各种参数设定,便于以后对预测算法的效果以及与实际资料进行对比试验。
3 二维断面视图模块
在建立隧道工程时,须导入隧道二维断面图,然后由用户在断面图上标出隧道出入洞口的位置及输入洞口坐标,程序自动查询调用数据库中的数据信息生成断面位置,根据数据类型,用颜色区分显示全面的类型,并且关联每个断面的数据,将鼠标放至断面上可显示断面名称,点击断面弹出信息对话框,给出隧道名称、隧道跨度及高度、断面名称、断面类型以及最后监测日期的监测数据等基本信息,此时可以返回至断面图查询其他断面,也可以点击进行断面信息的具体查询,即切换到曲线查询模块进行断面曲线的查询。
4 基于OpenGL三维可视化模块开发
OpenGL应用范围广泛,具有标准化、稳定性、可扩展性、可靠性和可移植性、可缩放性、易用性、实用性以及文档丰富的特点[2],用OpenGL实现隧道监测数据的三维可视化表达具有可操作性和可实现性。在实现过程中,重点解决了以下关键问题。
4.1 三维建模
为了使建好的隧道三维模型更便于修改,本系统软件所构建的隧道模型都是从最基本的图元(点线面)自行编写成各种合适的图形元件(比如椭圆弧、三角锥等)再组合进行隧道—256
—模型的构建,这样可以根据需要随意地更改每个细节部分来达到最佳效果。
以白炭坞隧道右线为例,图2给出了按上述思想绘制的隧道三维模型,以监沿断面为各个三维实体的分界面,根据每个断面所导入的数据信息,在断面上放置了监测点,通过改变监测点位置,断面的颜色体现了监测数据的状态(参照图2)。由断面将整条隧道划分为若干个单元,便于后期的交互式操作。每一个监测断面用一个单元表示。
图2 利用视点转换实现的三维交互查询
4.2 三维渲染
三维渲染通过消隐及光照材质来实现。隧道的内部并无直射的光源,为了有较好的显示效果,采用了一定亮度的环境光照射。图2反映出了使用消隐及光照材质的最终三维表现效果,通过光线的明暗程度、隧道材质表现的不同,更加真实地表现出隧道的三维空间感,采用OpenGL的贴图功能实现了地表路面的效果。 4.3 三维交互
三维交互功能的实现对于本系统非常关键,三维交互功能可以使三维空间查询成为可能,在本系统中通过视点转换实现。视点的初始坐标位于三维坐标的原点,可以根据被观察物体的需要及物体本身的大小选择视点位置、视点方向、观察的视角大小及近裁剪面和远裁剪面。视点和实体的位置是相对的,可以移动物体或视点,从而使实体以适当的比例投影到视平面上[3]。
用以下3个模型变换函数组合应用来实现观察物体在OPENGL三维坐标体系中的移动,从而实现相对视点的变换:(1)平移物体,gITranslatef(TYPE x, TYPE y, TYPE z); (2)旋转物体,gIRotatef(TYPE angel, TYPE x, TYPE y, TYPE z);
(3)缩放物体,glScalef(TYPE x, TYPE y, TYPE z)。 本系统采用视点转换实现了对于隧道模型的旋转、平移、
缩放功能[2]
;进一步地通过帧技术以及时间控件的应用,实现了虚拟视点进出隧道,从而达到隧道虚拟行走的效果。用户可利用鼠标或方向键控制,模拟在隧道中漫游。在虚拟漫游过程中,当用户对某一个断面感兴趣,或需要查询某一监测断面的监测数据,或须及时了解某一监测断面的安全性级别时,用户仅须点击当前断面即可获取此类信息。在图2状态预观察当点的断面时,用户点击此监测断面,即时弹出有关该断面的信息对话框,可以返回,继续在隧道中行走,或切换到曲线查询模块进行断面曲线的查询。
5 曲线查询模块
用户进入曲线查询模块,选定查询的数据类型、断面以及要查询的测点就可以进行多条曲线显示,将鼠标放置在界