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