馬穎,劉文,趙汝程,尹燕芳
(山東科技大學,濟南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