1研究背景
《關於推進建築信息模型BIM應用的指導意見》中明確提出,到2020年末,建築行業甲級勘察、設計單位,以及特級、一級房屋建築工程施工企業應掌握並實現BIM與企業管理系統和其他信息技術的一體化集成應用,而在國家和地方的綠色建築評價標準,要求使用BIM技術,在甲方的招標文件中也要求設計院、施工單位、造價諮詢公司等建築行業單位採用BIM技術。
目前,隨著信息化時代與大數據時代的發展,由於BIM技術在建築行業應用越來越廣泛,傳統的BIM輕量化引擎在國外出現較早,但採用WebGL技術的輕量化引擎則較晚,國外主要以美國為主出現了很多開源的輕量化引擎,如XBIM、BIMServer等。而國內技術基本與國外技術處於同一水平,如廣聯達BIMFace、葛蘭岱爾的GLWebGLBIMEngine等。這些引擎處理BIM模型數據的軟體和方法也大不相同,那麼現在由於BIM模型的體量越來越大,現有的引擎並不能真正實現輕量化並給予用戶良好的體驗,一些小型企業如果想要流暢的應用BIM軟體技術,還需要購買高端圖形化工作站來運行,導致成本支出巨大,這對於小型企業是無法接受的。為提高BIM應用在設計、施工、運維等方面的優勢,使得廣大企業能夠使用BIM技術為公司創造價值,BIM輕量化引擎需要提高模型處理性能和Web端性能,以保證模型在Web端運行流暢。
2輕量化的技術研究
BIM關鍵核心技術是描述貫穿整個建築物全生命周期內產品數據的中間數據標準,IFC標準是其中之一,IFC標準是由國際協同工作聯盟IAI為建築行業發布的建築產品數據表達標準,本質上是建築物和建築工程數據的定義,反映的是現實世界中的對象,它採用了一種面向對象的、規範化的數據描述語言EXPRESS語言作為數據描述語言,定義所用到的數據。本文使用IFC來作為模型信息展示的標準,BIM項目運用開源的BIMServer作為本次研究的模型引擎,BIMServer為建築信息模型伺服器,能夠存儲和管理建築項目相關的信息,數據存儲在開放數據標準IFC中,它不是一個文件伺服器,但是它使用的模型驅動的體系結構方法。
Three.JS作為在Web端渲染的框架進行展示,是一個JavaScript的開源三維引擎,通過對WebGL的封裝使,可以直接運行在Web端,也可以在Web中創建各種三維場景,包括攝像機、光影、材質等各種對象。從設計模型到轉換BIM模型再到最終在電腦或者移動終端看到的模型,中間經歷了1個解析過程和2個處理過程,解析過程利用BIMServer項目在上傳模型時進行模型數據解析,這個過程在本文中不予討論。本文將討論幾何轉換和渲染處理2個處理過程,這2個處理過程的好壞直接影響到最終輕量化的效果,是BIM模型輕量化的關鍵環節。
3幾何轉換
從微觀角度來講,幾何轉換過程就是將設計模型轉換到BIM模型的過程。目前的處理方式有參數化幾何描述和三角化幾何描述。
參數化幾何描述就是用多個參數來描述一個幾何體,比如畫一個圓柱體模型可以使用3個參數來進行表達,參數1為底面原點坐標(x、y、z,3個數據),參數2為底面半徑(r,1個數據),參數3為柱子高度(h,1個數據),可以使用5個數據來完成一個圓柱體的搭建,這樣比較精簡,這種參數化幾何描述可以將單個圖元做到最極致的輕量化。
三角幾何描述就是用多個三角形來描述一個幾何體,三角形可以拼接成任意的平面或者曲面,而多個三角形的面最終拼成一個三維體,在屏幕上看到的任意一個三維模型都是由一個一個的三角形拼接而成的,一個模型三角形越多,模型看上去就越為精細,反之越粗糙,這就是LOD的原理,用N個三角形作為圓柱的各個面來畫一個圓柱體,N值越大,柱子表面越光滑,當小於某個值時,圓柱的曲面將會是帶有稜角的,而這個值的設定需要看具體模型的體量。
由這兩種方法可見,從微觀角度來說參數化的輕量效果要比幾何描述方法好一些。但是還存在一些問題,參數化幾何描述需要解析設計模型的原始幾何信息,還需要轉化為自由的幾何描述,這個過程需要幾何算法庫的支撐,技術難度比較大,對比三角形的幾何描述,這點從技術角度實現要複雜一點,三角形幾何描述只需要將設計模型轉換為三角數據保存即可,主流的設計軟體一般都提供相關的二次開發接口或者SDK來獲取三角形數據。
從宏觀角度來講,當模型體量巨大、數據為海量數據時,一個模型會有很多個相同構件,比如一座房屋的樁基,它們的構件形狀是一模一樣的,但位置不同,這時可以選擇只保留一個樁的數據,其他樁可以記錄引用並加上空間坐標,這樣大大減少了構件數量,在這其中需要判斷兩個構件是否一樣,對此可運用相似行算法。
4渲染處理
為了實現流暢、實時顯示,通常繪製達到30幀/秒,如果模型數據量較大,比如樓宇建築模型,模型的三角面片數會達到上千萬,內存就需要幾十G的容量來與之對應,正常一臺電腦無法完全無法滿足要求,通過對WebGL輕量化BIM引擎工作機理的解析,可以看出輕量化引擎處理BIM大模型的重點在於,如何實現對模型幾何數據的有效規劃,進而解決本地電腦從三維幾何數據的下載,到本地的內存管理和高效的渲染,需要通過各種手段來加速場景的繪製並精簡,控制內存開銷。本文分別從微觀和宏觀的角度對渲染處理做以說明。
從微觀角度來講,多重LOD方式加速單圖元渲染速度,當場景中的一些物體距離視點較遠或者物體本身比較小時,最終投射到屏幕上的像素並不多,如果用過多的幾何圖元來表示這些物體會浪費存儲並影響性能,用多重LOD不同級別的構件來表示物體,距離越遠加載的模型越粗糙,距離越近,系統才需要將這些構件加載內存並進行實時渲染。同時,系統會將視野外的構件數據從內存中清除掉,從而在不影響視覺效果的前提下提高顯示效率並降低內存,確保流暢的渲染,其計算方法為單次渲染體量=圖元數量×圖元精度,視點遠時圖元數量多,圖元精度低視點近,精度高圖元數量小,體量是不變的。所以,使用LOD技術可以確保在大場景和局部場景都能夠流暢渲染模型。
從宏觀角度來說,整體思路為遮擋剔除和運用批次繪製技術,遮擋剔除是在場景繪製中剔除當前視點下被遮擋的對象,對圖元做八叉樹空間索引,根據視點計算要剔除的圖元,只繪製最前面的對象,從而帶來顯示效率的提升。批量繪製技術是為了將一個物體繪製到屏幕上,需要發起一次圖形API繪製調用,繪製調用非常耗費CPU,並且通常會造成GPU時間閒置,為了優化性能、平衡CPU和GPU負載,可以將具有相同狀態(例如相同材質)的物體合併到一次繪製調用中。這種方法通過合併物體來減少繪製調用,從而帶來性能的優化,批次繪製可以預先處理,形成靜態的批次,或者繪製每幀時進行動態調整,這種稱為動態批次合併,有時需要用這種動態和靜態批次合併策略,達到渲染流暢度的提升。
5結語
本文通過對BIM模型加載渲染中輕量化技術方法作以描述可知,輕量化主要從幾何轉換和渲染處理兩個環節著手進行優化,針對技術利弊以及應用需求來對技術進行選用,其輕量化模型數據有參數幾何描述和相似性圖元合併,提升渲染效果有遮擋提出和批量繪製及LOD技術等。這些技術為模型輕量化的核心技術,把這些技術運用到基於B/S架構的BIM項目中,能夠整體提升模型的加載和渲染速度,大大提升用戶在使用BIM項目操作中的體驗。
撰稿:金廣龍(1984-),男,吉林松原人,渤海石油航務建築工程有限責任公司工程師,研究方向:工程材料試驗檢測、金屬材料檢測。
(轉自《中國高新科技》雜誌2020年第12期)