马颖,刘文,赵汝程,尹燕芳
(山东科技大学,济南250000)
基于Direct3D巷道自动建模中的点处理
马颖,刘文,赵汝程,尹燕芳
(山东科技大学,济南250000)
人工手动建立巷道模型工作量巨大。通过对CAD图纸文件(.dxf)的信息进行分析和读取,针对文件中庞大的点信息进行分析和处理,实现由简单图纸文件到复杂三维模型的自动生成,并且针对复杂度较高的巷道也有很好的建模表现。实验表明对CAD图纸文件中的点信息进行优化处理,简化复杂度较高的三维巷道的建模。
三维巷道;自动建模;数据处理;插值算法
随着计算机技术的不断发展及普及,信息化与数字化逐渐成为全球各行各业的发展趋势,矿山巷道方面也不例外,矿山巷道的信息化与数字化在我国有很广阔的应用前景。在煤矿开采中巷道是煤矿高效、合理开发的重要保障,是构建数字矿山的基础,而地下巷道错综复杂、纵横交错,怎样才能够多方位的、准确的、甚至更为直观、形象的表现井下巷道,是我们面临的主要问题[1]。
目前,针对巷道建模自动化的程度总体上可以分为两大类,一类是基于三维建模软件的手动巷道建模方法,另一类是巷道自动建模方法。由于每个矿井的实际构造不同,使用三维建模软件构建矿井不适宜推广。而在巷道自动建模中,针对整体和局部而言,在局部上需要解决巷道的局部弯曲处理,增加巷道的逼真度,在整体上又需要解决大型巷道庞大的点信息。本文基于对煤矿安全培训系统的研究,编写出根据具体巷道数据信息生成矿井巷道的具体模型的自动建模系统[2]。
Direct3D[3]是一款基于点信息绘制图形的3D图形API,绘制图形时,Direct3D会读取顶点缓冲区中的顶点信息和索引缓冲区的连接信息,从而将点连成线,线构成面[4]。
实现Direct3D的巷道自动建模需要3D巷道中每一个点的坐标,从巷道参数文件或巷道图纸文件中可以得到巷道的点信息和截面参数信息。
本文将论述如何完成点信息的转化,使之能用于Direct3D建模。本文将从AutoCAD中的图纸文件(.dxf文件)读取初始点信息并保存,再通过DirectX 11自动建立巷道模型,最后生成3D软件通用的.obj文件,从而完成了将巷道平面图转化为三维立体巷道模型的巷道自动建模(图1)。
图1 建模思路流程
2.1 巷道模型的建立方法
巷道断面是垂直于巷道中心线的横断面,主要有矩形,梯形和拱形三种,其中,拱形巷道应用广泛,尤其是在工程项目中。拱形巷道建立的难点之一是两相交直巷道的弯道弯曲处理,本文中将弯巷道和直巷道分开处理,弯曲处采用了贝塞尔曲线算法实现了弯曲处的光滑。
(1)直线巷道模型
对于巷道截面为拱形的直线巷道(图2),它由一个半圆的弧和一个长方形的三条边构成,从提取的点信息中可以得到拱形底边的中心坐标,截面的高H和半径R,由此可以确定图中每一点的坐标。将两个拱形的对应点按照索引信息相连即可得到一段三维直线巷道模型,但是当一个拐点为三岔口或更多岔口时,如果直接使用上述巷道模型作为直线巷道基本模型,在弯道平滑处理后,仍会出现曲面交叉,重叠的现象(图3)。为避免上述现象发生,在基于拱形建造模型时,采用改进的半拱形作为基本图形(图4),连接得到的半拱形巷道作为巷道基本模型建立巷道。
使用半拱形巷道,每次只建造巷道的一半,当所有点建立完毕,巷道两侧自动衔接成为立体巷道。对于每个半拱形,包括一个1/4圆弧和两条线,为保证圆弧的光滑,须将圆弧划分为等距离的点,并依次连线得到1/4的正多边形以此表示圆弧,本文将半圆划分为8段,整个拱形使用11个点表示。
半拱形巷道实现伪代码
Vertices[11]//保存所有点信息
H //为巷道的矩形高
R //为巷道的半径
Vertices[0]={0,0,0}
Vertices[1]={-R,0,0}
for i从2到11
x=-R*cos((i-2)*π/16)
y=H+R*sin((i-2)*π/16)
Vertices[i]={x,y,0}
end
(2)曲线巷道模型
贝塞尔曲线算法是依据四个任意位置的点,通过详细的曲线参数方程,计算得到一条光滑曲线的算法。本文运用了贝塞尔曲线的二次方公式求解曲线巷道。
贝塞尔曲线的二次方公式:
本文使用了基于贝塞尔曲线算法的巷道建模方法来对巷道的曲线部分进行建模,贝塞尔曲线算法可根据四点坐标自动实现对中间的点平滑过渡,在本文中,通过四个“半拱形”的点信息,可实现巷道弯曲部分的平滑过渡(图5)。
为防止相邻点所构造的曲线巷道重叠,采用每个点仅延伸到相邻点与中间点连线距离的一半,当所有巷道构造完成,巷道自动拼接完整,对于巷道端点,则直接连接。
若有3个点A,B,C都与点O向连(图6),即点O为巷道的交叉点,利用半拱形巷道建模,分别建立巷道AOB,BOC,COA,三个巷道组合即得到了点O所延伸的拱形巷道。
2模型建立中的点处理
(1)点提取
首先我们从.dxf文件中提取到点的坐标信息,并从截面参数文件中读取到截面的高和宽。为保存这些数据,建立结构体Vexcet存储点信息,因为点的数量不确定,采用指针依次存放点信息,结构体中包括标识点的关键字信息,点的坐标数据,其相连接的点数据,与连接点之间的截面数据以及指向下一个点信息的指针。截面信息结构体Section中包括截面的高度和宽度信息。
图2 拱形巷道截面
图3 曲面交叉,重叠
图4 半拱形巷道截面
图5 曲线巷道模型
图6 巷道交叉点
图7 点信息处理流程
其中对与点的连接关系的保存有多种方法,这里直介绍两种。其中一种是:因为整个巷道可以近似认为是一个包含点和连接信息的图,故可以采用图的邻接表或邻接矩阵的方式保存点的连接信息,但由于点信息数量很多,当使用邻接矩阵存储时,会浪费大量内存空间;当使用邻接表保存时,对于连接信息的查找和排序又会造成很大困难。
本文采用新的方法实现对点的连接信息的保存,即每个点的结构体中包含存储该点的连接信息的数组,数组中依次排列着与该点相连的点。这样,既节省了内存空间,又方便了对连接信息的排序和查找。
结构体的代码如下:
structVexcet{
intKey;//点的关键字
Pointpoint;//点的坐标
intconnect[10];//点的连接信息
intsection[10];//与连接点之间的截面信息
Vexcet*next;//下一个点
};
(2)点存储
通过数据提取与巷道基本模型的建立,我们已经确定了点的数据和巷道的建立方式。我们需要确定每一组相连的点,假设共有n组点需要相连,构造数组posCreat[n][3],如上述OABC在数组中的存储方式即为:
表1 posCreat数据存放
为方便保存,我们在posCreat中存放点所对应的关键字,从而通过关键字快速提取点信息。由于每段巷道的建造都不会对其他巷道产生影响,即建造巷道的顺序不唯一,整个巷道是由许多小的基本曲线巷道拼接而成的。
(3)建立模型
通过posCreat数组,可以依次建造每组点的巷道基本模型,首先,要通过点的关键字获得点的坐标和截面的宽和高。我们首先在三维坐标系的原点根据截面信息建立相应大小的半拱形截面,再通过旋转和平移将半拱形移动到制定位置,并保证半拱形面的法向量的方向正确。
由余弦定理可知,0≤θ≥π,在Direct3D中,图像的旋转方向为顺时针,这样,当法向量方向相反时,旋转方向相同,从而造成模型建立错误。为避免模型建立错误,应在posCreat数组建立时保证每个中心点与相连点的连接顺序成顺时针。
图8 点的连接顺序
点的连接顺序应遵循A→B→C→D,起始点的选择可以改变(图8),但顺序不可以变,例如:BoC,CoD,CoA,AoB的顺序可以,但不可以出现BoA或AoC等。确定初始三点位置后,便可以用曲线插值算法得到弯曲部分的截面点,本文中巷道共生成5组截面点,结合两个端点,每个截面有11个点,则一段巷道有77个点连接所得。
(4)设置贴图向量
在Direct3D中贴图需要设置对应的贴图向量,Di⁃rect3D中图形的构造已三角形为基本图形,但贴图是以四方体为单位的(图9)。
图9 贴图向量表示
贴图向量共有4个值:(0,0),(0,1),(1,0),(1,1)。构造模型时,每个点都将多次使用,且要使模型正反两面均完整贴图,如果直接在点信息数组中加入贴图向量,工作量大且实现复杂,故采用将每一个点所对应的所有贴图向量均存放到点信息数组中,最终的点信息数组vertices的大小为308*曲面巷道数,将其保存至顶点缓冲区。
(5)生成索引
根据点信息数组vertices,相邻两组点的索引间隔为308,对于贴图向量的选择,当使用(0,0)时,点索引即为原索引;当使用(1,0)时,点索引为原索引加上77;当使用(0,1)时,点索引即为原索引加上154;当使用(1,1)时,点索引即为原索引加上231。
(6)生成模型
将点信息数组vertices和索引信息数组indices按指定格式导出至.obj和.x文件,则可以通过其他3D软件,如3Dmax,AutoDesk等打开即可查看。
图10 max打开生成的.obj文件
[1]张思卿,谭同德.VR技术在钨矿山巷道可视化研究中的应用[J].有色金属(矿山部分),2014,66(4):91-95.
[2]栾东丽,刘明.基于曲线插值算法的巷道自动建模[J].信息技术,2008(12):34-36.
[3]德才杨关胜孙玉萍.精通DirectX 3D图形与动画程序设计[M].人民邮电出版社,2007.
[4]王德才,杨冉.Direct3D中的坐标系与基本图元绘制[J].电脑编程技巧与维护,2007(4):4-6.
作者简介:
马颖(1995-),女,山东济南人,本科,研究方向为软件工程
刘文(1996-),男,山东滕州人,本科,研究方向为虚拟现实、机器学习
赵汝程(1996-),男,山东聊城人,本科,研究方向为虚拟现实、人工智能
尹燕芳,女,讲师,研究方向为人工智能
Point Processing Based on Direct3D Roadway Automatic Modeling
MA Ying,LIUWen,ZHAORu-cheng,YINYan-fang
(Shandong University ofScienceand Technology,Jinan 250000)
Manualestablishmentof roadwaymodel ishugeworkload.According to the analysis and read of drawings(.dxf)information of CAD,for the file in a large point of information for analysis and processing,in the realization of three-dimensional tunnel in automaticmodeling,the roadwaymodelwith high complexity,the huge information for automatic processing realized by simple drawings to complex three-dimen⁃sionalmodel.And for the higher complex roadway also has a good modeling performance.Experiments show that optimize the processing with point information ofdrawings(.dxf)information ofCAD,which can simplify the construction ofhigher complex three-dimensionalmod⁃el.
2017-05-25
2017-08-01
1007-1423(2017)22-0039-05
10.3969/j.issn.1007-1423.2017.22.009
Three-Dimensional Tunnel;Automatic Modeling;Data-Processing;Interpolation Method