馮桂珍, 張?jiān)鰪?qiáng), 池建斌, 邢海軍
(石家莊鐵道大學(xué)機(jī)械工程學(xué)院,河北 石家莊 050043)
基于Quest3D可視化管理系統(tǒng)的研究與實(shí)現(xiàn)
馮桂珍, 張?jiān)鰪?qiáng), 池建斌, 邢海軍
(石家莊鐵道大學(xué)機(jī)械工程學(xué)院,河北 石家莊 050043)
Quest3D是一種基于DirectX開(kāi)發(fā)的三維交互技術(shù)平臺(tái),具有廣泛的應(yīng)用空間。在研究Quest3D構(gòu)建交互式三維虛擬場(chǎng)景的過(guò)程、方法和相關(guān)技術(shù)的基礎(chǔ)上,以某工程項(xiàng)目為例,以VC++和Quest3D為平臺(tái),結(jié)合MySQL數(shù)據(jù)庫(kù)技術(shù),開(kāi)發(fā)了一個(gè)工程項(xiàng)目可視化管理系統(tǒng),通過(guò)服務(wù)監(jiān)聽(tīng)機(jī)制實(shí)現(xiàn)數(shù)據(jù)的異地同步和更新。用戶在虛擬場(chǎng)景中通過(guò)鼠標(biāo)或鍵盤進(jìn)行交互操作和漫游,查詢工程信息,可視化預(yù)警存在問(wèn)題工程及應(yīng)急事件處理預(yù)案的查詢等,為實(shí)際工程施工和管理提供了一種可視化的解決方案。
可視化管理系統(tǒng);Quest3D;VC++;MySQL
項(xiàng)目管理在施工過(guò)程中具有重要意義,而傳統(tǒng)的文字、圖表等管理方式,在項(xiàng)目管理中存在諸多不便利性。隨著計(jì)算機(jī)技術(shù)的發(fā)展,可視化管理成為研究熱點(diǎn),其研究所使用的技術(shù)和手段不盡相同,如李濤[1]利用VB與虛擬現(xiàn)實(shí)平臺(tái)(virtual reality platform,VRP)結(jié)合實(shí)現(xiàn)了橋梁施工管理的可視化;魏欣海[2]利用VB與AutoCAD模型的數(shù)據(jù)傳遞模擬工程進(jìn)度的狀態(tài)變化;郭強(qiáng)等[3]運(yùn)用科學(xué)知識(shí)圖譜方法和 CiteSpace軟件分析工程管理學(xué)科研究動(dòng)態(tài)的可視化;吳全立等[4]采用J2EE及Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)了盾構(gòu)隧道工程可視化安全風(fēng)險(xiǎn)管理軟件的開(kāi)發(fā);譚章祿等[5]利用數(shù)據(jù)挖掘、可視化技術(shù)等構(gòu)建了礦井安全可視化管理模型和礦井安全可視化管理平臺(tái)結(jié)構(gòu)模型。
虛擬現(xiàn)實(shí)技術(shù)的出現(xiàn)為工程管理提供了新的模式,3D可視化技術(shù)應(yīng)用于工程管理,克服了傳統(tǒng)文字、表格等管理模式不形象直觀的缺點(diǎn),實(shí)現(xiàn)了項(xiàng)目管理的直觀化、可視化。鑒于此,本系統(tǒng)以某工程項(xiàng)目為研究對(duì)象,采用Quest3D虛擬現(xiàn)實(shí)交互技術(shù),結(jié)合VC++及MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)了該工程重點(diǎn)項(xiàng)目的可視化管理,并通過(guò)服務(wù)監(jiān)聽(tīng)機(jī)制實(shí)現(xiàn)異地?cái)?shù)據(jù)的同步與更新。該系統(tǒng)直觀展示了工程施工進(jìn)度,同時(shí)對(duì)施工進(jìn)度及存在的質(zhì)量、環(huán)保、安全等問(wèn)題進(jìn)行可視化預(yù)警,并提供針對(duì)重大事件處理的應(yīng)急預(yù)案庫(kù),從而使管理者隨時(shí)隨地通過(guò)系統(tǒng)對(duì)工程進(jìn)度、施工中出現(xiàn)的工期拖延、材料供應(yīng)不足及存在的質(zhì)量、安全、環(huán)保等問(wèn)題了如指掌;還可通過(guò)應(yīng)急預(yù)案庫(kù)為處理重大質(zhì)量、安全隱患、環(huán)保等問(wèn)題提供參考方案,從而使應(yīng)急事件預(yù)警處于可視監(jiān)控狀態(tài),為施工管理提供了一個(gè)可視化的異地在線管理平臺(tái)。
目前,虛擬現(xiàn)實(shí)開(kāi)發(fā)平臺(tái)很多,如Virtual tools、VRP、Java3D[6]、VRML[7]、Cult3D[8]、Quest3D等,這些技術(shù)各有其優(yōu)越性。Quest3D是荷蘭Act-3D公司基于DirectX開(kāi)發(fā)的三維交互開(kāi)發(fā)平臺(tái),可提供豐富具有特定邏輯功能模塊的Channel。在Quest3D 的Channel編輯器中,通過(guò)連接和設(shè)置相關(guān)參數(shù),可建構(gòu)出復(fù)雜功能的VR交互系統(tǒng),且系統(tǒng)的擴(kuò)展性強(qiáng)[9]。Quest3D程序開(kāi)發(fā)的一般流程如圖1所示。
圖1 Cult3D程序開(kāi)發(fā)流程
該工程主要包括新區(qū)主干道、東西區(qū)安置房等,新區(qū)主干道工程為連接該市新老城區(qū)的一條最重要交通干道,全長(zhǎng)11.62 km,包括路基、橋梁、涵洞等。系統(tǒng)以新區(qū)主干道的重大代表性工程為主要研究對(duì)象,即某特大橋和某隧道工程。特大橋分左右兩幅,橋梁左幅橋跨長(zhǎng)1 110 m,右幅橋跨長(zhǎng)1 330 m。隧道為雙線隧道,左線長(zhǎng)1 314.67 m,右線長(zhǎng)1 320 m,屬長(zhǎng)隧道。
系統(tǒng)采用B/S 結(jié)構(gòu)構(gòu)建,客戶端提供可視化交互控制、查詢及管理界面,服務(wù)器端進(jìn)行數(shù)據(jù)維護(hù)與管理,數(shù)據(jù)庫(kù)存儲(chǔ)于服務(wù)器端。系統(tǒng)以工程數(shù)據(jù)庫(kù)為支撐,以Quest3D為可視化構(gòu)建工具,實(shí)現(xiàn)工程項(xiàng)目可視化管理平臺(tái),系統(tǒng)框架結(jié)構(gòu)如圖2所示。系統(tǒng)以三維虛擬場(chǎng)景直觀呈現(xiàn)工程項(xiàng)目,且通過(guò)鼠標(biāo)和鍵盤進(jìn)行交互操作和場(chǎng)景漫游,可視化展示工程進(jìn)度、質(zhì)量、材料、安全、環(huán)保、成本等信息。系統(tǒng)的主要模塊功能說(shuō)明如下:
(1) 工程可視化模塊。該模塊包括工程進(jìn)度可視化和工程預(yù)警可視化兩部分。
①進(jìn)度可視化以工程進(jìn)度數(shù)據(jù)庫(kù)中的數(shù)據(jù)為依據(jù),實(shí)時(shí)展示工程進(jìn)度,從而實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的項(xiàng)目進(jìn)度動(dòng)態(tài)可視化監(jiān)控,實(shí)現(xiàn)工程進(jìn)度3D可視化。
②工程預(yù)警可視化實(shí)現(xiàn)對(duì)施工進(jìn)度、材料供應(yīng)及存在的質(zhì)量、環(huán)保、安全等問(wèn)題進(jìn)行可視化預(yù)警,如進(jìn)度超前或滯后,是否存在質(zhì)量、環(huán)保、安全隱患等問(wèn)題。可提醒管理者出現(xiàn)問(wèn)題的工程部位、可能原因、應(yīng)采取的措施等,當(dāng)出現(xiàn)重大質(zhì)量或安全等應(yīng)急事件預(yù)警時(shí),可以查詢應(yīng)急預(yù)案庫(kù),為解決問(wèn)題提供參考。
(2) 場(chǎng)景漫游與交互操作模塊。該模塊實(shí)現(xiàn)基于鼠標(biāo)和鍵盤完成與三維模型的交互操作,以及在三維場(chǎng)景中的漫游。
(3) 工程信息查詢模塊。該模塊通過(guò)信息查詢平臺(tái)實(shí)現(xiàn)對(duì)各種工程信息的查詢、統(tǒng)計(jì)等,如查詢指定標(biāo)段的工程進(jìn)度、材料供應(yīng)、存在的質(zhì)量或安全問(wèn)題等,同時(shí)可以生成查詢結(jié)果表單。
(4) 五控目標(biāo)動(dòng)態(tài)分析模塊。該模塊負(fù)責(zé)動(dòng)態(tài)統(tǒng)計(jì)每月五控目標(biāo)完成情況及表單生成,五控目標(biāo)動(dòng)態(tài)分析包括施工工期造價(jià)動(dòng)態(tài)分析、施工動(dòng)態(tài)EV分析及質(zhì)量、安全、環(huán)保的動(dòng)態(tài)分析。施工工期造價(jià)動(dòng)態(tài)分析和施工動(dòng)態(tài)EV分析運(yùn)用已獲價(jià)值方法計(jì)算統(tǒng)計(jì)完成,質(zhì)量、安全和環(huán)保的動(dòng)態(tài)分析通過(guò)統(tǒng)計(jì)法和打分法完成。
(5) 數(shù)據(jù)維護(hù)與管理模塊。該模塊用于對(duì)各標(biāo)段的工程進(jìn)度、材料供應(yīng)、質(zhì)量、安全、環(huán)保及成本等信息的維護(hù)和管理,并上傳到服務(wù)器端,完成數(shù)據(jù)的更新與同步。
(6) 服務(wù)監(jiān)聽(tīng)模塊。負(fù)責(zé)異地?cái)?shù)據(jù)的同步更新與遠(yuǎn)程通訊。不同標(biāo)段、不同部門負(fù)責(zé)各自的項(xiàng)目數(shù)據(jù)維護(hù)管理和更新。為了避免大量異地?cái)?shù)據(jù)實(shí)時(shí)同步更新而導(dǎo)致系統(tǒng)繁忙,系統(tǒng)通過(guò)服務(wù)監(jiān)聽(tīng)機(jī)制,分時(shí)段或定期進(jìn)行數(shù)據(jù)更新,具體更新時(shí)間由瀏覽者決定。
圖2 系統(tǒng)結(jié)構(gòu)框圖
(7) 數(shù)據(jù)庫(kù)模塊。該模塊實(shí)現(xiàn)對(duì)工程進(jìn)度、材料供應(yīng)、資金到位及存在的質(zhì)量、安全、環(huán)保等信息的管理,工程數(shù)據(jù)庫(kù)及相應(yīng)數(shù)據(jù)表利用 MySQL完成,數(shù)據(jù)庫(kù)包括工程項(xiàng)目、材料、成本、質(zhì)量、安全、環(huán)保6個(gè)數(shù)據(jù)表,各數(shù)據(jù)表都包含標(biāo)段、項(xiàng)目編號(hào)作為關(guān)聯(lián)字段。同時(shí),建立了應(yīng)急預(yù)案庫(kù),為工程應(yīng)急事件處理提供參考。
4.1模型創(chuàng)建
系統(tǒng)所涉及的模型包括橋梁和隧道工程模型、樹(shù)木綠化、地形等,其中橋梁和隧道工程模型是系統(tǒng)的主要控制對(duì)象,與數(shù)據(jù)庫(kù)之間有一一對(duì)應(yīng)關(guān)系。
4.1.1各類模型的建立方法
(1) 橋梁和隧道工程模型是將準(zhǔn)確的AutoCAD圖經(jīng)過(guò)簡(jiǎn)化后導(dǎo)入3DMax,通過(guò)拉伸等方法完成。如橋墩、橋臺(tái)、T梁、橋面等橋梁模型以及開(kāi)挖步驟模型、初期支護(hù)、仰拱、二襯等隧道模型。3DMax中完成的模型如圖3所示。
圖3 3DMax建模效果圖
(2) 地形創(chuàng)建方法:把項(xiàng)目平面圖的邊界經(jīng)緯度信息標(biāo)記在Google earth上,按照從上至下的順序在該軟件上畫(huà)出等距直線,用該軟件查看高程信息功能,獲取該等距直線的地形剖面,利用貼圖的方式將3DMax獲取的剖面貼到與Google earth相同的等距平面上,再用3DMax中的曲線繪制工具描出地形剖面,并將繪制好的地形剖面線附加在一起,之后修改器建模中的曲面命令形成地形網(wǎng)格,同時(shí)把Google earth中的衛(wèi)星圖貼到該網(wǎng)格上,從而得到真實(shí)的項(xiàng)目地形圖和周邊地理信息。完成后的地形效果如圖4所示。
圖4 3DMax完成的地形效果圖
4.1.2建模注意事項(xiàng)
(1) 刪除不必要的線和面,線不能導(dǎo)入到Quest3D,且對(duì)模型進(jìn)行平滑操作。
(2) 不要?jiǎng)?chuàng)建距離很近或相互疊加的面,否則Quest3D會(huì)出現(xiàn)相互穿透的閃爍現(xiàn)象。
(3) 為防止法線錯(cuò)位,所有物體執(zhí)行法線重置操作。
(4) 貼圖最好為2n尺寸,如128×256,但不要大于1024×1024,否則影響瀏覽速度。
4.1.3模型導(dǎo)出
模型建立后,可導(dǎo)出為“.X”或cgr格式文件。系統(tǒng)采用cgr格式文件。導(dǎo)出時(shí),需將獨(dú)立控制的模型分布導(dǎo)出,以便在Quest3D中控制和操作對(duì)象,如將左幅橋梁的第37根橋墩分別導(dǎo)出37個(gè)cgr模型。導(dǎo)出后的cgr文件均導(dǎo)入到Quest3D中,完成虛擬場(chǎng)景的模型創(chuàng)建。
4.2Quest3D與MySQL數(shù)據(jù)連接
二者連接的具體方法和步驟如下:
(1) 連接。Quest3D通過(guò) DB Source和 DB DriverMySQL實(shí)現(xiàn)與MySQL數(shù)據(jù)庫(kù)的連接,在DB DriverMySQL中設(shè)置數(shù)據(jù)庫(kù)連接的地址、數(shù)據(jù)庫(kù)名、用戶名、密碼等,完成數(shù)據(jù)庫(kù)連接。
(2) 查詢。使用DB Query查詢數(shù)據(jù),設(shè)置數(shù)據(jù)源以及查詢條件,如“SELECT * FROM projectdata”,實(shí)現(xiàn)從projectdata表中查詢所有數(shù)據(jù)。
(3) 數(shù)據(jù)存取。通過(guò)DB Value和DB Text實(shí)現(xiàn)數(shù)字型和字符型數(shù)據(jù)的存儲(chǔ)。為避免數(shù)據(jù)的頻繁讀取,系統(tǒng)通過(guò) For Loop將數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)在Array channel中,完成數(shù)據(jù)存儲(chǔ)。
數(shù)據(jù)庫(kù)連接及數(shù)據(jù)提取如圖5所示。及信息提示,預(yù)警實(shí)現(xiàn)方式如下:
(1) 對(duì)存在問(wèn)題的工程紅色閃爍預(yù)警,鼠標(biāo)點(diǎn)擊彈出問(wèn)題信息;
(2) 在建工程黃色顯示,鼠標(biāo)點(diǎn)擊顯示進(jìn)度信息等;
(3) 完工工程正常顯示,點(diǎn)擊實(shí)時(shí)顯示完工信息等。
預(yù)警的實(shí)現(xiàn)如圖6所示,系統(tǒng)通過(guò)ChannelSwitch控制Material的 Diffuse字段,利用Expression Value作為ChannelSwitch的條件設(shè)置。當(dāng)工程在建時(shí),條件值為1,選擇黃色顯示;當(dāng)工程某一環(huán)節(jié)出現(xiàn)問(wèn)題時(shí),條件值為3,選擇紅色閃爍顯示,工程正常時(shí),以默認(rèn)方式顯示。
圖5 數(shù)據(jù)庫(kù)連接及數(shù)據(jù)提取
圖6 可視化預(yù)警實(shí)現(xiàn)
4.3可視化預(yù)警及信息提示
三維虛擬模型根據(jù)工程實(shí)際進(jìn)度與計(jì)劃進(jìn)度實(shí)時(shí)對(duì)工程項(xiàng)目進(jìn)行預(yù)警提醒,具體包括顏色預(yù)警
工程信息查詢是通過(guò) Lua channel實(shí)現(xiàn)。Lua channel可加載或卸載通道、進(jìn)行復(fù)雜的計(jì)算等。Lua可以調(diào)用CallChannel和GetValue兩個(gè)函數(shù),分別用于完成通道的調(diào)用及值的返回。如圖7所示,系統(tǒng)通過(guò)Lua腳本實(shí)現(xiàn)在虛擬場(chǎng)景中的信息提示。
4.4數(shù)據(jù)查詢與維護(hù)
系統(tǒng)的數(shù)據(jù)維護(hù)與查詢是利用VC++實(shí)現(xiàn),包括數(shù)據(jù)庫(kù)的連接、數(shù)據(jù)查詢及相應(yīng)交互界面設(shè)計(jì)等。其中數(shù)據(jù)庫(kù)連接和數(shù)據(jù)表打開(kāi)的主要代碼如下:
m_sql.Open(null,false,false,"ODBC;DSN=mdb;" //連接數(shù)據(jù)庫(kù)
CString sqlstr="select * from bridge";//設(shè)置查詢條件
CBridgeD *m_pSet;//創(chuàng)建數(shù)據(jù)記錄指針
m_pSet=new CBridgeD(&((CQiaochuxunApp*)AfxGet App())->m_db); //為記錄指針賦值
if(!m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,sql str))//判斷是否打開(kāi)bridge表
AfxMessageBox("數(shù)據(jù)表打開(kāi)失??!"); //打開(kāi)失敗提示
工程信息查詢包括工程狀態(tài)、材料供應(yīng)、質(zhì)量問(wèn)題等,以進(jìn)度狀態(tài)查詢?yōu)槔f(shuō)明數(shù)據(jù)庫(kù)信息查詢的實(shí)現(xiàn),以下是部分代碼:
void OnSearch() { //從工程狀態(tài)下拉列表中選擇要查詢的工程狀態(tài)
switch(m_sel.GetCurSel()) {
case 0: DispList (0,bd);break; //查詢未開(kāi)工工程
case 1: DispList (1,bd);break; //查詢?cè)诮üこ?/p>
case 2: DispList (2,bd);break; //查詢已完工程
case 3: DispList (3,bd);break;//查詢工期拖延工程}……}
voidDispList (int zt, int bd) {//根據(jù)工程狀態(tài)代碼及所屬標(biāo)段篩選和顯示查詢結(jié)果
m_list.DeleteAllItems();m_pSet->MoveFirst(); //清空數(shù)據(jù)列表,并將指針移到首記錄處
while(!m_pSet->IsEOF())//循環(huán)遍歷整個(gè)數(shù)據(jù)表
{// 判斷是否滿足要查詢的標(biāo)段和工程狀態(tài)代碼
if(m_pSet->m_xmid= =bd&&m_pSet->m_zth= =zt)
{//將符合條件的記錄逐條插入到數(shù)據(jù)列表中
itoa(m_pSet->m_id,buf,10); m_list.InsertItem
(i,buf);//插入序號(hào)
m_list.SetItemText(i,1,m_pSet->m_jingdu); //插入項(xiàng)目名稱
str.Format("%0.1f",atof(m_pSet->m_wch)/atof(m_pSet->m_jh wch)*100);
m_list.SetItemText(i,3,str);//計(jì)算并插入進(jìn)度完成量
m_list.SetItemText(i,5,m_pSet->m_zhuangtai);//插入工程狀態(tài)
……//插入其他項(xiàng)目
i++; }
m_pSet->MoveNext(); }}
圖8為系統(tǒng)維護(hù)主界面。圖9示工程查詢主界面,顯示內(nèi)容為第二標(biāo)段的工程信息。
圖8 數(shù)據(jù)維護(hù)界面
圖9 工程信息查詢界面
系統(tǒng)利用Quest3D、VC++、MySQL實(shí)現(xiàn)了某工程的可視化管理系統(tǒng),具有數(shù)據(jù)異地同步、預(yù)警可視化、虛擬場(chǎng)景漫游、信息直觀查詢等。圖 10為三維虛擬可視化場(chǎng)景,通過(guò)上部的交互按鈕,實(shí)時(shí)對(duì)某工程或標(biāo)段進(jìn)行查看,有助于工程的全局管理與進(jìn)度掌控。該系統(tǒng)在實(shí)際工程施工中得到了應(yīng)用,且效果良好。同時(shí),對(duì)其他工程管理項(xiàng)目具有借鑒作用。
圖10 三維可視化虛擬場(chǎng)景
[1] 李濤. 橋梁施工管理可視化系統(tǒng)研究[D]. 阜新: 遼寧工程技術(shù)大學(xué), 2011.
[2] 魏欣海. 沉管隧道工程可視化進(jìn)度管理的研究[D]. 北京: 清華大學(xué), 2007.
[3] 郭強(qiáng), 陳栩婕, 秦江濤. 工程管理學(xué)科中研究動(dòng)態(tài)的可視化分析[J]. 上海交通大學(xué)學(xué)報(bào), 2013, 35(3): 209-214.
[4] 吳全立, 王夢(mèng)恕, 駱建軍. 盾構(gòu)隧道工程可視化安全風(fēng)險(xiǎn)管理軟件的研究與開(kāi)發(fā)[J]. 現(xiàn)代隧道技術(shù), 2013, 50(4): 15-23.
[5] 譚章祿, 史后波, 方毅芳, 等. 礦井安全可視化管理平臺(tái)研究[J]. 煤礦機(jī)械, 2012, 33(7): 284-286.
[6] 馮桂珍, 池建斌, 王大鳴, 等. 采用Java3D構(gòu)建虛擬校園技術(shù)的研究[J]. 工程圖學(xué)學(xué)報(bào), 2009, 30(6): 186-190.
[7] 馮桂珍, 池建斌, 王晨, 等. VRML模型創(chuàng)建工具中可視化交互操作的設(shè)計(jì)和實(shí)現(xiàn)[J]. 系統(tǒng)仿真學(xué)報(bào), 2006, 18(2): 387-390.
[8] 馮桂珍, 池建斌. 模具虛擬實(shí)驗(yàn)系統(tǒng)的開(kāi)發(fā)[J]. 河北省科學(xué)院學(xué)報(bào), 2011, 28(2): 21-25.
[9] 路朝龍. Quest3D從入門到精通[M]. 北京: 中國(guó)鐵道出版社, 2012: 1-269.
Research and Implementation of Visual Management System Based on Quest3D
Feng Guizhen,Zhang Zengqiang,Chi Jianbin,Xing Haijun
(Mechanical Engineering Institute, Shijiazhuang Tiedao University, Shijiazhuang Hebei 050043, China)
As a platform of 3D interactive technology based on DirectX, Quest3D has very good application space. By taking a project as an example and structuring with VC++, Quest3D and MySQL, a visual management system based on studying the process, method and related technology of constructing 3D interactive virtual scene with Quest3D is developed, which achieves data synchronization and updates through service monitoring mechanism. In the virtual engineering projection scene, users can interactively manipulate and freely walk with mouse or keyboard, search projection message, visually warn existed problems and the preplan of emergency event handling and so on, provideing visual solution for the engineering construction and project management.
visual management system; Quest3D; VC++; MySQL
TP 391.9
10.11996/JG.j.2095-302X.2016010115
A
2095-302X(2016)01-0115-05
2015-01-13;定稿日期:2015-06-13
河北省教育廳項(xiàng)目(QN20131130);河北省高校重點(diǎn)學(xué)科建設(shè)項(xiàng)目
馮桂珍(1978–),女,內(nèi)蒙古商都人,副教授,碩士。主要研究方向?yàn)樘摂M現(xiàn)實(shí)及CAD技術(shù)。E-mail:fgz789618@163.com