陳 前,王 瑋
(1、中鐵建華南建設(shè)有限公司 廣州 511458;2、廣州地鐵集團(tuán)有限公司 廣州 510220)
三維模型作為BIM技術(shù)領(lǐng)域中產(chǎn)品信息表達(dá)的主要方式之一,承載了一個完整的工程項目中體量龐大的數(shù)據(jù)信息。傳統(tǒng)的數(shù)據(jù)交互主要采用三維模型數(shù)據(jù)交換、中性幾何文件格式交換和中性顯示模型數(shù)據(jù)交換3 種方式,但這幾種傳統(tǒng)的數(shù)據(jù)交互方式都存在著平臺局限、數(shù)據(jù)局限、傳輸局限的問題。因此,如何在保留完整三維模型信息、保證模型精確度的基礎(chǔ)上,將模型文件進(jìn)行高效輕量化處理,實(shí)現(xiàn)百兆級以上的模型瀏覽與操作,是當(dāng)前亟待解決的重要難點(diǎn)之一。
為了能夠在終端上流暢的顯示及操作三維模型,本項目提出了一種大體量三維模型輕量化及高效顯示方案,能夠在保留模型完整的信息和確保模型精度的基礎(chǔ)上,將原始三維模型文件進(jìn)行高效輕量化處理,最終實(shí)現(xiàn)大體量三維模型瀏覽與操作。
BIM 模型輕量化關(guān)鍵環(huán)節(jié)主要包括:數(shù)據(jù)的高效存儲與傳輸、渲染及顯示。其中模型的高效存儲與傳輸是在模型源文件輕量化轉(zhuǎn)換的基礎(chǔ)上使用壓縮、構(gòu)件模型流、運(yùn)用緩存等技術(shù)進(jìn)行實(shí)現(xiàn),對于模型輕量化轉(zhuǎn)換及渲染,張建平等人[1-2]采用數(shù)據(jù)分布、動態(tài)解析方法,對基于IFC的BIM三維幾何建模及模型轉(zhuǎn)換、Web 應(yīng)用技術(shù)進(jìn)行了研究,為隧道施工大體量模型輕量化和動態(tài)顯示提供了參考,但盾構(gòu)隧道工程幾何構(gòu)造不夠規(guī)則、地址條件不夠確定等原因造成IFC 標(biāo)準(zhǔn)制定難以實(shí)施。王磊等人[3]運(yùn)用WebGL 標(biāo)準(zhǔn)中的Three.js框架對網(wǎng)頁上簡單三維場景顯示流程進(jìn)行分析并對場景中三維模型上添加熱點(diǎn)進(jìn)行了研究,實(shí)現(xiàn)了輕量化的三維模型的平移、縮放、旋轉(zhuǎn)等操作,但在基于BIM 盾構(gòu)隧道工程領(lǐng)域中,繁多的業(yè)務(wù)場景交互操作使功能開發(fā)難度較大?;诖?,需要尋找一種適用于BIM 大體量模型的輕量化、人機(jī)交互和實(shí)時渲染技術(shù)。本文將重點(diǎn)分析模型輕量化轉(zhuǎn)換和模型渲染及顯示所涉及的方法和技術(shù)[4-10]。
一般的BIM 模型文件包含了三維模型的幾何數(shù)據(jù)和擴(kuò)展屬性,從而導(dǎo)致模型體量較大,因此嚴(yán)重影響了模型的網(wǎng)絡(luò)傳輸及圖形解析效率。本研究采用中心服務(wù)器存儲BIM 模型,模型在服務(wù)器中自動拆分為幾何數(shù)據(jù)和非幾何數(shù)據(jù),非幾何數(shù)據(jù)直接存儲至數(shù)據(jù)庫中,幾何數(shù)據(jù)則進(jìn)一步通過模型輕理化進(jìn)行壓縮。當(dāng)用戶終端需要瀏覽BIM 模型時,首先會從服務(wù)器獲取輕量化后的幾何數(shù)據(jù)模型,然后按需向服務(wù)器請求模型的非幾何屬性,這種處理方式可降低模型的網(wǎng)絡(luò)傳輸時間。
基于映射的幾何模型存儲方式,可以大量減少構(gòu)件的存儲量,并可降低用戶終端的顯存消耗,傳統(tǒng)的流程如圖1 所示,首先根據(jù)網(wǎng)格相似性匹配方法對各構(gòu)件進(jìn)行相似性分析,并對幾何外形相似的構(gòu)件采用同一組三角網(wǎng)格表示[11-15];緊接著通過轉(zhuǎn)換矩陣的方式,存儲其空間位置信息,并將三角網(wǎng)格組映射到相應(yīng)位置,從而使得相似的構(gòu)件只存儲一次,降低模型的幾何數(shù)據(jù)大小。基于此,KAVAN 等人[16]基于用戶觀察視角的不斷變化對模型進(jìn)行渲染的更新,客戶端將需要圖片從服務(wù)器映射到用戶的平面或者立方體上進(jìn)行顯示,但對于近距離的觀察會有失真感。SAIBI等人[17]基于貼圖優(yōu)化思想,先行固定紋理映射,巧妙的求解與單視角圖像的差異,給出了較好的輕量化和準(zhǔn)確性。
圖1 傳統(tǒng)的幾何模型存儲流程Fig.1 Traditional Geometric Model Storage Process
上述算法雖在模型特定的情況下能達(dá)到預(yù)期的目的,但是在可計算性、可操作性和效率方面存在一定不足且無法適應(yīng)建筑模型大體量且復(fù)雜的特點(diǎn)?;诖?,本研究提出了一種普適建筑信息模型的網(wǎng)格相似性度量算法。具體流程如圖2所示。
圖2 基于網(wǎng)格相似性匹配的建筑模型簡化算法流程Fig.2 Flow Chart of Building Model Simplification Algorithm Based on Grid Similarity Matching
基于網(wǎng)格相似性匹配的建筑模型存儲優(yōu)化的算法流程詳細(xì)步驟包括3步:
⑴初始定位:即計算模型的質(zhì)心位置,并將質(zhì)心移到原點(diǎn)位置。對模型進(jìn)行初始定位可以使兩個模型之間的位置差異減小,從而具有相同的校準(zhǔn)條件。
⑵粗略快速判斷:包括構(gòu)件類型判斷、包圍盒對比判斷、質(zhì)心位置對比判斷3個方面。
⑶三角網(wǎng)格相似性計算:對初始定位處理后的網(wǎng)格進(jìn)行分析,按照距離與法向量加權(quán)誤差最小的原則尋找最近點(diǎn)對序列,并對兩個最近點(diǎn)對序列進(jìn)行相似度評估。通過考慮兩模型頂點(diǎn)的平均距離(加入鄰近三角形面積和作為權(quán)值)、模型的尺寸大小等因素,定義兩三角網(wǎng)格的相似度計算方式,來衡量模型的相似性。三角網(wǎng)格間的相似度如大于指定閥值,則認(rèn)為兩構(gòu)件外形相同,對模型數(shù)據(jù)進(jìn)行處理,計算效果如圖3所示。
圖3 三角網(wǎng)格相似性匹配結(jié)果Fig.3 Triangular Mesh Similarity Matching Results
三維模型需要轉(zhuǎn)換為三角網(wǎng)格才能進(jìn)行展示,本項目對幾何模型的三角網(wǎng)格存儲進(jìn)行了簡化,可減少三角網(wǎng)格數(shù)據(jù)的存儲空間,從而降低幾何模型的體量。本方法主要體現(xiàn)在網(wǎng)格頂點(diǎn)法向量的存儲簡化和三角網(wǎng)格點(diǎn)線面的存儲優(yōu)化。
2.3.1 頂點(diǎn)法向量的存儲簡化
頂點(diǎn)法向量并不會影響構(gòu)件的幾何形狀,只會對構(gòu)件的光照效果產(chǎn)生影響,因此在誤差范圍內(nèi)對頂點(diǎn)法向量的存儲進(jìn)行簡化對構(gòu)件的展示產(chǎn)生的影響甚微。如圖4 所示,正常情況下頂點(diǎn)法向量是一個float數(shù)組[x,y,z],占據(jù)的空間大小為4×3=12 bytes,空間中的單位向量可以轉(zhuǎn)換為球坐標(biāo)系,只需要2 個參數(shù)即可確定位置(λ,φ),其中λ∈[0,360],φ∈[-90,90],這樣只需要4×2=8 bytes 的空間,進(jìn)一步將(λ,φ)映射至(u,v),其中u∈[0,255],v∈[0,255]。過這一系列變換后,原本需要12 bytes的法向量,只需要2 bytes即可存儲。
圖4 三角網(wǎng)格點(diǎn)線面的存儲優(yōu)化Fig.4 Storage Optimization of Triangular Grid Points,Lines and Surfaces
三角網(wǎng)格數(shù)據(jù)存儲過程中,在一些特定情況下可以減少存儲的數(shù)據(jù)量,比如同一個平面的三角形頂點(diǎn)法向量只需要存儲一次,通過建立頂點(diǎn)索引來存儲三角形可以減少存儲量等。
網(wǎng)格簡化是指在保持原始模型形狀變化盡可能小的情況下降低模型復(fù)雜度[15]。通過復(fù)雜構(gòu)建進(jìn)行三角網(wǎng)格簡化,可通過降低顯示所需的三角形數(shù)量,從而達(dá)到提升存儲效率的目的。周元峰等人[18]采用基于體積平方度量的三角形折疊網(wǎng)格簡化新方法,但對細(xì)節(jié)特征的保持效果一般。易兵等人[19]結(jié)合張量理論和二次誤差簡化算法,提出一種邊界特征保持的幾何網(wǎng)格模型分級二次誤差簡化算法,但算法較為復(fù)雜。為了盡量保存建筑構(gòu)件的幾何特征,本算法在前學(xué)者的研究基礎(chǔ)上加入面劃分及關(guān)聯(lián)點(diǎn)識別、模型特征點(diǎn)識別與預(yù)處理、權(quán)值計算及累計簡化誤差度量三個關(guān)鍵技術(shù),從而實(shí)現(xiàn)在保證最大精度的基礎(chǔ)上還原真實(shí)模型效果,關(guān)鍵環(huán)節(jié)如圖5所示。
圖5 網(wǎng)格簡化的關(guān)鍵環(huán)節(jié)Fig.5 Key Links of Grid Simplification
三角網(wǎng)格的簡化效果如圖6所示,可以看出,本算法在簡化的過程中,對構(gòu)件的一些特征點(diǎn)進(jìn)行了很好的保留,盡量讓模型保持了很高的辨識度。
圖6 網(wǎng)格簡化效果Fig.6 Effect of Mesh Simplification
為了更進(jìn)一步降低幾何模型的體積,本研究采用Zstd 無損壓縮的形式對大體量幾何模型做了進(jìn)一步的無損壓縮處理。所謂的無損壓縮處理,是利用數(shù)據(jù)的統(tǒng)計冗余進(jìn)行壓縮,可完全恢復(fù)原始數(shù)據(jù)而不引起任何失真。目前存在多種無損壓縮的算法,經(jīng)調(diào)研與測試,在相同的硬件設(shè)備中,各算法的壓縮比、壓縮速度以及解壓速度如表1 所示。通過對比,本研究選用Zstd壓縮算法。
表1 各算法的壓縮比、壓縮速度以及解壓速度Tab.1 Compression Ratio,Compression Speed and Decompression Speed of Each Algorithm
在上述的模型簡化后,還需對模型的加載做進(jìn)一步優(yōu)化,尤其是當(dāng)原始模型的數(shù)據(jù)量較大時,需要加載所需要的局部網(wǎng)格區(qū)域即可。 模型的顯示優(yōu)化包括顯示效率和顯示質(zhì)量的優(yōu)化,主要采用的技術(shù)包括:視錐體裁剪、遮擋剔除、基于視點(diǎn)的動態(tài)剔除、渲染效果優(yōu)化。
本研究采用網(wǎng)格局部重建的方法來對模型的顯示進(jìn)行優(yōu)化,在離視點(diǎn)近的區(qū)域內(nèi)部使用最高精度的網(wǎng)格模型,能夠完整的觀察到模型細(xì)節(jié)信息;在離視點(diǎn)遠(yuǎn)的區(qū)域,則保持最低精度的網(wǎng)格模型,即簡化網(wǎng)格的分辨率[20]。上述方法通過對選擇區(qū)域的局部細(xì)化,在滿足對局部細(xì)節(jié)需要的前提下,使網(wǎng)格模型的三角形數(shù)目大大減少,從而降低了模型體量,提升了繪制和傳輸效率。
視錐體的形狀決定了模型如何從攝像機(jī)空間投影到屏幕上[21]。如圖7 所示,透視投影使用棱錐作為視錐體,攝像機(jī)位于棱錐的椎頂[22],該棱錐被前后2 個平面截斷,形成1 個棱臺,只有位于視錐體內(nèi)部的模型才是可見的[23]。
圖7 視錐體裁剪示意圖Fig.7 Schematic Diagram of Cone Cutting
如圖8所示,在觀察復(fù)雜模型時,場景中的各類物件會互相重疊,雖然小的物件也在視錐體范圍內(nèi),但并不代表他們是不可見的。采用Hierarchical Z-Buffer算法,利用DX11 的新特性,完全在GPU 中并行執(zhí)行。
圖8 遮擋剔除原理Fig.8 Schematic of Occlusion Elimination
如圖9所示,當(dāng)物體離攝像機(jī)比較遠(yuǎn)時,部分模型在觀察狀態(tài)下會顯得很小,因此,在操作圖形平臺的時候可以不用渲染這些小的物體。
圖9 基于視點(diǎn)的動態(tài)剔除操作界面Fig.9 View Based Dynamic Culling Operation Interface
當(dāng)模型離攝像機(jī)比較遠(yuǎn)時,本研究在保證模型渲染效率的基礎(chǔ)上,采用相對粗糙的渲染方式,當(dāng)模型離攝像機(jī)比較近時,采用精細(xì)渲染,效果對比如圖10所示。
圖10 粗糙與精細(xì)渲染效果對比Fig.10 Comparison of Coarse and Fine Rendering Effects
廣州市軌道交通18 號線和22 號線及同步實(shí)施場站綜合體設(shè)計施工總承包項目,是廣州市有史以來規(guī)模最大的單個招標(biāo)項目,也是目前中國鐵建在國內(nèi)最大的設(shè)計施工總承包項目,兩條線同時也是國內(nèi)首條設(shè)計時速160 km 的高規(guī)格地鐵市域快線[24]。18 號線從萬頃沙站起至廣州東站止,全長62.7 km,設(shè)站9座,其中換乘站8 座,22 號線從番禺廣場站起至白鵝潭站,全長30.8 km;設(shè)站8 座,其中換乘站4 座。全線采用全過程、全方位、全生命周期BIM 信息化管理,自主研發(fā)城市軌道交通BIM 項目管 理平臺,開展BIM 平臺頂層框架設(shè)計及關(guān)鍵技術(shù)研究。
BIM 系統(tǒng)圖形平臺綜合采用分步加載和模型輕量化技術(shù),優(yōu)化三維模型瀏覽效率,最高優(yōu)化比例可達(dá)14%。極限測試圖形平臺可流暢瀏覽模型數(shù)量達(dá)百萬級別,三角形數(shù)量達(dá)億級(見圖11)。
圖11 PC 端應(yīng)用效果Fig.11 Application Effect of PC End
MS 端(Android,iOS)圖形輕量化顯示:自主開發(fā)的基于OpenGL 的全平臺(PC,Android,iOS)三維圖形顯示引擎,經(jīng)過輕量化處理的三維模型能夠流暢的在Android,iOS 端顯示并流暢地操作(見圖12)。
圖12 MS端應(yīng)用效果Fig.12 MS End Application Effect
對本系統(tǒng)的模型輕量化效果進(jìn)行實(shí)測,測數(shù)據(jù)中,測試樣本的純?nèi)切螖?shù)據(jù)(不包括樣本屬性)的存儲大小為110.69 M,采用文上所述反式對模型進(jìn)行處理,僅優(yōu)化存儲幾何模型的數(shù)據(jù)結(jié)構(gòu),其存儲空間就可以減少至62 M 左右,如果再對其進(jìn)行壓縮和簡化(LOD 60),其體量可以減少至16 M 左右(見圖13),經(jīng)過上述方式的共同優(yōu)化,一個模型的體量可以減少至原來體量的14%左右[25]。
圖13 模型輕量化率Fig.13 Model Lightweight Rate
本文從數(shù)據(jù)存儲優(yōu)化、模型壓縮、模型顯示優(yōu)化顯示3 個方面介紹了本項目模型輕量化關(guān)鍵技術(shù),基于三角網(wǎng)格存儲、Zstd 壓縮算法、網(wǎng)格局部重建顯示優(yōu)化可在保留完整三維模型基本信息,保證模型精度的前提下,將原始三維模型文件進(jìn)行高效的輕量化處理,實(shí)現(xiàn)大體量三維模型的流暢瀏覽與操作。