基于OpenGL的矿井三维可视化通风系统构建
2022-01-26蒋成龙杨应迪黄建达
蒋成龙,杨应迪,黄建达
(安徽理工大学 安全科学与工程学院,安徽 淮南 232001)
随着智能矿山的建设和煤矿的不断深入开采,煤矿安全管理人员为了更加直观的去了解煤矿井下的基本情况,对井下巷道的三维显示需求日益提高。三维可视化显示已在三维矿山平台建设的方向且取得了一定的成果[1-2]。计算机仿真模块及交互式应用的发展,更是为煤矿安全管理人员提供了便利的可视化三维模型[3]。
国内外很多学者都在基于OpenGL强大功能的基础上对矿井三维仿真技术进行研究,与此同时也开发出了许多程序来实现矿井通风系统的三维可视化模拟显示。如张思卿等[4]基于OpenGL模拟巷道内外部全景,最后通过贴图使巷道具有真实感;多依丽等[5]利用三角形拼构法对巷道及内部设施进行建模,利用三角剖分算法对拼接处的处理,利用粒子系统对动态风流进行模拟;海军等[6]采用三角剖分算法对巷道的建模进行研究,同时提出用图像纹理映射的方法对构筑物和通风装置进行可视化研究;赵建忠等[7]利用虚拟现实技术在矿业中为矿山优化设计、生产管理危险性评价及矿工培训等方面提供重要可靠判断依据。
在当下的国内外学者的研究中,矿山可视化进程有了一定程度的突破,可以对一般的矿井实现三维建模模拟,但是所建井巷大都停留在表面的模拟,不能交互式了解井巷内部具体情况。为此,以建立起一个综合性的三维巷道仿真平台为目标,方便用户对巷道的起伏、转向、变化以及巷道内部参数进行了解,同时还可以直接读入平面图纸和巷道参数来自动生成完整的矿井井巷三维模型。
1 OpenGL简介
OpenGL(即Open Graphics Library)是一款开源的三维计算机图形与模型库。作为一个跨编程语言、跨操作平台的专业的图形程序接口,同时还是绘制高真实感三维图形、实现交互式视景仿真和虚拟现实的高性能开发软件包,其图形优越性十分出众。
由于OpenGL开源性的特点使得以其为基础开发的程序可以十分方便地在不同平台之间进行兼容性移植,同时能高质量的显示二维和三维图形,因此OpenGL的应用领域相当的宽广。在OpenGL庞大的函数库中,它主要具有以下几个方面的功能:物体建模与图元绘制、矩阵变化、颜色管理、光照和材质、纹理映射、位图和图像、图像效果增强、变换操作与交互选择[8]。
OpenGL作为一种图形接口需要在一定的开发平台上才能实现所需要的一系列功能。所采用的平台开发语言是VB.NET。由于VB.NET是基于.NET框架且完全面向对象的编程语言,因此具有精练、灵活高效、易于维护和移植的特点[9]。可以有效地减少Windows应用程序开发人员的工作量,使开发界面的内容与功能更加丰富。
2 矿井通风系统的三维模型构建
2.1 构建流程
基于OpenGL的矿井通风系统的三维可视化模型构建流程如图1。
图1 矿井三维模型构建流程Fig.1 Mine3D model construction process
矿井三维建模是在OpenGL和vb.net编程语言的基础上,通过运用交互式采集[10-11]对巷道各处的节点进行坐标定位、利用三角形剖分算法构建三维巷道模型并处理好节点处的连接关系,再将通风系统模型同步到三维系统中,最终生成完整的三维矿井模型。
2.2 巷道节点坐标的确定
就一般情况而言,每条巷道的两端都可以视为不同的节点,不同巷道的节点以一定的规律首尾相连就可以形成完整的矿井三维巷道模型。在建模过程中需要使用巷道中线来大致表示井巷走势与起伏情况,而巷道中线是由多段线有逻辑的组合而成。多段线是由一系列节点的空间坐标有序连接而成,简单的理解为A、B2个节点间的巷道走势变化情况。巷道多段线表示如图2。
图2 巷道多段线表示Fig.2 Roadway represented by multi-segment line
巷道中线[12]是从原始的煤矿工程平面图与煤矿通风系统图的CAD文件中经过多次交互式采样将CAD平面图上的井下巷道分解转换为三维空间中有逻辑关系的不同多段线。多段线的初步构建可以搭建起矿井巷道的初步框架,对于多段线而言只要确定了各个巷道多段线中不同关键节点的坐标就可以将巷道的走势与空间关系较好的表达出来。
在确定节点坐标前需要先对原始煤矿工程平面图进行图层处理以方便进一步对各个节点的识别,然后对图纸的基准参考面进行参数设置,使其在构建的三维平台中始终处于xoy平面上且根据指北针方向进一步确定三维平台的空间位置。对于不同的巷道中线对应的连接关系需要不断确定不同节点的x、y、z值坐标来确定不同节点的具体位置。巷道节点坐标确定如图3。
图3 巷道节点坐标确定Fig.3 Determined coordinates of roadway nodes
2.3 巷道断面的确定
巷道断面的确定则是通过在井下收集相应的巷道参数并进行相关的理论分析后直接计算出来。巷道断面具体的表现形式为在已经确定巷道节点上通过三维多段线呈现,巷道断面上的三维多段线根据之前选定节点上预先设定的算法进行自动设计并根据不同的巷道参数呈现不同的断面形式。
首先依据井下收集的巷道宽度、墙高以及拱高等巷道参数数据来确定梯形、圆形、半圆拱形和自定义形状等断面,然后利用不同的巷道三维多段线断面计算结果来呈现。
以半圆拱形断面为例结合井下收集的巷道参数来呈现半圆拱形断面三维多段线的计算方法,拱形巷道断面多段线的拟合如图4。
图4 拱形巷道断面多段线的拟合Fig.4 Fitting of multi-segment line of arch roadway section
半圆拱形断面的直线部分直接选取各线段的端点,上部的拱形部分可以通过折线拟合逼近的方法来近似的代替。考虑到半圆拱形巷道三维模型的精度要求,将巷道断面中三维多段线上部的拱形部分按照图4中的方法转变为8段或8段以上才可以满足要求,以8段为例进行计算。
对于半圆拱形巷道,在断面多段线上选取特征点,在图4中就是指点1~点11。因为在OpenGL图形库中的圆形以及弧形都是由连续不断的折线拟合而成,因此可以将上部的拱形部分以一定角度平分后以线段代替。将拱形部分均分为8等份,因此拱形有7个点特征点不在直线部分的拟合区间内。现以特征点1到特征点4的方向为x轴,巷道的中线中点o到特征点8的方向为z轴,以o点为中心垂直纸面向外的方向为y轴,现假设o点坐标为(x0,y0,z0),则巷道断面中非拱部特征点1、特征点2、特征点3、特征点4的坐标为:
半圆拱的拱部特征点P坐标为:
式中:r为巷道拱高,m;h为巷道墙高,m。
将以上所描述的各个特征点的坐标按特征点的顺序首尾相连就可以构造出半圆拱形巷道三维多段线断面。
2.4 巷道三维模型
巷道三维模型的构建在常见的方法中往往是将断面三维多段线直接简单的向指定方向拉伸成巷,但是由于直接拉伸会造成巷道拐弯以及连接节点处的巷道缺口,使得巷道的连接不够连贯,不够圆润。因此采用在断面多段线之间利用三角形剖分算法将巷道划分为一系列相互连接的三角形并进一步通过算法解决连接形成的巷道缺口[13]问题。
在巷道断面确定好后,将巷道断面多段线延巷道方向每隔几个单位长度重复绘制,它们之间的巷道利用三角形剖分算法[14]进行构建。由于需要构建三角形数目较多,所以巷道三维模型的基本组成部分为三角形条带。三角形条带中彼此相邻的2个三角形共用1条公用边,三角形的顶点可以重复使用,相较于不断重复选择、存储、显示三角形顶点的方式大大节约了内存并显著调高了软件的运行效率。拱形巷道三角剖分模型如图5。
图5 拱形巷道三角剖分模型Fig.5 Triangulation model of arch tunnel
巷道三维模型的生成需要多个三角形条带在三维空间内相交而成,每个条带以各个断面上的三维多段线线段为起点生成。顶点形成的是模型的其中1个三角形条带。如果需要巷道模型两端封闭,则需要将起点和终点处断面上的点分别生成三角形条带,从而进一步生成矿井三维可视化模型的雏形。
井下巷道的彼此相连还需要处理巷道拐弯和连接节点处的巷道缺口不能顺畅连通的问题。三角形相交的位置关系如图6。
图6 三角形相交的位置关系Fig.6 The position of intersection of triangles
由图6,在三维空间内定义2个平面三角形T1和T2的相交情况。T1为平面α中的三角形,T2为平面β中的三角形,T1和T2相交于直线L。直线L与三角形T1、T2的交点依次记为A、B、C、D。若[A,B]和[C,D]2个区间如图6在三维空间内存在相同的集合[B,C],则三角形T1与T2相交且[B,C]就是交线;否则,则不相交。对于这样的在三维空间相交的2个三角形,仅需对三角形的相交求解进行1次即可,但是要注意标记当前的三角形为空间内相交三角形。
巷道相交时的交线段处理如图7。在给定的巷道实体模型A和实体模型B之中实体模型A与实体模型B在三维空间内相交,实体模型A和实体模型B中的各个三角形条带相交形成了交线段多段线。
图7 巷道相交时的交线段处理Fig.7 Processing of intersection segment when roadway intersects
经过以上的矿井三维建模过程之后,已经能够较好的表达出现实矿井的大致情况,但是对于实际的情况来说还是不够精细与逼真,因此还需要对矿井三维可视化模型运用纹理映射技术以实现矿井巷道呈现的效果更加真实。将OpenGL出色的图形光照与纹理映射模块与之前构建出的矿井巷道三维模型结合后得到矿井三维巷道局部效果图。矿井三维巷道局部效果图如图8。
图8 矿井三维巷道局部效果图Fig.8 Local effect of3D mine roadway
3 通风设施的构建
完整的矿井三维模型构建除了主体巷道的三维建模,还需要对矿井系统中的通风构筑物以及通风机等内容进行建模和构造[15]。这就需要到现场测算出它们的控制点,采用与矿井巷道三维建模的原理,利用四边形或者拉伸实体来构造通风构筑物实体模型,并将其同步到三维巷道模型中,生成对应的矿井通风系统模型,然后仿照对巷道进行可视化的流程实现其模拟效果。通风设施三维模型如图9。
图9 通风设施三维模型Fig.93 D model of ventilation facilities
对于风门模型的构造来说,需要收集风门所在巷道、风门的开关状态、风门的尺寸等相关信息并将数据存储至风门属性数据库的集合当中;对于通风机模型的构造来说,需要收集通风机的尺寸、通风机工作参数、通风机的空间位置等相关信息并存储至通风机属性数据库的集合之中。
4 工程应用
平顶山煤业集团有限责任公司一矿的通风方式为为多进风井、多回风井混合式通风,通风方法为抽出式通风。矿井通风系统有一水平主井、一水平副井、一水平主斜井、戊七进风斜井、二水平主斜井、北一进风井、北二进风井、北三进风井共8个进风井,北一回风井、北二回风井、北三回风井3个回风井。北一风井担负一水平保留巷道及硐室、二水平煤柱回收区和三水平戊一上山采区回风,北二风井担负三水平丁二采区回风,北三风井担负三水平戊一下山采区和三水平戊二采区回风。
将矿井三维建模方式应用于一矿。打开处理好图层设置的CAD文件,在平面图上选定基准参考后采集节点坐标,节点生成的同时会存入节点信息集合,自动生成的巷道会存入巷道信息集合。在一矿的实际井巷情况下,主要绘制了3个水平的进回风大巷、进回风风井、工作面、风门、通风机等空间位置及相应参数数据。一矿的立体图基本信息如下:①采集定位点:957个;②巷道分支:1158条;③巷道类型:半圆拱形、梯形、矩形等;④通风设施:风门、挡风墙、通风机等。平煤一矿矿井三维可视化模型如图10。
图10 平煤一矿矿井三维可视化模型Fig.103 D visualization model of Pingmei No.1Mine
考虑到需要保证软件操作界面的简洁性,因此一般情况下所有巷道内部所含有的信息都会隐藏在后台数据库之中,当使用人员需要查看或修改某条巷道的信息时只需要通过左键双击选择需要查看的巷道或者在菜单栏中选择巷道信息显示就可以显示出指定巷道内所含信息,矿井巷道信息库如图11。
图11 矿井巷道信息库Fig.11 Mine roadway information
将这种建模方法应用于平顶山煤业集团有限责任公司一矿,改变了矿上人员以往传统的绘图方式,更加逼真的显示出一矿巷道的起伏与转折的同时也对工作面的情况一览无余。井上工作人员可以随时访问矿井巷道信息资源库并对三维井巷模型中的具体巷道参数数据随时进行查询与修改。巷道信息库的信息也可以实时更新,保证了建模的效率。
5 结 语
基于OpenGL的矿井三维可视化模型系统,通过加载各节点截面并处理巷道岔口,矿井三维模型得到正确显示,实现了预期效果。
1)程序在VB.NET平台上结合OpenGL功能模块实现建模目标,程序的运行效率得以提高,并且可以方便的实现程序移植以及后续功能的扩充。
2)采用简单可行的方法实现了矿井工程平面图到矿井三维可视化模型的转变,提高了制图人员的工作效率。通过对计算机三维图形坐标的转换和任意视角景观的设置,得到的巷道立体图表达井巷效果明显,立体性强,具有放大、缩小、任意视角观看等展示功能。
3)除了对三维巷道的模拟之外,程序中还添加了交互功能,人员可以使用鼠标来选择和控制巷道。交互功能结合上建立的巷道信息库可以让使用人员对巷道的具体信息进行增加、删减、修改等操作。以便于适应后续实际的生产变化,同时也为进一步的通风网络解算与图形转换提供一个较为优良的平台。