趙均
摘要:為實(shí)現(xiàn)綠色施工,在已知管道數(shù)據(jù)的基礎(chǔ)上,使用3Dmax建立了地下管網(wǎng)模型,通過(guò)Virtools發(fā)布到IE瀏覽器。對(duì)實(shí)施過(guò)程中的幾個(gè)關(guān)鍵技術(shù)進(jìn)行了闡述。
關(guān)鍵詞:3Dmax;Virtools;二叉樹
DOIDOI:10.11907/rjdk.143759
中圖分類號(hào):TP317.4
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2015)001013402
0 引言
以前,地下管網(wǎng)的隱蔽工程資料由傳統(tǒng)的二維CAD圖完成,根據(jù)要求的起、止點(diǎn),窨井的坐標(biāo)和管頂標(biāo)高等參數(shù)控制施工,在復(fù)雜環(huán)境下,這種施工方法不利于節(jié)約材料,增大了返工的幾率,土方開挖還會(huì)對(duì)周圍環(huán)境設(shè)施產(chǎn)生破壞。三維模型可以直觀顯示管道的地下形態(tài)和走向,以及管道和周圍設(shè)施之間的空間距離,減少人為主觀臆斷猜想,從而全面、系統(tǒng)地安排施工。
1 系統(tǒng)架構(gòu)
一個(gè)完整的虛擬實(shí)景開發(fā)架構(gòu)如圖1所示,本次應(yīng)用只使用“建模軟件”、“虛擬實(shí)景開發(fā)平臺(tái)”、“虛擬實(shí)景”、“Web瀏覽器”部分。采用3Dmax建模軟件,根據(jù)擬裝設(shè)備材料信息,建立3D模型。在VirtoolsDev中,把開發(fā)好的虛擬三維交互系統(tǒng),通過(guò)File菜單/Create Web Page生成為VMO網(wǎng)頁(yè)格式的文件,進(jìn)入三維虛擬系統(tǒng)環(huán)境進(jìn)行瀏覽操作。安裝Virtools Web Player瀏覽器,在桌面交互計(jì)算機(jī)平臺(tái)上運(yùn)行VMO文件,網(wǎng)絡(luò)瀏覽是通過(guò)Html調(diào)用VMO文件超鏈接方式實(shí)現(xiàn)的[1]。
圖1 虛擬實(shí)境開發(fā)架構(gòu)
2 三維建模
2.1 創(chuàng)建幾何模型
建模主要有以下4個(gè)步驟:拆分建筑物單元、構(gòu)建主體建筑、具體細(xì)節(jié)的構(gòu)造和處理、粘貼紋理。在擬安裝管線的結(jié)構(gòu)上,分解管道構(gòu)成管件,建立閥門、法蘭、伸縮管等復(fù)雜管件庫(kù),以方便后續(xù)直接調(diào)用。管溝內(nèi)按照管道坐標(biāo)控制管件走向和高度,放置管件模型到相應(yīng)位置。管溝外建筑物可采用形體合并建模方法,以地面為參考面,按照位置要求放置相應(yīng)建筑物。
具體操作應(yīng)注意以下幾個(gè)方面:①3Dmax制作的所有模型以及材質(zhì)的命名都應(yīng)該使用英文字母、數(shù)字,而且名字的長(zhǎng)度要盡量控制在20個(gè)字符以內(nèi);②3Dmax模型制作完成后要根據(jù)建模對(duì)象的復(fù)雜程度,選擇一個(gè)或者多個(gè)組合導(dǎo)出生成3dm格式模型文件,如閥門是多個(gè)異形體的組合;③每個(gè)模型導(dǎo)出后在文本中記錄其平移坐標(biāo)。
2.2 紋理貼圖
建筑物紋理圖片直接取自相應(yīng)建筑物分辨率較高的數(shù)碼照片,并使用CAD或其它相應(yīng)軟件對(duì)紋理圖片進(jìn)行校正,然后再使用PhotoShop進(jìn)行處理,使之符合貼圖要求。將建筑物各表面貼上對(duì)應(yīng)紋理,一個(gè)三維模型就建立了。常用金屬管道屬性設(shè)置見(jiàn)表1。
具體操作應(yīng)注意以下幾個(gè)方面:①制作3Dmax模型時(shí),材質(zhì)圖片完成后要轉(zhuǎn)換為dds格式,并且使用dds格式的圖片做最后的紋理圖片;②3Dmax模型的材質(zhì)圖片大小必須是2n,也就是說(shuō)材質(zhì)圖片的邊長(zhǎng)必須是16、32、64、128、256、512、1 024……;③3Dmax模型導(dǎo)出后必須使用3dm-viewer進(jìn)行查看,檢查紋理是否完整,并保證導(dǎo)出正確模型;④導(dǎo)出的3dm格式模型文件要和相對(duì)應(yīng)的紋理圖片保存在同一個(gè)文件夾內(nèi),文件夾命名必須使用英文字母,該文件夾禁止出現(xiàn)子文件夾。
2.3 烘焙技術(shù)
在建模過(guò)程中,如果用面片數(shù)量的增加來(lái)?yè)Q取微觀細(xì)致的表面結(jié)構(gòu),會(huì)增大系統(tǒng)運(yùn)行負(fù)荷。3Dmax的Rende ring to Texture渲染到紋理的模塊功能,即常說(shuō)的Texture Baking貼圖烘焙技術(shù),通過(guò)貼圖模擬表面紋理幾何結(jié)構(gòu),是一種有效改善三維模型真實(shí)性的措施,能夠避免在三維模型搭建中用過(guò)多的面數(shù)來(lái)表示每個(gè)細(xì)節(jié),降低了模型的復(fù)雜度[1]。
紋理圖越大渲染的效果就越好,烘焙紋理的大小直接影響最終效果。但紋理過(guò)大,對(duì)計(jì)算機(jī)的系統(tǒng)資源消耗就大,渲染速度也很慢。因此,在地下管網(wǎng)系統(tǒng)中,需要有計(jì)劃地進(jìn)行烘焙設(shè)置。對(duì)于施工中的新設(shè)備、新工藝、新材料,新型管件應(yīng)優(yōu)先考慮使用較大紋理尺寸,管材可以適當(dāng)降低烘焙時(shí)的紋理尺寸,這樣可節(jié)約有限的系統(tǒng)資源,從而獲得高效的烘焙效果。
3 Virtools重要功能
3.1 場(chǎng)景管理
地下管線屬于隱蔽工程,展示工程時(shí)需要采用視域剪裁、遮擋面剔除等手段,隱藏不需關(guān)注的地面信息,如房屋、橋梁、花壇、管溝上方路面等;保留重要節(jié)點(diǎn)指示標(biāo)識(shí),方便快速定位查找;采用橋梁、大型建筑等遮擋指示標(biāo)識(shí),花壇、房屋等地面建筑,地下管線等分層隱藏按鈕。
3.2 碰撞檢測(cè)
虛擬建筑環(huán)境實(shí)時(shí)漫游時(shí),以攝像機(jī)作為觀測(cè)視角。由于攝像機(jī)的移動(dòng),攝像機(jī)和管道可能發(fā)生碰撞,為保持環(huán)境的真實(shí)性,需要及時(shí)檢測(cè)到這些碰撞,并計(jì)算相應(yīng)的碰撞反應(yīng),更新繪制結(jié)果。為增強(qiáng)虛擬場(chǎng)景的沉浸感和真實(shí)感,定義在管溝內(nèi)自由漫游時(shí),不可穿越管道和溝壁。
在虛擬場(chǎng)景中,兩個(gè)不規(guī)則的運(yùn)動(dòng)物體將要發(fā)生碰撞時(shí),可以采用球形包圍盒檢測(cè)法來(lái)進(jìn)行檢測(cè),當(dāng)碰撞發(fā)生時(shí),采取相應(yīng)措施以避免碰撞。首先用參數(shù)操作Get Distance獲取物體Object1和物體Object2的半徑之和,用功能模塊Test來(lái)檢測(cè)它們之間的距離是否小于兩個(gè)物體的半徑之和;如果小于,則用功能模塊Object Slider來(lái)讓它們彼此滑動(dòng),從而避免碰撞[2]。
3.3 漫游路徑
自動(dòng)漫游是讓用戶在設(shè)計(jì)好的路線上觀察建筑物。在關(guān)鍵點(diǎn)、設(shè)計(jì)精彩的位置或是寓意深刻的景觀作適當(dāng)停留,并加入聲音向客戶說(shuō)明,以吸引客戶注意力。相機(jī)將沿著預(yù)設(shè)路徑移動(dòng),不需要人工干涉,從而全面瀏覽場(chǎng)景[3]。
在自動(dòng)漫游模式下,以飛行模式觀察主管、支管,沿有效路徑進(jìn)行漫游。將區(qū)域內(nèi)管線的末端閥門及關(guān)鍵管件簡(jiǎn)化為節(jié)點(diǎn),使用二叉樹算法,沿管線對(duì)每個(gè)節(jié)點(diǎn)遍歷。為突出工藝管件的重要性,采用先序遍歷的遞歸算法,即若二叉樹非空,則依次執(zhí)行如下操作:訪問(wèn)根結(jié)點(diǎn)、遍歷左子樹、遍歷右子樹。先序遍歷二叉樹的遞歸算法如下:
void PreOrder(BiTree bt)
{/*先序遍歷二叉樹bt*/
if (bt==NULL) return; /*遞歸調(diào)用的結(jié)束條件*/
Visite(bt->data); /*訪問(wèn)結(jié)點(diǎn)的數(shù)據(jù)域*/
PreOrder(bt->lchild); /*先序遞歸遍歷bt的左子樹*/
PreOrder(bt->rchild); /*先序遞歸遍歷bt的右子樹*/
}
3.4 數(shù)據(jù)庫(kù)連接
在采用自由漫游方式時(shí),有時(shí)候需要了解實(shí)物具體參數(shù),如地下管網(wǎng)窨井、轉(zhuǎn)折點(diǎn)坐標(biāo),井蓋、井底、溝槽和管頂?shù)鹊母叱蹋案阶⒐艿兰榜烤木幪?hào)、名稱、管徑、管材、間距、坡度和流向。Virtools連接數(shù)據(jù)庫(kù),自由漫游實(shí)物,顯示對(duì)應(yīng)參數(shù)。
(1)安裝SQL Server數(shù)據(jù)庫(kù)。 服務(wù)器操作系統(tǒng)推薦使用Windows Server 2003,并安裝IIS。
(2)完成數(shù)據(jù)庫(kù)在ODBC數(shù)據(jù)源管理器的配置。①依次點(diǎn)擊[開始]→[管理工具]→[數(shù)據(jù)源ODBC]項(xiàng)目,啟動(dòng)[ODBC數(shù)據(jù)源管理]的應(yīng)用程序;②在[ODBC數(shù)據(jù)源管理器]中,切換選項(xiàng)卡至[系統(tǒng)DSN];③點(diǎn)擊[添加]按鈕,打開[創(chuàng)建新數(shù)據(jù)源]向?qū)?;④在向?qū)е校x擇[SQL Server]項(xiàng);⑤點(diǎn)擊[完成];⑥在[創(chuàng)建到SQL Server的新數(shù)據(jù)源]向?qū)е?,分別輸入[名稱]、[描述]、[服務(wù)器]項(xiàng),并點(diǎn)擊[下一步]按鈕;⑦在向?qū)е?,選擇[使用用戶輸入登錄ID和密碼的SQL Server驗(yàn)證]項(xiàng),并在[登錄ID]和[密碼]中分別輸入要連接數(shù)據(jù)庫(kù)的賬戶和密碼;⑧在向?qū)е校瑢更改默認(rèn)的數(shù)據(jù)庫(kù)為]項(xiàng),設(shè)置為要訪問(wèn)的數(shù)據(jù)庫(kù)名稱;⑨其它選擇默認(rèn)值,點(diǎn)擊[下一步]按鈕;B10使用默認(rèn)值,點(diǎn)擊[完成]按鈕。
(3)Virtools Server Controller配置。①依次點(diǎn)擊[開始]→[3DVIA]→[Virtools Multiuser Server 5.0]→[Server Controller]的應(yīng)用程序;②在對(duì)話框中點(diǎn)擊[Setup]按鈕,顯示[Virtools Server Setup]對(duì)話框;③在對(duì)話框中,更改[Server address]組中的[Address]項(xiàng),從列表中選擇已自動(dòng)識(shí)別的IP地址;④[Port]項(xiàng)可保持默認(rèn)值;⑤在更改后,[Address]和[Port]將在Virtools中使用;⑥在[Modules]組中,雙擊[Virtools Server Database Module]項(xiàng);⑦在[Database Module Configuration]對(duì)話框中,點(diǎn)擊[Add Database]項(xiàng),添加數(shù)據(jù)源;⑧在[機(jī)器數(shù)據(jù)源]選項(xiàng)卡中選擇要使用的數(shù)據(jù)源;⑨點(diǎn)擊[確定]按鈕,輸入數(shù)據(jù)源的登錄密碼;B10在[Database]列表中配置多個(gè)數(shù)據(jù)源供Virtools使用;B11點(diǎn)擊[OK]按鈕,完成添加數(shù)據(jù)源;B12在[Virtools Server Controller]對(duì)話框中,點(diǎn)擊[Start]按鈕啟動(dòng)服務(wù)。