張耀允,戴 瑋,孫 莉
(1.安徽省交通規劃設計研究總院股份有限公司,安徽 合肥 230088;2.公路交通節能環保技術交通運輸行業研發中心,安徽 合肥 230088)
近年來,BIM應用的深度逐漸增加,在建筑的全生命周期都開始應用。BIM的核心是信息流,三維模型的角色是信息載體,因此,如何將BIM模型從規劃設計階段推廣到施工和運維階段,是設計人員一個努力的重要方向。
在各類施工和運維管理系統中,大多數是瀏覽器/服務器結構,通過互聯網和Web網頁運行。要實現在頁面中瀏覽查詢三維模型,從而更加方面、快捷、形象地管理建筑信息,離不開Web 3D技術的支持,而WebGL則是當前主流的Web 3D解決方案[1]。
設計模型的數據格式主要是針對設計階段,包含很多設計參數和歷史信息,因此不適合直接應用在施工和運維階段進行Web開發。因此,探索從設計模型輸出成WebGL支持的數據格式,是解決問題的關鍵所在。
DGN數據格式是美國Bentley工程系列軟件的通用格式,廣泛應用于交通、水利、建筑等工程建設領域。DGN數據格式適應建筑信息模型(BIM)的需求,通過其EC Framework支持工程屬性的定制和開發。
WebGL是一種3D繪圖標準,這種繪圖技術標準允許把JavaScript和OpenGL ES 2.0結合在一起,為HTML5 Canvas提供硬件3D加速渲染,可被用于創建具有復雜3D結構的網站頁面。由于各大瀏覽器和移動系統都對WebGL標準有著良好的支持,使得在Web頁面上展現三維場景不再需要另外安裝插件,WebGL的應用前景非常可觀。
當前流行的WebGL的JavaScript框架很多,基于這些函數庫,可以快速搭建效果很好的三維Web應用,其中CesiumJS是比較流行的開源框架。CesiumJS是一個三維地理信息WebGL函數庫。CesiumJS的三維圖形數據格式為gltf,具有數據體積小、讀入快等優點。基于gltf開發的3D Tiles建立了空間索引,實現了大量三維圖形的分步分塊加載。
三維建模軟件及三維CAD軟件的數據格式不同于用于渲染的數據格式,一般存儲的是圖形參數和工程屬性信息。在圖形方面,這種數據格式可以方便建模及模型修改,但是顯示及渲染效率遠不如面片格式;在工程屬性方面,存儲在設計文件中的工程屬性數據結構需要解析才能讀取。因此,需要將設計模型的圖形三角化為面片格式,同時將設計模型的工程屬性轉換輸出,從而實現web端的渲染顯示及屬性顯示。
因為三維建模軟件及三維CAD軟件的格式一般是不公開的,借助中間格式會有很多的信息丟失[3],所以需要使用其API編寫專門的程序完成圖形三角化、數據優化及輸出工作[4]。
在輸出為3D Tiles時,首先需要根據三維數據的空間分布特點,建立空間索引。常用的空間索引有規則格網、四叉樹、八叉樹和kd樹等形式,如圖1所示。每個索引單元的大小,可以根據數據量或空間尺寸確定。

圖1 空間索引示例(四叉樹)
在空間索引建立后,每一個塊的數據,根據細節的不同,可以輸出成不同精細或豐富程度的模型。三維信息模型不同于數字地表模型,屬于三維的矢量數據,每個元素代表一個構件,所以在細節展示方面,綜合使用三角面片簡化和細節子元素刪減兩種策略。
三角面片簡化對于曲面的簡化效果較好,根據角度、弦弧差、三角面尺寸等參數,可以有效地簡化組成元素的曲面,如圖2所示。細節子元素刪減適用于復雜的元素簡化,通過尺寸、重要性等參數的選定,可以簡化不必要的子元素,如圖3所示。
同一塊索引單元內的模型,輸出不同精度的文件,通過空間索引機制,根據屏幕的實際地理尺度,調取不同精度的模型文件。

圖2 三角面片簡化(吊索錨固端)

圖3 細節子元素刪減(索塔段)
三維建模軟件及三維CAD軟件中,使用的大都是笛卡爾直角坐標系。而在建筑信息模型的生產中,一般采用局部坐標系或空間投影坐標系。因此需要將模型區域的基點轉換為地理坐標系,才能實現三維地理信息場景中數據的地理疊加。
基準點換算完畢后,需要計算該點在地理橢球面上的法向量,從而得到旋轉矩陣,實現模型的地理疊加。CesiumJS及大多數三維地理信息場景的地球使用的是WGS 84地理坐標系,而加載模型使用的是地心直角坐標系(earth-centered,earth-fixed,ECEF)。因此總體的換算流程如圖4所示。

圖4 坐標轉換流程
MDL是Microstation提供的二次開發語言及其函數庫,借助MDL實現對DGN文件中圖形及其屬性的獲取,轉換為gltf格式[5]。根據已經建立的空間索引規則,判斷該元素所屬的文件塊,并輸出為3D Tiles的切片文件b3dm格式。
顯示程序在CesiumJS基礎上進行二次開發,實現設計模型交付成果的加載顯示。由于設計模型轉換為3D Tiles之后,為保證顯示效果,圖形顯示壓力一般比較大。信息模型用戶瀏覽三維圖形的習慣明顯不同于三維游戲用戶,其特點包括關注模型位置及相互關系、鼠標交互操作頻率較低、一般全局視角、瀏覽隨意、場景變換頻繁、模型元素需要從網絡下載等。
針對這些特點開發場景加速器程序,減少場景旋轉顯示壓力,按需加載各類數據,明顯提升了圖形顯示效率。
以某長江公路大橋左汊懸索橋為例,其設計模型使用Bentley的Microstation和Open Bridge Modeler完成三維信息模型創建。內容包含大橋所有的結構物,以及支座、護欄、排水設施、伸縮縫、樓梯、標志標線等主要設施,設計文件大小總計2.81 GB。
使用基于Microstation二次開發的程序,提取場景的幾何中心為模型的基準點,換算為WGS 84下的ECEF坐標并完成旋轉矩陣的計算。讀取與解析DGN文件中的工程屬性字段,輸出為mongodb數據庫。
空間索引采用規則格網加四叉樹,模型文件建立L3、L4、L5三種精細程度。轉換為3D Tiles后,模型文件總數量超過1 000個,總大小為3.17 GB。將數據加載至Web前端進行渲染,如圖5所示,并在此基礎上開發了橋梁養護相關的應用功能,總體運行效果良好。

圖5 利用WebGL渲染長江大橋
在DGN模型的處理及加載顯示過程中,還有一些問題尚未得到理想的解決:
(1)設計模型不標準。同一文件中,有的構件以組形式存在,有的以圖層形式存在,造成在轉換過程中構件劃分方法不一致。因此,需要建立統一的三維設計標準,保證圖形、屬性的規范化。
(2)內存釋放機制。受限于Cesium的基礎框架限制,很多模型雖然不在場景中渲染,但是依舊會保留在內存中。這一方面是保證模型再次顯示的效率,但是也加大了內存的存儲壓力。如何在二者之間尋求平衡需要進一步研究。
此外,隨著傾斜攝影測量及實景建模、遙感、GPS、BIM集成的需求越來越多[6],如何更加高效地進行數據交換是需要一直研究解決的關鍵問題。