史瑞昌,秦 琳,朱 一
(中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京 100081)
建筑信息模型(BIM,Building Information Model)已成為工業互聯網在智慧建筑方向的研究熱點,特別是BIM軟件之間的數據交換技術和Web渲染技術備受相關研究人員的關注。BuildingSMART[1]提出并成為BIM數據交換國際標準的工業基礎類(IFC,Industry Foundation Classes)標準[2],進一步加快了BIM應用的研究與成果落地。Web端BIM大場景應用是未來發展趨勢,IFC標準在實際應用中存在以下問題:IFC模型文件數據并非直接可渲染數據,為滿足渲染要求,其數據需要經過轉換處理;BIM場景數據體量較大時,受制于網絡帶寬、瀏覽器性能、網頁渲染技術等多方面因素,Web端BIM應用的用戶體驗不佳。
為解決上述問題,近年來的研究主要集中在IFC模型文件數據解析與轉換優化、BIM可視化應用等方面。在IFC模型文件轉換方面,劉強等人[3]提出一種基于鍵值緩存的IFC模型文件Web應用技術,將IFC模型文件解析成JSON格式,為數據在網絡傳輸提供基礎;徐照等人[4]提出一種基于WebGL的渲染方法,開發了IFC-OBJ轉換工具,但未考慮OBJ模型文件不可分割、過大時加載時間過長,甚至無法完成加載等問題。BIM可視化應用方面,Hong-Lei Lu等人[5]在Scully T等人[6-7]提出的大模型分割策略基礎上考慮語義劃分,提出了基于語義對IFC大模型劃分,實現構件語義劃分并對模型進行分割后,利用空間索引完成場景加載,其劃分策略依賴語義數據集,數據集收集和語義劃分模型訓練實現較為復雜,且需要為特定場景定制算法模型;李柯等人[8]提出云邊頁協同的Web端BIM多粒度在線可視化框架,定義構件興趣度,在復雜遮擋場景中,效果不佳;劉小軍等人[9]提出一種面向手機網頁的大規模Web端BIM場景實時漫游算法,該算法從構件實例冗余、構件及空間混合索引、多粒度數據動態裝/卸載策略3個方面對場景進行管理和加載,其空間劃分剔除算法,僅適合遮擋關系較強的構件,需要提前設定遮擋物,設定遮擋物工作量較大,且通用性受限;BIMServer[10]為開源的IFC模型文件處理、Web端BIM場景加載工具集,作為BuildingSMART推薦的工具集,將IFC模型文件層次關系、幾何特性、材質、屬性等數據分開加載,在一定程度上解決了BIM大場景應用問題,但未考慮構件加載優先級。基于上述研究,本文提出基于IFC標準的面向需求的動態加載(IFC based Demand-Oriented Dynamic Loading,DODL)方法。對IFC數據進行解析轉換,將層次關系、幾何特性、材質、屬性等數據拆分存儲,在原數據基礎上,拓展輔助場景加載的字段;為優化Web端BIM大場景加載,提出基于GPU加速實現構件需求計算方法,計算需要加載的構件集合,并利用幾何相關性設計構件加載優先級,計算構件加載順序;通過網絡服務,完成BIM大場景加載。
根據鐵路BIM應用實際情況,BIM應用流程可分為3部分,如圖1所示。

圖1 鐵路BIM應用流程
建模人員使用CATIA等設計軟件完成三維模型后,導出IFC格式模型數據,為數據共享和應用奠定基礎。
讀取IFC模型文件,解析層次關系、幾何特性、材質、屬性等數據,重點處理無法直接渲染的拓撲幾何,并將結構化JSON格式數據存儲在數據庫中,為后續場景加載提供支撐。IFC模型文件無法直接用于計算機圖形渲染,需要對其進行解析和處理,此過程耗時且對硬件資源要求較高,為減少數據處理時間,可利用云服務器資源完成此過程。
搭建Web應用,Web端通過網絡服務,加載BIM場景,結合鐵路業務開展應用。
IFC模型文件處理即是對IFC模型文件解析、轉換、拆分、存儲的過程,該過程主要分為2部分:
(1)使用python腳本,制定特定類型正則表達式,過濾IFC.exp文件中的基本類型、枚舉類型、select類型、實體類型,并根據類型定義與繼承關系,生成可用于編譯的CPP文件,為IFC模型文件讀取與解析奠定基礎;
(2)讀取IFC模型文件,根據CPP文件,在運行時動態生成IFC實例對象,通過查詢IFC實例對象,將層次關系、幾何特性、材質、屬性等數據進行拆分與轉換,并將結果存儲到數據庫。
IFC實例對象拆分過程如下:
(1)為構建模型層次關系,以IfcProject實例對象為入口,篩選IfcProduct類型實例對象,區分出空間結構元素和非空間結構元素(構件節點),將空間結構元素構造為組節點對象,處理節點屬性和局部矩陣等信息,遞歸處理空間結構元素包含的節點和關聯的節點,直至非空間結構元素的節點;
(2)對非空間結構元素處理,判斷其包含的Items屬性的實例類型,分別處理幾何、拓撲、映射、材質類型數據,幾何和拓撲類型數據需要借助幾何算法庫Open CASCADE[11]實現幾何、拓撲生成與網格剖分,進而構造葉子節點存儲幾何數據,并建立幾何與葉子節點間的關聯關系。
拆分后數據結構如圖2所示。
圖2中字段含義如表1所示。

表1 字段含義說明

圖2 拆分后數據結構
在網絡資源有限的情況下,BIM大場景無法通過一次網絡請求完成整個場景加載時,有必要考慮構件的加載優先級。用戶通過計算機外設與模型進行交互,定位到特定視角查看模型,用戶視角范圍內的模型構件即用戶需求的構件,應具有較高加載優先級,需要優先完成加載。
初始加載過程如下。
(1)根據模型標識,請求模型層次關系數據;從網絡加載層次關系;根據層次關系中葉子節點的box字段,構建可用于渲染的輔助box網格。
(2)根據模型包圍盒初始化視角,獲取相機視錐參數,進而對場景進行視錐剔除,得到視錐內可見性構件集合。
(3)綜合考慮效率與剔除精確性,采用WebGL 2.0接口,基于GPU對視錐剔除后集合box網格進行渲染查詢,計算視錐體內box網格是否被遮擋。
(4)過濾出未遮擋構件集合,即需要加載的構件集合,根據構件幾何唯一標識與優先級,完成加載。初始加載過程如圖3所示。用戶交互改變視角時,與初始加載不同,不需要網絡請求模型、解析層次關系和構造可渲染box網格,只需要從視角剔除開始,加載未加載的構件數據。

圖3 基于GPU加速的構件需求計算流程
構件自身的幾何數據量比其他數據量大,因此,幾何特性是影響構件加載優先級主要因素之一,例如,包圍盒box的大小、復雜度等,其中,復雜度是指構件幾何網格數據存儲所占用的空間情況。本文層次關系定義中,bits字段可用于描述復雜度,單位為字節(byte)。因幾何特性是影響加載優先級的主要因素,在設計構件加載優先級時,需重點關注幾何特性。
幾何相關性(CG,Correlation of Geometry)是構件包圍盒體積與其復雜度的比值,表示為
公式(1)中,CG(ci)為構件ci的幾何相關性;bits(ci)為構件ci的復雜度; volume(ci)為構件ci的包圍盒box的體積;CG(ci) 的物理意義為單位字節傳輸空間體積大小。 bits(ci)越小、 volume(ci) 越大,則CG(ci)越大,加載到的數據對最后渲染到屏幕的影響越大,對用戶的視覺影響越大,因此,加載優先級越高;反之,加載優先級越低。
具體計算方法如下:借助幾何算法庫Open CASCADE,以不被遮擋的構件集合作為輸入,遍歷所有構件,利用式(1)計算幾何相關性,并根據計算結果對構件集合由大到小排序,得到有序的加載構件集合?;趲缀蜗嚓P性的構件加載優先級計算步驟如下。
步驟 1:輸入無序構建集合C={ci,i=0, 1,…,M}。
步驟 2:若集合C中有元素ci,則取出;若無,則結束。
步驟 3:查看ci剔除標識,若是,執行步驟 4;若不是,則跳轉到步驟 5。
步驟 4:計算ci的幾何相關性。
步驟 5:得出c′i,插入、排序到集合C′。
步驟 6:重復Step 2,最終得到有序構建集合C′={c′j,j=0, 1,…,N}。
為驗證本文提出的DODL方法的可用性和有效性,設定BIM場景加載過程中評價指標,搭建實驗環境。選取公開數據集Open IFC Model Repositor[12]中IFC模型文件作為實驗樣本,借助幾何算法庫Open CASCADE,進行仿真實驗,并與使用BIMServer開源服務器平臺加載的方法進行比較。使用3個不同的IFC模型文件,選取初始加載構件個數、內存占用和初始加載時間作為性能評價指標。實驗使用的IFC模型文件信息如表2所示,圖4(a)~圖4(c)分別為3個IFC模型文件默認視角下的渲染效果。

表2 IFC模型文件信息

圖4 實驗用IFC模型文件默認視角下的渲染效果
實驗軟/硬件環境配置:Intel(R) Core(TM)i7-11800H 處理器,16.0 GB內存,NVIDIA RTX3060顯卡,64 bit Windows 11專業版21H2系統,Chrome版本為106.0.524 9.103,對比組BIMServer 的版本為1.5.182。
初始加載構件數,即初始視角情景下,需要加載構件的個數,單位為個。3個IFC模型文件在DODL方法下初始加載構件數分別為1 252、2 178、4 547,相比BIMServer加載方法下的初始加載構件數5 786、7 637、27 958,分別減少了78%、71%、83%,如圖5所示。實驗結果表明,DODL方法可有效減少初始加載構件數。

圖5 初始加載構件個數比較
占用內存,即初始視角情景下,初始加載完成后,瀏覽器占用的內存,單位為MB。3個IFC模型文件在DODL方法下占用內存分別為125、156、346,相比BIMServer加載方法下占用的內存218、287、580,分別減少了42%、45%、40%,如圖6所示。實驗結果表明,DODL方法可有效減少初始加載時占用的內存。

圖6 占用內存比較
初始化加載時間,即初始視角情景下,從網絡請求開始至可見的構件加載完成時止,所用時間長短,單位為ms。3個IFC模型文件在DODL方法下初始化加載時間分別為2 641、4 631、8 867,相比BIMServer加載方法下的初始化加載時間13 105、77 656、41 853,分別縮短了79%、94%、78%,如圖7所示。實驗結果表明,DODL方法可有效縮短初始化加載時間,減少用戶因場景加載而等待的時間,提高了用戶體驗。

圖7 初始加載時間比較
本文研究IFC模型文件處理、面向需求的動態加載方法,提出基于IFC的面向需求的動態加載方法,在IFC數據拆分存儲基礎上,通過對視錐內構件進行過濾、排序,實現基于IFC標準的面向需求的動態加載。通過實驗,證明了所提方法的可行性和可用性,可改善用戶體驗,也可推廣至其他非IFC格式的模型文件加載鐵路BIM的應用場景。
在Web端加載BIM場景過程中,仍存在需要進一步解決的問題,例如:IFC模型文件處理過程耗時較長;模型場景加載的過程中,初始加載時受初始視角影響,不同初始視角下,加載構件數、初始加載時間、占用內存等均有不同。因此,今后將進一步研究縮短文件處理時間及最優化選取視角的方法。