三維管廊大規模實時渲染方案

隨着 WebBIM 和三維GIS技術的大力發展,建築模型的複雜度與構件數量呈幾何倍數增加,其中管廊複雜網格是影響模型輕量化和在線渲染速率的一個關鍵性問題。爲有效減小管廊複雜網格模型的數據量及複雜度,本文針對通常圓柱體形管廊,複雜網格的彎管管廊模型及中空管廊網格模型,提出了一套輕量級參數化算法。該算法對場景中的管廊模型進行參數化重繪並輔助以多細節層次等視覺優化手段,以減輕 WebBIM 場景中的管廊模型渲染負擔,其在擁有大量管廊模型的場景中應用成功,具備較強的工程實踐意義。 php

 

近年來,網絡技術的發展日新月異,人類正向高度信息化的社會邁進。BIM在國內建築業造成一股熱潮,儘管擁有了政府和社會的大力支持,Web 端的 BIM 大規模場景應用開發仍然面臨許多巨大的挑戰:html

 

1、網頁存儲瓶頸問題:隨着 BIM場景規模的增長,建築內部空間結構複雜度不斷提高,管廊結構的模型體量不斷增長,BIM 數據將來可能達到城市級別(100  TB 以上),一般來講,PC 端的瀏覽器可以使用的內存僅爲 1.5 至 2 GB,稍大的 BIM模型就可能會致使瀏覽器的崩潰。算法

 

2、計算渲染瓶頸問題:傳統加載方式中,IFC構件被逐一添加在場景中,管廊模型擁有的三角化面片數量多,致使整個初始加載速度慢,且場景中FPS 較低,瀏覽建築模型容易出現明顯卡頓狀況。api

在以上問題的基礎上,尤爲是管廊管線這類構件每每在城市建築模型中佔有了必定的比重,例如水管,通風管道等,且建築物內部管廊模型排列每每具備必定的複雜性,優化這部分管廊模型的參數,可以有效減小場景中的三角面片數量,幫助提高模型加載速率,對改善上述的兩個瓶頸問題起到了積極的做用。 瀏覽器

 

 所以針對上述問題,本文提出了一套三維管廊複雜網格參數化算法,首先經過語義分析和幾何分析,提取大規模 IFC 場景中的管廊網格模型構件類。而後針對通常圓柱體形管廊網格模型,彎管管廊模型以及中空管廊模型三種不一樣的特徵,對其在服務端
分類進行參數化處理,並將參數結果返回給網頁端進行渲染。爲了下降網頁端的渲染負載,實例化管廊模型的同時輔助以基於 LOD 多細節層次技術的漸進式自適應渲染方法,有效下降場景中管廊模型部分的總數據量及其三角面片數量,加快場景初始加載時間以及提高場景整體加載的幀速率,爲輕量化BIM 大規模管廊模型場景的在線可視化提供了支持。 緩存

1   相關研究服務器

1.1  管廊的參數化原理 網絡

 

原始的 BIM 建築模型通過 IFC 參數化解析以後,分紅了多種不一樣的類,每一類中都有成百上千個小的網格模型信息。這些頂點信息與三角網格在網頁端通過渲染,組成了瀏覽器端的建築模型。這種經過模型解析生成的管廊網格模型一般是呈現不規則,且較爲繁雜的狀況。若是能將這些不規則的三角網格信息抽取出來,通過參數化處理轉換爲你們熟知的管廊管線特徵信息,那麼就能夠經過管廊網格的頂點信息,半徑信息,主方向特徵參數化重繪出一個圓柱體形三維管廊網格模型,而且呈現規範的三角網格渲染方式。

 

 

一般的直線管廊網格模型的構造圖如圖 1 所示,具體渲染方法爲:將直線三維管廊網格模型抽象爲正圓柱體,管線中心抽象爲正圓柱體的中軸線,管線中心線起止點爲正圓柱體上下底面圓圓心,圓柱體半徑爲管徑。app

 

提取到了以上的管廊模型參數信息後,在瀏覽器 端 渲 染 時 可 以 利 用 Three.js 提 供 的THREE.Cylinder  Geometry 對象對管廊進行批量建模。利用 THREE.Cylinder Geometry  對象進行圓柱體建模時可接收多個參數,  而在實際建模過程當中主要用到三個參數,  分別是:頂面半徑、底面半徑以及圓柱體的高度,  分別對應三位管線的半徑以及管線長度。生成管線模型的幾何對象以後,還需利用 THREE.Material 爲其貼上合適的紋理,經過THREE.Mesh(geometry,material)生成完整的管線段
模型。 大數據

 

1.2  管廊多細節層次技術(LOD) 

 

LOD 技術即 Levels of Detail的簡稱,意爲多細節層次。LOD 技術指根據物體模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,下降非重要物體的面數和細節度,從而得到高效率的渲染運算。一個典型的蓄冰機房 BIM
模型內部的管線模型示意圖如圖 2  所示,2(a)爲蓄冰機房 BIM 模型結構,2(b)爲局部細節放大示意圖,針對圖 2(b)中的三維管廊模型,調整其精細化程度對用戶視角的影響較小,但對提高場景加載流暢度具備較大意義。 

 

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 所示。在服務器端,須要完成工做包括從語義分析以及幾何分析角度進行管廊模型構件的提取,以及基於圓柱體形管廊網格構件的參數化算法研究,進一步拓展彎管三維管廊模型的參數化算法以及基於布爾運算的中空復
雜管廊模型的參數化算法。 

 

在 Web 端完成的工做,包括使用基於 LOD 的輕量化 WebBIM 漸進式加載技術,提高輕量化在線渲染的加載速率,以及提供在線可視化應用支持。

 

3   關鍵技術 

 

3.1  管廊模型構件的提取 

 

FC 是一套專門爲建築行業訂製的開放數據標準格式[13],爲了解析 IFC 格式的 BIM 模型,本文使用的了輕量級 BIM 大數據在線可視化系統[14],在上傳 IFC 格式的建築模型後,該模型逐層解析,從一個項目(IfcProject)實例出發,將建築模型拆解爲包含全部的牆(IfcWall)、門(IfcDoor)和梁(IfcBeam)等多個類型的建築構件。根據模型分類的語義信息能夠將內部構件進行一個初步的分類,在場景中咱們能夠看到多種不一樣的構建類呈現,如圖4 所示,IFCCovering 類表示對三維管廊模型的外罩,存在較多圓柱體形管廊網格模型,所以本文從語義角度選擇其中的 IFCCovering 類構件做爲可能的目標管廊模型處理對象,對其進行進一步的幾何分析。

 

整個三維管廊模型對象的抽取過程如圖 4 中所示,從構件語義分析提取構件是從以上多種不一樣的IFC 構件類型中,提取多是管廊管片管線等圓柱體型模型的構件的過程。而從語義分析角度,每每可能存在偏差,好比把非圓柱體形的拉伸體模型誤認爲是管廊模型。
在此基礎上,從幾何角度分析則是從三維管廊模型的形態上對構件進行分析,判斷構件是否具備圓柱體形構件包圍盒的特徵,且根據模型上的頂點信息可以計算出上下底面與中心軸等參數,進而概括其類型,最終提取出了一類能夠進行管廊網格參數化處理的目標模型。

3.2  三維管廊網格模型參數化

3.2.1  圓柱體形管廊網格模型參數化 

 

通過上一個步驟解析的 BIM 建築模型產生的原始圓柱體形三維管廊模型構件爲 dat 格式,包含三部分信息,第一部分是每個頂點的三維座標,從序號 0 開始,第二部分是模型的三角化信息,每三個頂點組成一個三角形,在場景中進行實例化渲染,全部的三角形在場景中重繪出一個圓柱體形三維管廊模型,第三部分是與第二部分中每一個三角化網格信息對應的法向量方向。

 

由此可知,對於一個原始的複雜管廊網格模型,其每每有上百個,甚至上千頂點,同時三角網格數量較多。針對大型建築模型,一旦管廊模型的數據量較大,對模型的初始渲染和加載效率必定會存在較大的影響,所以,本文針對圓柱體形管廊網格模型,提出了參數重繪的方式,使用 ThreeJS 的圓柱體進行實例化,可以有效簡化模型數據量,且提高場景渲染速率。

 

本文所使用的通常圓柱體形管廊模型參數化是從原始管廊網格模型的頂點以及三角面片信息中有效提取出其上下底面圓的圓心以及半徑,而且求出其中軸線的長度以及方向,並可以在場景中重繪出該構件的過程。擬合後的標準化圓柱體與源
數據對好比圖 5(a)源數據-非標準化三角化側面和5(b)擬合後-標準化三角化側面所示。因爲使用了圓柱體模型的參數化方式,重繪圓柱體須要的數據量所以大大下降。 

因爲原始管廊網格模型存在三角化方式無規律,如圖 5(c)源數據-非標準化三角化底面和 5(d)擬合後-標準化三角化底面所示,參數化的過程也是一個將管廊網格模型標準化的過程,爲後續圓柱體形管廊構件的在線應用提供基礎。上下底面的分
割塊數決定着圓柱體模型在場景中的精細程度。 

 

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  中空複雜管廊網格模型參數化 

 

在標準的圓柱體型管廊參數化方法研究的基礎上,針對基於布爾運算的複雜管廊構件的參數化算法研究在工程建築領域十分具備價值,如圖 7(a)中空管廊模型所示,複雜管廊構件都是基於圓柱體型管廊構件的延伸與擴展,其端面和側面的模型示
意圖如圖 7(b)和 7(c)所示,具備其獨特性,須要根據模型特徵具備針對性地進行探索。 

 

針對如圖 8(a)所示的內部中空管廊拉伸體模型,採用上述的解決方案,首先進行整個模型的參數讀取,而後經過模型的幾何特徵分離其模型外部與內部參數,其邊緣提取的效果如圖 8(b)所示,在獲得了邊緣提取的結果以後,將模型區分爲 1 個大實心圓柱體管廊模型以及 7 個空心圓柱體三維管廊模型,對大的實心圓柱體形管廊模型進行布爾運算,參數化後的重繪的中空管廊模型如圖 8(c)所示。 

原文:http://www.ztmapinfo.com/blog/index.php/article/15.html

相關文章
相關標籤/搜索