張耀允,戴 瑋,孫 莉
(1.安徽省交通規(guī)劃設(shè)計(jì)研究總院股份有限公司,安徽 合肥 230088;2.公路交通節(jié)能環(huán)保技術(shù)交通運(yùn)輸行業(yè)研發(fā)中心,安徽 合肥 230088)
近年來,BIM應(yīng)用的深度逐漸增加,在建筑的全生命周期都開始應(yīng)用。BIM的核心是信息流,三維模型的角色是信息載體,因此,如何將BIM模型從規(guī)劃設(shè)計(jì)階段推廣到施工和運(yùn)維階段,是設(shè)計(jì)人員一個努力的重要方向。
在各類施工和運(yùn)維管理系統(tǒng)中,大多數(shù)是瀏覽器/服務(wù)器結(jié)構(gòu),通過互聯(lián)網(wǎng)和Web網(wǎng)頁運(yùn)行。要實(shí)現(xiàn)在頁面中瀏覽查詢?nèi)S模型,從而更加方面、快捷、形象地管理建筑信息,離不開Web 3D技術(shù)的支持,而WebGL則是當(dāng)前主流的Web 3D解決方案[1]。
設(shè)計(jì)模型的數(shù)據(jù)格式主要是針對設(shè)計(jì)階段,包含很多設(shè)計(jì)參數(shù)和歷史信息,因此不適合直接應(yīng)用在施工和運(yùn)維階段進(jìn)行Web開發(fā)。因此,探索從設(shè)計(jì)模型輸出成WebGL支持的數(shù)據(jù)格式,是解決問題的關(guān)鍵所在。
DGN數(shù)據(jù)格式是美國Bentley工程系列軟件的通用格式,廣泛應(yīng)用于交通、水利、建筑等工程建設(shè)領(lǐng)域。DGN數(shù)據(jù)格式適應(yīng)建筑信息模型(BIM)的需求,通過其EC Framework支持工程屬性的定制和開發(fā)。
WebGL是一種3D繪圖標(biāo)準(zhǔn),這種繪圖技術(shù)標(biāo)準(zhǔn)允許把JavaScript和OpenGL ES 2.0結(jié)合在一起,為HTML5 Canvas提供硬件3D加速渲染,可被用于創(chuàng)建具有復(fù)雜3D結(jié)構(gòu)的網(wǎng)站頁面。由于各大瀏覽器和移動系統(tǒng)都對WebGL標(biāo)準(zhǔn)有著良好的支持,使得在Web頁面上展現(xiàn)三維場景不再需要另外安裝插件,WebGL的應(yīng)用前景非??捎^。
當(dāng)前流行的WebGL的JavaScript框架很多,基于這些函數(shù)庫,可以快速搭建效果很好的三維Web應(yīng)用,其中CesiumJS是比較流行的開源框架。CesiumJS是一個三維地理信息WebGL函數(shù)庫。CesiumJS的三維圖形數(shù)據(jù)格式為gltf,具有數(shù)據(jù)體積小、讀入快等優(yōu)點(diǎn)?;趃ltf開發(fā)的3D Tiles建立了空間索引,實(shí)現(xiàn)了大量三維圖形的分步分塊加載。
三維建模軟件及三維CAD軟件的數(shù)據(jù)格式不同于用于渲染的數(shù)據(jù)格式,一般存儲的是圖形參數(shù)和工程屬性信息。在圖形方面,這種數(shù)據(jù)格式可以方便建模及模型修改,但是顯示及渲染效率遠(yuǎn)不如面片格式;在工程屬性方面,存儲在設(shè)計(jì)文件中的工程屬性數(shù)據(jù)結(jié)構(gòu)需要解析才能讀取。因此,需要將設(shè)計(jì)模型的圖形三角化為面片格式,同時將設(shè)計(jì)模型的工程屬性轉(zhuǎn)換輸出,從而實(shí)現(xiàn)web端的渲染顯示及屬性顯示。
因?yàn)槿S建模軟件及三維CAD軟件的格式一般是不公開的,借助中間格式會有很多的信息丟失[3],所以需要使用其API編寫專門的程序完成圖形三角化、數(shù)據(jù)優(yōu)化及輸出工作[4]。
在輸出為3D Tiles時,首先需要根據(jù)三維數(shù)據(jù)的空間分布特點(diǎn),建立空間索引。常用的空間索引有規(guī)則格網(wǎng)、四叉樹、八叉樹和kd樹等形式,如圖1所示。每個索引單元的大小,可以根據(jù)數(shù)據(jù)量或空間尺寸確定。
圖1 空間索引示例(四叉樹)
在空間索引建立后,每一個塊的數(shù)據(jù),根據(jù)細(xì)節(jié)的不同,可以輸出成不同精細(xì)或豐富程度的模型。三維信息模型不同于數(shù)字地表模型,屬于三維的矢量數(shù)據(jù),每個元素代表一個構(gòu)件,所以在細(xì)節(jié)展示方面,綜合使用三角面片簡化和細(xì)節(jié)子元素刪減兩種策略。
三角面片簡化對于曲面的簡化效果較好,根據(jù)角度、弦弧差、三角面尺寸等參數(shù),可以有效地簡化組成元素的曲面,如圖2所示。細(xì)節(jié)子元素刪減適用于復(fù)雜的元素簡化,通過尺寸、重要性等參數(shù)的選定,可以簡化不必要的子元素,如圖3所示。
同一塊索引單元內(nèi)的模型,輸出不同精度的文件,通過空間索引機(jī)制,根據(jù)屏幕的實(shí)際地理尺度,調(diào)取不同精度的模型文件。
圖2 三角面片簡化(吊索錨固端)
圖3 細(xì)節(jié)子元素刪減(索塔段)
三維建模軟件及三維CAD軟件中,使用的大都是笛卡爾直角坐標(biāo)系。而在建筑信息模型的生產(chǎn)中,一般采用局部坐標(biāo)系或空間投影坐標(biāo)系。因此需要將模型區(qū)域的基點(diǎn)轉(zhuǎn)換為地理坐標(biāo)系,才能實(shí)現(xiàn)三維地理信息場景中數(shù)據(jù)的地理疊加。
基準(zhǔn)點(diǎn)換算完畢后,需要計(jì)算該點(diǎn)在地理橢球面上的法向量,從而得到旋轉(zhuǎn)矩陣,實(shí)現(xiàn)模型的地理疊加。CesiumJS及大多數(shù)三維地理信息場景的地球使用的是WGS 84地理坐標(biāo)系,而加載模型使用的是地心直角坐標(biāo)系(earth-centered,earth-fixed,ECEF)。因此總體的換算流程如圖4所示。
圖4 坐標(biāo)轉(zhuǎn)換流程
MDL是Microstation提供的二次開發(fā)語言及其函數(shù)庫,借助MDL實(shí)現(xiàn)對DGN文件中圖形及其屬性的獲取,轉(zhuǎn)換為gltf格式[5]。根據(jù)已經(jīng)建立的空間索引規(guī)則,判斷該元素所屬的文件塊,并輸出為3D Tiles的切片文件b3dm格式。
顯示程序在CesiumJS基礎(chǔ)上進(jìn)行二次開發(fā),實(shí)現(xiàn)設(shè)計(jì)模型交付成果的加載顯示。由于設(shè)計(jì)模型轉(zhuǎn)換為3D Tiles之后,為保證顯示效果,圖形顯示壓力一般比較大。信息模型用戶瀏覽三維圖形的習(xí)慣明顯不同于三維游戲用戶,其特點(diǎn)包括關(guān)注模型位置及相互關(guān)系、鼠標(biāo)交互操作頻率較低、一般全局視角、瀏覽隨意、場景變換頻繁、模型元素需要從網(wǎng)絡(luò)下載等。
針對這些特點(diǎn)開發(fā)場景加速器程序,減少場景旋轉(zhuǎn)顯示壓力,按需加載各類數(shù)據(jù),明顯提升了圖形顯示效率。
以某長江公路大橋左汊懸索橋?yàn)槔?,其設(shè)計(jì)模型使用Bentley的Microstation和Open Bridge Modeler完成三維信息模型創(chuàng)建。內(nèi)容包含大橋所有的結(jié)構(gòu)物,以及支座、護(hù)欄、排水設(shè)施、伸縮縫、樓梯、標(biāo)志標(biāo)線等主要設(shè)施,設(shè)計(jì)文件大小總計(jì)2.81 GB。
使用基于Microstation二次開發(fā)的程序,提取場景的幾何中心為模型的基準(zhǔn)點(diǎn),換算為WGS 84下的ECEF坐標(biāo)并完成旋轉(zhuǎn)矩陣的計(jì)算。讀取與解析DGN文件中的工程屬性字段,輸出為mongodb數(shù)據(jù)庫。
空間索引采用規(guī)則格網(wǎng)加四叉樹,模型文件建立L3、L4、L5三種精細(xì)程度。轉(zhuǎn)換為3D Tiles后,模型文件總數(shù)量超過1 000個,總大小為3.17 GB。將數(shù)據(jù)加載至Web前端進(jìn)行渲染,如圖5所示,并在此基礎(chǔ)上開發(fā)了橋梁養(yǎng)護(hù)相關(guān)的應(yīng)用功能,總體運(yùn)行效果良好。
圖5 利用WebGL渲染長江大橋
在DGN模型的處理及加載顯示過程中,還有一些問題尚未得到理想的解決:
(1)設(shè)計(jì)模型不標(biāo)準(zhǔn)。同一文件中,有的構(gòu)件以組形式存在,有的以圖層形式存在,造成在轉(zhuǎn)換過程中構(gòu)件劃分方法不一致。因此,需要建立統(tǒng)一的三維設(shè)計(jì)標(biāo)準(zhǔn),保證圖形、屬性的規(guī)范化。
(2)內(nèi)存釋放機(jī)制。受限于Cesium的基礎(chǔ)框架限制,很多模型雖然不在場景中渲染,但是依舊會保留在內(nèi)存中。這一方面是保證模型再次顯示的效率,但是也加大了內(nèi)存的存儲壓力。如何在二者之間尋求平衡需要進(jìn)一步研究。
此外,隨著傾斜攝影測量及實(shí)景建模、遙感、GPS、BIM集成的需求越來越多[6],如何更加高效地進(jìn)行數(shù)據(jù)交換是需要一直研究解決的關(guān)鍵問題。