隨著 WebBIM 和3D-GIS技術的大力發展,建筑模型的復雜度與構件數量呈幾何倍數增長,其中管廊復雜網格是影響模型輕量化和在線渲染速率的一個關鍵性問題。為有效減少管廊復雜網格模型的數據量及復雜度,本文針對一般圓柱體形管廊,復雜網格的彎管管廊模型及中空管廊網格模型,提出了一套輕量級參數化算法。該算法對場景中的管廊模型進行參數化重繪并輔助以多細節層次等視覺優化手段,以減輕 WebBIM 場景中的管廊模型渲染負擔,其在擁有大量管廊模型的場景中應用成功,具有較強的工程實踐意義。
近年來,網絡技術的發展突飛猛進,人類正向高度信息化的社會邁進。BIM在國內建筑業形成一股熱潮,盡管擁有了政府和社會的大力支持,Web 端的 BIM 大規模場景應用開發仍然面臨許多巨大的挑戰:
一、網頁存儲瓶頸問題:隨著 BIM場景規模的增加,建筑內部空間結構復雜度不斷提升,管廊結構的模型體量不斷增加,BIM 數據未來可能達到城市級別(100 TB 以上),通常來說,PC 端的瀏覽器能夠使用的內存僅為 1.5 至 2 GB,稍大的 BIM模型就可能會導致瀏覽器的崩潰。
二、計算渲染瓶頸問題:傳統加載方式中,IFC構件被逐一添加在場景中,管廊模型擁有的三角化面片數量多,導致整個初始加載速度慢,且場景中FPS 較低,瀏覽建筑模型容易出現明顯卡頓情況。
在以上問題的基礎上,尤其是管廊管線這類構件往往在城市建筑模型中占有了一定的比重,例如水管,通風管道等,且建筑物內部管廊模型排列往往具有一定的復雜性,優化這部分管廊模型的參數,能夠有效減少場景中的三角面片數量,幫助提升模型加載速率,對改善上述的兩個瓶頸問題起到了積極的作用。
因此針對上述問題,本文提出了一套三維管廊復雜網格參數化算法,首先通過語義分析和幾何分析,提取大規模 IFC 場景中的管廊網格模型構件類。然后針對一般圓柱體形管廊網格模型,彎管管廊模型以及中空管廊模型三種不同的特征,對其在服務端
分類進行參數化處理,并將參數結果返回給網頁端進行渲染。為了降低網頁端的渲染負載,實例化管廊模型的同時輔助以基于 LOD 多細節層次技術的漸進式自適應渲染方法,有效降低場景中管廊模型部分的總數據量及其三角面片數量,加快場景初始加載時間以及提升場景總體加載的幀速率,為輕量化BIM 大規模管廊模型場景的在線可視化提供了支持。
1 相關研究
1.1 管廊的參數化原理
通常的直線管廊網格模型的構造圖如圖 1 所示,具體渲染方法為:將直線三維管廊網格模型抽象為正圓柱體,管線中心抽象為正圓柱體的中軸線,管線中心線起止點為正圓柱體上下底面圓圓心,圓柱體半徑為管徑。
提取到了以上的管廊模型參數信息后,在瀏覽器 端 渲 染 時 可 以 利 用 Three.js 提 供 的THREE.Cylinder Geometry 對象對管廊進行批量建模。利用 THREE.Cylinder Geometry 對象進行圓柱體建模時可接收多個參數, 而在實際建模過程中主要用到三個參數, 分別是:頂面半徑、底面半徑以及圓柱體的高度, 分別對應三位管線的半徑以及管線長度。生成管線模型的幾何對象之后,還需利用 THREE.Material 為其貼上合適的紋理,通過THREE.Mesh(geometry,material)生成完整的管線段
模型。
1.2 管廊多細節層次技術(LOD)
LOD 的主要想法是降低復雜性,當視點遠離3D模型對象時,根據人的視覺系統,遠處對象會變小或者變得模糊不清,這時我們可以使用該對象的簡化版本。對象簡化版本的實現多種多樣,通常是通過較少三角形的數據或者替代幾何模型的幾何特征和紋理來實現。不管簡化版本的實現方法如何,其策略的最終結果是將一個相比原模型壓力較小的對象交給 GPU 去處理,降低渲染復雜度,提高場景加載的速率針對管廊網格模型,多細節層次技術主要調整的是參數化后的管廊網格切割塊數,當攝像機視角靠近的時候,切割塊數增多,三維管廊模型越精細,而當攝像機視角原理時,可以減少模型的切割塊數,管廊模型呈現較粗糙。
1.3 大規模 BIM模型在線實時渲染
“互聯網+”時代的到來為 BIM 信息的傳遞和共享提供了更為廣闊的舞臺,“互聯網+BIM”的融合、發展也是勢不可擋。網頁瀏覽器是移動互聯網上最為廣泛通用的信息共享平臺,直接在網頁瀏覽器上將 BIM 場景可視化地再現出來就變得更有
吸引力。用戶們只需要點擊瀏覽網頁就可以訪問大規模 BIM 場景與之交互。尤其是正在流行的HTML5/WebGL 提供了一種無插件安裝的 Web3D開發平臺,這大大便捷了互聯網 BIM 的可視化共享瀏覽,所以 WebBIM 在線可視化將成為“互聯
網+BIM 可視化”的主流發展趨勢。
但是由于大規模的 BIM 場景存在實時響應速度慢、渲染能力弱、數據傳輸緩慢等問題,WebBIM 在線可視化將會受到因網頁瀏覽器緩存受限而導致的存取不暢、尤其是管廊模型較多的大規模 BIM 建筑,數據量較大可能導致瀏覽器的癱瘓。因互聯網帶寬受限而導致的傳輸緩滯、因網頁瀏覽器渲染能力受限而導致的漫游延遲的影響,這些影響將會嚴重阻礙 WebBIM 大規模場景的在線實時可視化共享。因此,本文所研究的管廊復雜網格模型的參數化方法及其在線可視化技術能夠針對網頁的在線渲染問題做出改善,具有重要的實踐意義。
綜上所述,本文的創新點主要體現在針對大規模 WebBIM 模型的加載和渲染瓶頸提出了一種基于管廊網格模型的參數化算法,能夠根據管廊網格模型不同的分類進行參數化處理,在瀏覽器端采用一種基于 LOD 的漸進式加載方式,緩解了瀏覽器
端的數據壓力,提升了模型的渲染效率,為擁有大規模三維管廊網格的 WebBIM 建筑模型的模型解析與在線渲染提供了新的優化方向。
2 技術路線
本文所采用的技術路線如圖 3 所示。在服務器端,需要完成工作包括從語義分析以及幾何分析角度進行管廊模型構件的提取,以及基于圓柱體形管廊網格構件的參數化算法研究,進一步拓展彎管三維管廊模型的參數化算法以及基于布爾運算的中空復
雜管廊模型的參數化算法。
3 關鍵技術
整個三維管廊模型對象的抽取過程如圖 4 中所示,從構件語義分析提取構件是從以上多種不同的IFC 構件類型中,提取可能是管廊管片管線等圓柱體型模型的構件的過程。而從語義分析角度,往往可能存在誤差,比如把非圓柱體形的拉伸體模型誤認為是管廊模型。
在此基礎上,從幾何角度分析則是從三維管廊模型的形態上對構件進行分析,判斷構件是否具有圓柱體形構件包圍盒的特征,且根據模型上的頂點信息能夠計算出上下底面與中心軸等參數,進而歸納其類型,最終提取出了一類可以進行管廊網格參數化處理的目標模型。
3.2 三維管廊網格模型參數化
3.2.1 圓柱體形管廊網格模型參數化
由此可知,對于一個原始的復雜管廊網格模型,其往往有上百個,甚至上千頂點,同時三角網格數量較多。針對大型建筑模型,一旦管廊模型的數據量較大,對模型的初始渲染和加載效率一定會存在較大的影響,因此,本文針對圓柱體形管廊網格模型,提出了參數重繪的方式,使用 ThreeJS 的圓柱體進行實例化,能夠有效簡化模型數據量,且提升場景渲染速率。
本文所使用的一般圓柱體形管廊模型參數化是從原始管廊網格模型的頂點以及三角面片信息中有效提取出其上下底面圓的圓心以及半徑,并且求出其中軸線的長度以及方向,并能夠在場景中重繪出該構件的過程。擬合后的標準化圓柱體與源
數據對比如圖 5(a)源數據-非標準化三角化側面和5(b)擬合后-標準化三角化側面所示。由于使用了圓柱體模型的參數化方式,重繪圓柱體需要的數據量因此大大降低。
由于原始管廊網格模型存在三角化方式無規律,如圖 5(c)源數據-非標準化三角化底面和 5(d)擬合后-標準化三角化底面所示,三維GIS參數化的過程也是一個將管廊網格模型標準化的過程,為后續圓柱體形管廊構件的在線應用提供基礎。上下底面的分
割塊數決定著圓柱體模型在場景中的精細程度。
3.2.2 彎管管廊網格模型參數化
除了一般的圓柱體形管廊模型外,建筑模型中還存在較大一部分的彎管管廊模型,如圖 6 所示。這部分模型通常是排水管道和通風管道的接口處,在管廊網格模型中占有一定的比重,在參數化過程中要與一般直線的圓柱體形管廊模型做出區分。本
文使用二次貝賽爾曲線擬合彎管管廊構件,實驗對象為如圖 6 所示的一段彎管圓形管線模型。
首先根據圓柱體模型參數求出兩個端面的圓心,兩個圓心作為貝塞爾曲線的控制點 P0 和 P2,設其控制點為 P1,該擬合模型的中軸線應滿足以下二次貝塞爾曲線公式:
B( t ) = (1-t) P+ 2 t(1 ?t) P +t P, t ?[ 0 , 1]
通過改變控制點的參數,如果彎管三維管廊模型上的點到該擬合中軸線的距離最短,則可認為是最佳擬合曲線,在進行參數化繪制的時候,由于管廊模型的對稱性,彎管模型上的訂單到中軸線的距離即為半徑,以一個端面為圓心,該半徑畫圓,然后沿
著擬合的貝塞爾曲線進行拉伸,即可得到該彎管模型的參數化拉伸體擬合模型。且由于拉伸體的特性,該擬合模型的分割塊數也能夠進行動態地調整,有效降低模型的三角網格數量。
3.2.3 中空復雜管廊網格模型參數化
針對如圖 8(a)所示的內部中空管廊拉伸體模型,采用上述的解決方案,首先進行整個模型的參數讀取,然后通過模型的幾何特征分離其模型外部與內部參數,其邊緣提取的效果如圖 8(b)所示,在得到了邊緣提取的結果之后,將模型區分為 1 個大實心圓柱體管廊模型以及 7 個空心圓柱體三維管廊模型,對大的實心圓柱體形管廊模型進行布爾運算,參數化后的重繪的中空管廊模型如圖 8(c)所示。
3.3 漸進式 LOD 在線實時渲染
針對一般圓柱體形管廊網格模型,自適應調整的是其端面的分割塊數,從 LOD0的 3 塊,到 LOD1 的 8 塊,再到 LOD2 的 16 塊。針對彎管管廊模型,自適應調整的是中軸線的分割塊數,從 LOD0 的 5 塊,到 LOD1 的 10 塊,再到LOD2 的 20 塊,可以看到模型的網格越來越密集。而針對中空管廊網格模型,在 LOD0 以及 LOD1的階段,即距離攝像機較遠時,渲染中空管廊模型時只按照圓柱體形管廊進行渲染,不進行布爾運算,遠處看到的是一般圓柱體形管廊網格模型,只在攝像機靠近模型達到 LOD2 距離范圍內時,渲染中空的管廊網格模型,該步驟可以優化渲染效率,提高場景 FPS,降低瀏覽器的負載。
為了減少 WebBIM 模型場景的總數據量以及提升在線渲染效率,本文提出了一套管廊復雜網格模型參數化方法,對擁有大量管廊網格的 BIM 模型首先通過 IFC 解析,經過語義分析和幾何分析的手段,提取出能夠進行管廊模型參數化的類。然后
針對一般圓柱體形管廊模型,彎管管廊模型以及復雜中空管廊模型均提出了參數化方案并驗證其有效性。最后在網頁端使用了基于 LOD 的輕量化漸進式渲染模式,輔助以基于管廊參數化結果的切割模型應用。
原文:http://www.bestglobalwebsiteaward.com/blog/index.php/article/15.html