孫源 王國(guó)光 趙杏英 汪洋 董大鑾
摘要:目前,國(guó)內(nèi)對(duì)建筑信息模型(BIM)在項(xiàng)目中的應(yīng)用需求越發(fā)迫切,數(shù)據(jù)冗雜的BIM大體量模型嚴(yán)重制約著BIM技術(shù)在實(shí)際應(yīng)用中的使用。大體量BIM模型在展示過程中會(huì)遇到加載緩慢、顯示卡頓的問題。為此,提出搭建BIM輕量化體系,通過自主研發(fā)的BIM仿真系統(tǒng)平臺(tái),為大體量BIM模型提供審閱瀏覽平臺(tái)。采用幾何簡(jiǎn)化算法、渲染優(yōu)化算法、文件格式優(yōu)化及數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)4種方法對(duì)BIM輕量化體系進(jìn)行搭建。對(duì)BIM模型三角面使用邊折疊算法進(jìn)行優(yōu)化,根據(jù)多源異構(gòu)數(shù)據(jù)的模型設(shè)計(jì)相應(yīng)的文件格式和數(shù)據(jù)結(jié)構(gòu),在渲染層面上,自主研究并實(shí)現(xiàn)使用PagedLOD技術(shù)與幾何簡(jiǎn)化模型結(jié)合、剔除與繪制雙線程方法、批次繪制渲染優(yōu)化技術(shù),完成BIM輕量化體系的初步搭建工作并于平臺(tái)中驗(yàn)證。實(shí)例驗(yàn)證效果顯示:輕量化方法體系的應(yīng)用使平臺(tái)達(dá)到了快速加載大體量BIM模型并流暢展示的目標(biāo),擁有多源異構(gòu)數(shù)據(jù)模型在同一平臺(tái)展示的能力。
關(guān) 鍵 詞:BIM; 模型輕量化; PagedLOD; 多線程
中圖法分類號(hào): TP391.41
文獻(xiàn)標(biāo)志碼: A
DOI:10.16232/j.cnki.1001-4179.2021.12.036
0 引 言
在不斷推廣的大平臺(tái)框架下,各種工程項(xiàng)目的數(shù)字交付后,龐大的BIM模型數(shù)據(jù)需要流暢地在仿真平臺(tái)上進(jìn)行模擬和展示。在實(shí)際應(yīng)用中,三維模型瀏覽時(shí)大體量模型無法加載或經(jīng)常加載緩慢會(huì)造成應(yīng)用性欠佳的問題。若要實(shí)現(xiàn)在大平臺(tái)下瀏覽往往動(dòng)輒體量巨大的BIM模型,無論是從設(shè)計(jì)層面還是從應(yīng)用層面,加載和顯示的延遲卡頓問題都阻礙了BIM在設(shè)計(jì)、施工、運(yùn)維等方面發(fā)揮其優(yōu)勢(shì)。IFC格式作為BIM領(lǐng)域普遍采用的標(biāo)準(zhǔn)格式,具有完整的參數(shù)信息,由于其是基于文本的非壓縮文件格式,致使IFC文件加載時(shí)間較長(zhǎng)。另外,未經(jīng)輕量化處理的BIM模型使用時(shí)會(huì)遇到許多與性能相關(guān)的問題,如文件龐大導(dǎo)致儲(chǔ)存和傳遞成本高、數(shù)據(jù)難以在輕量級(jí)渲染平臺(tái)中審閱。特別是龐大的三角網(wǎng)數(shù)量和繁復(fù)的紋理樣式,都導(dǎo)致了其在實(shí)際使用過程中難以方便快捷地進(jìn)行瀏覽和傳輸。設(shè)備在加載和渲染BIM模型時(shí)往往對(duì)設(shè)備本身有較高的要求,也阻礙了BIM模型便捷化發(fā)展的使用初衷。因此,BIM數(shù)據(jù)輕量化是BIM技術(shù)應(yīng)用中的關(guān)鍵環(huán)節(jié)。
目前已有眾多研究人員在BIM模型輕量化上做了不少的工作,涉及了輕量化方法中的文件設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、幾何優(yōu)化及渲染方面,以及對(duì)專業(yè)模型的處理工作。例如,陳慶財(cái)?shù)萚2]對(duì)BIM模型數(shù)據(jù)設(shè)計(jì)了輕量化的文件格式(LBSF),并設(shè)計(jì)了輕量化的數(shù)據(jù)格式;操鋒等[3]對(duì)文件數(shù)據(jù)進(jìn)行組織及數(shù)據(jù)壓縮優(yōu)化;陳龍等[4]使用細(xì)節(jié)層次(LOD)技術(shù)和三角面簡(jiǎn)化技術(shù),逐級(jí)降低模型頂點(diǎn)和三角面數(shù)量;王云龍[5]、劉曉利[6]、張必強(qiáng)[7]、李現(xiàn)民[8]、馮翔[9]、杜曉暉[10]等通過研究邊折疊算法提出了相應(yīng)的簡(jiǎn)化算法,對(duì)BIM模型輕量化在幾何模型簡(jiǎn)化上做了進(jìn)一步優(yōu)化研究;金廣龍[11]、馬金忠[12]、白雪[13]等對(duì)BIM輕量化中BIM模型加載與渲染中的技術(shù)方法進(jìn)行了研究,對(duì)渲染剔除及批次合并進(jìn)行優(yōu)化,研究了渲染處理和數(shù)據(jù)處理輕量化技術(shù)方法;趙維等[14]提出了自適應(yīng)多線程渲染技術(shù),為渲染輕量化技術(shù)的開發(fā)提供了參考和借鑒;張萍[15]在BIM專業(yè)模型的處理標(biāo)準(zhǔn)基礎(chǔ)上探討了渲染及幾何輕量化方法;毛旭陽(yáng)[16]、余芳強(qiáng)[17]、郭思怡[18]、劉北勝[19]等分別對(duì)城市、古建筑、建筑運(yùn)維、云渲染多種場(chǎng)景下的輕量化技術(shù)進(jìn)行了探討。盡管已經(jīng)有大量研究人員在BIM輕量化方法中做出了許多工作,但如何在其研究基礎(chǔ)上搭建起更加完備成熟的BIM輕量化體系尚未研究透徹。
本文使用BIM仿真系統(tǒng)平臺(tái),通過設(shè)計(jì)文件格式、數(shù)據(jù)結(jié)構(gòu)、幾何簡(jiǎn)化、渲染優(yōu)化4種輕量化方法,研究4種方法在BIM模型加載與瀏覽中的局限性及其優(yōu)勢(shì),取長(zhǎng)補(bǔ)短,以搭建BIM輕量化體系。從平臺(tái)需求出發(fā),對(duì)BIM模型三角化幾何描述使用邊折疊算法進(jìn)行優(yōu)化,同時(shí)在文件數(shù)據(jù)層上從多源異構(gòu)數(shù)據(jù)的模型要求出發(fā)設(shè)計(jì)了相應(yīng)的文件格式和數(shù)據(jù)結(jié)構(gòu);在渲染層面上自主研究并實(shí)現(xiàn)使用分頁(yè)細(xì)節(jié)層次模型(PagedLOD)技術(shù)與幾何簡(jiǎn)化模型結(jié)合、剔除與繪制雙線程方法、批次繪制等渲染優(yōu)化技術(shù),實(shí)現(xiàn)平臺(tái)展示流暢的渲染效果,對(duì)BIM輕量化體系中所用到的方法進(jìn)行研究?jī)?yōu)化,使其更加契合實(shí)際應(yīng)用。
1 研究思路
隨著BIM輕量化技術(shù)的不斷進(jìn)步,處理方法逐漸成熟,綜合來看主要分為幾何算法優(yōu)化、文件格式優(yōu)化、數(shù)據(jù)優(yōu)化、渲染優(yōu)化4種優(yōu)化方向。
(1) 幾何算法優(yōu)化主要有邊折疊算法及其變種方法,通過優(yōu)化三角面片數(shù)與頂點(diǎn)數(shù),減小數(shù)據(jù)體量的同時(shí)減輕渲染壓力,達(dá)到輕量化的目的。
(2) 文件格式優(yōu)化包括數(shù)據(jù)剔重、數(shù)據(jù)分組、空間索引等,數(shù)據(jù)剔重即將重復(fù)出現(xiàn)在文件格式中的數(shù)據(jù)進(jìn)行分類處理,結(jié)合數(shù)據(jù)分組操作,方便數(shù)據(jù)在各個(gè)組內(nèi)的壓縮和解壓縮。
(3) 數(shù)據(jù)優(yōu)化常見的方法有數(shù)據(jù)壓縮、數(shù)據(jù)分解等。數(shù)據(jù)壓縮需要有相應(yīng)的壓縮及解壓縮算法支撐,部分廠商在壓縮過程中還會(huì)對(duì)數(shù)據(jù)進(jìn)行加密操作。數(shù)據(jù)分解關(guān)鍵在于對(duì)數(shù)據(jù)進(jìn)行細(xì)節(jié)層次(LOD)處理。
(4) 渲染優(yōu)化主要思路即為遮擋剔除和批次繪制,當(dāng)視圖中一些構(gòu)件物體距離視點(diǎn)較遠(yuǎn),其像素投射在屏幕上的數(shù)量小于一個(gè)閾值時(shí),將其從內(nèi)存中剔除,同時(shí)視野外的物體數(shù)據(jù)也不會(huì)出現(xiàn)在內(nèi)存中,以確保流暢的渲染。此外,在BIM模型中,并非每個(gè)參數(shù)都參與到項(xiàng)目當(dāng)前需求之中,可以根據(jù)項(xiàng)目需求剔除系統(tǒng)不需要的參數(shù),只加載項(xiàng)目需要的數(shù)據(jù),使BIM模型縮減到流暢渲染的程度。
目前BIM專業(yè)模型輕量化的方法多種多樣,如何快捷有效地將大規(guī)模的BIM模型數(shù)據(jù)可視化地導(dǎo)入與展示仍有待深入研究,在現(xiàn)有的研究上轉(zhuǎn)化為可以推動(dòng)BIM實(shí)際應(yīng)用的成果是本次研究的主要目的。具體的成果方案設(shè)計(jì)思路如圖1所示。
2 方法與設(shè)計(jì)
2.1 關(guān)鍵方法
方法的選擇需要從多源異構(gòu)的數(shù)據(jù)匯聚與模型整合的項(xiàng)目需求出發(fā),將多種來源的不同格式模型數(shù)據(jù)、不同專業(yè)的工程模型通過IFC解析整合到統(tǒng)一格式文件中;同時(shí)將巖土、鋼結(jié)構(gòu)、混凝土等工程相關(guān)計(jì)算模型經(jīng)過解析重構(gòu),整合至平臺(tái)文件中。因此,在輕量化方法的選擇中,需要有多方面的考量。
根據(jù)平臺(tái)需求,對(duì)模型文件格式進(jìn)行設(shè)計(jì),使其適用于多源異構(gòu)的模型數(shù)據(jù)匯聚。將海量的數(shù)據(jù)整合至文件中后對(duì)文件輕量化,而文件的輕量化方法雖然實(shí)現(xiàn)了文件大小及文件內(nèi)數(shù)據(jù)的輕量化,使模型文件加載速度更快、傳輸及存儲(chǔ)效率更高,但并不能解決大體量模型在審閱時(shí)遇到的顯示幀數(shù)較低的問題。此時(shí)圖形相關(guān)算法設(shè)計(jì)尤為重要,將大體量模型加入至平臺(tái)中進(jìn)行操作時(shí),渲染優(yōu)化可以使平臺(tái)操作時(shí)保持較高的幀數(shù),有更好的操作體驗(yàn)。
渲染中,剔除操作對(duì)于減少渲染繪制圖元數(shù)量有很大作用,同時(shí)BIM模型十分適用于批次繪制方法,原因在于BIM模型往往有大量渲染信息相同的圖元,能夠同時(shí)提交用于渲染。一般兩個(gè)步驟并不能同時(shí)進(jìn)行,正常的流程必須為先進(jìn)行剔除,后將剔除后的圖元提交至繪制操作,在實(shí)際應(yīng)用中該流程對(duì)顯示幀率有較大影響。因此本文從實(shí)際出發(fā),考慮到BIM模型對(duì)實(shí)時(shí)動(dòng)態(tài)渲染最新數(shù)據(jù)的需求不高,針對(duì)性地設(shè)計(jì)了剔除與繪制雙線程方法,顯著優(yōu)化了顯示幀數(shù)。
BIM模型通過幾何簡(jiǎn)化的輕量化方法,可得到一個(gè)三角面片數(shù)量遠(yuǎn)小于原始模型的新模型,面片數(shù)據(jù)量得到極大的縮減,渲染速度得到很大的提升,但新模型比原始模型精細(xì)程度有所降低,有時(shí)會(huì)出現(xiàn)幾何特征發(fā)生改變的情況。
分頁(yè)細(xì)節(jié)層次(PagedLOD)用于將場(chǎng)景中的物體創(chuàng)建為多個(gè)顯示層次,可根據(jù)觀察視點(diǎn)與物體的距離選擇應(yīng)顯示的圖像節(jié)點(diǎn)或根據(jù)模型節(jié)點(diǎn)占據(jù)像素大小控制節(jié)點(diǎn)顯示,達(dá)到減少渲染壓力提高顯示幀率的效果。其優(yōu)點(diǎn)在于不顯示的節(jié)點(diǎn)小于一定像素后對(duì)模型的審閱造成的影響并不明顯,相比于對(duì)渲染效率的提升,PagedLOD技術(shù)可以視為一個(gè)輕量化方法中一個(gè)很好的選擇。分頁(yè)細(xì)節(jié)層次(PagedLOD)方法與幾何簡(jiǎn)化方法各有優(yōu)劣。本文根據(jù)使用條件設(shè)計(jì)了兩者結(jié)合的輕量化方法。思路為:當(dāng)視點(diǎn)距離模型較遠(yuǎn)時(shí),使用幾何簡(jiǎn)化后的新模型,視覺上與原始模型并無差距;當(dāng)模型構(gòu)件占據(jù)的像素增多時(shí),使用未經(jīng)幾何簡(jiǎn)化的原模型,使模型原有細(xì)節(jié)全面展現(xiàn),此時(shí)因視口范圍內(nèi)面片數(shù)較少,渲染效率依然能得到保證。
2.2 針對(duì)幾何數(shù)據(jù)的算法設(shè)計(jì)
幾何數(shù)據(jù)轉(zhuǎn)換的方法一般基于參數(shù)化幾何描述和三角化幾何描述兩種處理方法。前者使用多個(gè)數(shù)學(xué)參數(shù)描述一個(gè)幾何體,如圓柱體可以使用底面坐標(biāo)、底面半徑加上圓柱高度3個(gè)參數(shù),能夠?qū)蝹€(gè)物體做到最優(yōu)簡(jiǎn)化;后者則是使用多個(gè)三角面片描述一個(gè)幾何體,平面與曲面均可以被有限個(gè)三角面片擬合,模型的精度隨著三角面片的數(shù)量增多而增加,隨著三角面片數(shù)量增加模型的體量也會(huì)有明顯增加。根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),文件中不保存參數(shù)化信息,因此幾何優(yōu)化算法主要針對(duì)于三角化幾何描述的情形進(jìn)行優(yōu)化。
三角化幾何描述可以通過盡量不改變模型外觀的情況下盡量減少三角面片數(shù)的思路進(jìn)行優(yōu)化。常使用的方法有邊折疊算法,每次簡(jiǎn)化可以減少模型的兩個(gè)面片和一條邊,可以生成連續(xù)的細(xì)節(jié)層次,并且有著相應(yīng)的處理紋理數(shù)據(jù)的算法。具體的算法設(shè)計(jì)為對(duì)模型的每一條邊計(jì)算得出一個(gè)固定的損失值,在算法流程中通過不斷地迭代,每一次將模型中損失值最小的邊移除并折疊后,重新計(jì)算現(xiàn)有各個(gè)邊新的損失值,迭代至達(dá)到給定的簡(jiǎn)化程度為止。幾何簡(jiǎn)化算法設(shè)計(jì)需滿足如下要求:
(1) BIM模型數(shù)據(jù)經(jīng)過優(yōu)化后,不影響模型信息的審閱。
(2) BIM模型在經(jīng)過簡(jiǎn)化后不會(huì)丟失重要的幾何特征。
(3) 平臺(tái)可根據(jù)模型大小及渲染效率判斷是否需要對(duì)幾何數(shù)據(jù)進(jìn)行優(yōu)化。
基于該平臺(tái)對(duì)BIM模型數(shù)據(jù)的要求,通過對(duì)采樣率和最大誤差等參數(shù)進(jìn)行調(diào)試,對(duì)不同體量和精細(xì)程度的模型采用不同程度的簡(jiǎn)化,優(yōu)化誤差算法,使用改進(jìn)的邊折疊算法(見圖2),盡量避免簡(jiǎn)化過程中的幾何特征丟失情況。
2.3 文件格式數(shù)據(jù)結(jié)構(gòu)及設(shè)計(jì)
根據(jù)該平臺(tái)需要,文件格式設(shè)計(jì)應(yīng)滿足以下需求:
(1) 文件數(shù)據(jù)應(yīng)盡量不冗余,刪除重復(fù)的幾何及屬性數(shù)據(jù)。
(2) 文件具有可擴(kuò)展性,允許增加新的異構(gòu)數(shù)據(jù)來源。
(3) 文件的索引管理清晰,便于查詢多源異構(gòu)數(shù)據(jù)的文件信息。
(4) 文件格式的讀取與寫入性能應(yīng)考慮可視化性能,方便導(dǎo)入、打開與保存。
文件格式的設(shè)計(jì)依托于數(shù)據(jù)庫(kù)機(jī)制,使用數(shù)據(jù)庫(kù)作為數(shù)據(jù)的存儲(chǔ)方式,能夠?qū)崿F(xiàn)多源異構(gòu)模型文件的節(jié)點(diǎn)、模型、屬性及材質(zhì)等數(shù)據(jù)信息的索引管理,并且能兼容json文件,存儲(chǔ)項(xiàng)目信息、工程配置、過程記錄等信息。利用數(shù)據(jù)庫(kù)機(jī)制,文件具有很強(qiáng)的可擴(kuò)展性,方便多源異構(gòu)數(shù)據(jù)的導(dǎo)入與導(dǎo)出。數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)依托于不同的模型數(shù)據(jù)要求,多源異構(gòu)的數(shù)據(jù)信息要求數(shù)據(jù)結(jié)構(gòu)支持多樣化。
數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)分為以下3點(diǎn):
(1) 邏輯結(jié)構(gòu)設(shè)計(jì)。繼承BIM模型數(shù)據(jù)的邏輯結(jié)構(gòu)設(shè)計(jì),以樹結(jié)構(gòu)為主要邏輯結(jié)構(gòu),建立以構(gòu)件id為索引的多個(gè)數(shù)據(jù)表,包含空間位置數(shù)據(jù)表、紋理信息數(shù)據(jù)表、屬性數(shù)據(jù)表等,從而清晰存儲(chǔ)管理多源異構(gòu)模型數(shù)據(jù)。紋理數(shù)據(jù)以哈希值為索引,相同的紋理只存儲(chǔ)一次,將紋理數(shù)據(jù)量顯著壓縮,實(shí)現(xiàn)了文件數(shù)據(jù)量的縮小。
(2) 物理結(jié)構(gòu)設(shè)計(jì)。物理數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)主要利用已確定的邏輯數(shù)據(jù)結(jié)構(gòu),以及在實(shí)際使用中對(duì)數(shù)據(jù)的使用要求選擇合適的存儲(chǔ)方式。BIM數(shù)據(jù)文件作為可傳輸?shù)募写鎯?chǔ)方式,便于對(duì)BIM數(shù)據(jù)在軟件中的讀取,選擇的存儲(chǔ)結(jié)構(gòu)為順序存儲(chǔ)結(jié)構(gòu),方便對(duì)數(shù)據(jù)進(jìn)行檢索遍歷。
(3) 數(shù)據(jù)結(jié)構(gòu)與程序關(guān)聯(lián)設(shè)計(jì)。根據(jù)軟件需求,設(shè)定各類信息對(duì)應(yīng)增刪改查功能權(quán)限,從而保護(hù)數(shù)據(jù)安全性。
平臺(tái)設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)具備存儲(chǔ)管理“時(shí)間+空間+屬性+符號(hào)”信息,繼承BIM數(shù)據(jù)的體系結(jié)構(gòu)、幾何、參數(shù)、材質(zhì)、顏色、編碼及屬性信息,支持存儲(chǔ)多個(gè)虛擬維度的空間屬性數(shù)據(jù),支持自定義調(diào)整屬性層級(jí)、多個(gè)屬性組織維度。
2.4 渲染優(yōu)化設(shè)計(jì)
渲染優(yōu)化的目標(biāo)是能夠流暢地實(shí)時(shí)繪制BIM模型,使之能達(dá)到繪制幀率不低于30幀/s,但由于BIM數(shù)據(jù)體量一般都較大,模型三角面片數(shù)量動(dòng)輒上千萬(wàn),若不對(duì)渲染方式進(jìn)行優(yōu)化,解決渲染過程中的內(nèi)存開銷過大問題,則正常電腦很難滿足實(shí)時(shí)繪制要求。本文采用PagedLOD技術(shù)完成對(duì)渲染優(yōu)化設(shè)計(jì)。
LOD其算法步驟如下:
(1) 設(shè)定的像素模式(計(jì)算包圍球在屏幕上占有的像素大?。?/p>
(2) 比較范圍列表(保存所有子節(jié)點(diǎn)的范圍)的尺寸與子節(jié)點(diǎn)數(shù)量,如果小于子節(jié)點(diǎn)數(shù)量就讓子節(jié)點(diǎn)數(shù)量與范圍列表的數(shù)量相等。
(3) 遍歷所有子節(jié)點(diǎn),在范圍內(nèi)的就顯示,不顯示的節(jié)點(diǎn)將不會(huì)被渲染。
PagedLOD繼承了LOD,其遍歷器比LOD復(fù)雜得多,其算法步驟如下(見圖3):
(1) 如果遍歷器類型是剔除遍歷,則把該遍歷器上一幀遍歷完成后的幀數(shù)記錄下來。
(2) 對(duì)于每一個(gè)子節(jié)點(diǎn)計(jì)算其像素,跟LOD的相同。
(3) 循環(huán)范圍列表(該列表保存了所有子節(jié)點(diǎn)的范圍),判斷剛才計(jì)算到的像素是否在某個(gè)范圍列表里面,如果范圍鏈的尺寸沒有超過當(dāng)前子節(jié)點(diǎn)的數(shù)量就顯示。
(4) 加載之前消失的節(jié)點(diǎn)。
此外,當(dāng)模型數(shù)據(jù)體量巨大,如果所有的構(gòu)件都被繪制會(huì)浪費(fèi)大量的系統(tǒng)資源,例如建筑物內(nèi)部的機(jī)電設(shè)備等,運(yùn)用遮擋剔除和批次繪制技術(shù),可以大幅度提升整體渲染效率。遮擋剔除技術(shù)可以剔除場(chǎng)景當(dāng)前視口中被遮擋的物體,用八叉樹算法對(duì)所繪制的圖元進(jìn)行空間索引,計(jì)算當(dāng)前視口下所要剔除的圖元,以此做到只繪制最外層的物體,從而提升渲染效率。
批量繪制技術(shù)即當(dāng)一個(gè)物體繪制到屏幕上時(shí)便需要發(fā)起一次繪制命令,需要耗費(fèi)大量的CPU資源來調(diào)用渲染管線。通過將模型物體合并到一次的繪制中,可以減少大量的繪制命令調(diào)用次數(shù),能夠節(jié)省CPU資源,從而提升渲染流暢度。批量繪制技術(shù)往往會(huì)涉及到靜態(tài)批量合并或者動(dòng)態(tài)批量合并兩種策略,前者是通過預(yù)先的處理以達(dá)到合并目的,后者則是在每一幀的過程中進(jìn)行動(dòng)態(tài)合并,兩者可以分開單獨(dú)使用,也可以兩種方法結(jié)合使用。
2.4.1 幾何簡(jiǎn)化與分頁(yè)細(xì)節(jié)層次結(jié)合的渲染優(yōu)化
結(jié)合幾何簡(jiǎn)化后模型的LOD設(shè)計(jì),根據(jù)BIM模型,設(shè)置PagedLOD中顯示像素大小,在渲染時(shí),依據(jù)場(chǎng)景圖元在視口中占據(jù)像素大小,動(dòng)態(tài)選擇相應(yīng)顯示的渲染數(shù)據(jù),實(shí)現(xiàn)可視場(chǎng)景信息完整的情況下達(dá)到最好的渲染效率。
LOD的設(shè)計(jì)同時(shí)依賴于幾何簡(jiǎn)化算法設(shè)計(jì)。鑒于兩者的優(yōu)缺點(diǎn),設(shè)計(jì)了兩者結(jié)合的LOD設(shè)計(jì)。兩者結(jié)合時(shí),場(chǎng)景有兩種情況:
(1) 視口較遠(yuǎn)時(shí),場(chǎng)景圖元在視口中小于一定像素,因PagedLOD技術(shù)不會(huì)在場(chǎng)景中顯示,場(chǎng)景中將會(huì)顯示經(jīng)過簡(jiǎn)化后的模型的相應(yīng)圖元來代替原模型。因在視口中占據(jù)的像素很小,此時(shí)雖然簡(jiǎn)化后的模型精細(xì)程度較低,但在視覺上與原模型幾乎沒有差異。
(2) 視口較近時(shí),因場(chǎng)景圖元占據(jù)像素增多,此時(shí)顯示的模型則會(huì)更換為原模型,模型細(xì)節(jié)在審閱時(shí)不會(huì)受到任何影響。
兩種情況均能在不影響審閱情況下得到更好的輕量化效果。至此,通過對(duì)LOD的設(shè)計(jì),消除了LOD和幾何簡(jiǎn)化算法帶來的負(fù)面影響的同時(shí),顯著提升了渲染效率。
2.4.2 基于雙線程的剔除與渲染
根據(jù)渲染的需求,提出并設(shè)計(jì)了雙線程剔除繪制渲染方法(見圖4)。在渲染一幀的步驟中,將剔除操作與繪制操作分別在不同線程中完成,剔除操作完成后,會(huì)將剔除后的繪制數(shù)據(jù)存放在后緩存中,繪制操作線程則會(huì)從前緩存中提取數(shù)據(jù)進(jìn)行繪制。在下一次剔除操作完成后,將新的剔除后繪制數(shù)據(jù)存放在后緩存中,后緩存中的數(shù)據(jù)則會(huì)轉(zhuǎn)移至前緩存中供繪制線程調(diào)用。至此,剔除操作與繪制操作分開,剔除操作所耗費(fèi)的時(shí)間在渲染一幀的過程中為零,渲染效率只依賴于繪制操作線程所耗費(fèi)的時(shí)間。
2.4.3 動(dòng)態(tài)預(yù)處理后續(xù)批次渲染數(shù)據(jù)設(shè)計(jì)
在剔除操作完成后,需要將渲染數(shù)據(jù)提交給渲染管線進(jìn)行繪制操作,數(shù)據(jù)未經(jīng)處理時(shí),每一個(gè)物體均需要進(jìn)行一次繪制操作,場(chǎng)景完成一幀的顯示需要重復(fù)每一個(gè)物體的繪制操作。
因此剔除操作完成后的數(shù)據(jù)可以進(jìn)行批次合并操作,將數(shù)據(jù)中擁有相同渲染狀態(tài)的物體進(jìn)行合并,處理后的數(shù)據(jù)會(huì)存入緩存中供繪制操作線程調(diào)用。該操作通過減少繪制命令調(diào)用次數(shù),顯著減少了渲染一幀時(shí)繪制操作線程所耗費(fèi)的時(shí)間,以此提升渲染效率。該方法根據(jù)BIM模型中信息,對(duì)場(chǎng)景圖元中渲染狀態(tài)數(shù)據(jù)相同的圖元三角網(wǎng)格數(shù)據(jù)進(jìn)行批量合并并傳遞給顯卡。
2.5 程序組件設(shè)計(jì)
(1) 以各類文件類型為基礎(chǔ)的插件擴(kuò)展,將文件類型寫為osgDB所兼容格式并加載文件到自定義工程文件中。① 工程文件通過實(shí)現(xiàn)osgDB::Archive接口,將平臺(tái)自主設(shè)計(jì)的工程文件信息寫為osgDB所兼容格式,并能夠讀寫原文件材質(zhì)、節(jié)點(diǎn)、高程、貼圖、渲染、描述等多種信息。② 多源異構(gòu)文件類型通過實(shí)現(xiàn)osgDB::ReadWiriter接口,實(shí)現(xiàn)對(duì)各種類型文件的讀取至場(chǎng)景中的功能。
(2) 自定義插件。自主設(shè)計(jì)BaseFilePlugin文件讀取插件基類,各類文件讀取通過實(shí)現(xiàn)該基類完成對(duì)多源異構(gòu)數(shù)據(jù)文件的讀取支持。
3 驗(yàn) 證
驗(yàn)證數(shù)據(jù)來源于龍開口水電站,位于云南省大理州鶴慶縣境內(nèi),是金沙江中游河段規(guī)劃的第六級(jí)電站。龍開口水電站上游與金安橋水電站銜接,下游與魯?shù)乩娬俱暯?,距昆明直線距離280 km,距鶴慶縣城公路里程約60 km。龍開口水電站的開發(fā)任務(wù)是以發(fā)電為主,兼顧灌溉和供水。水庫(kù)正常蓄水位1 298.00 m,相應(yīng)庫(kù)容為5.07億m3,其中調(diào)節(jié)庫(kù)容1.13億m3,具有日調(diào)節(jié)性能;水庫(kù)校核洪水位為1 301.30 m,總庫(kù)容5.58億m3。BIM總裝模型包括了地質(zhì)、壩工、廠房、引水、建筑、施工、金結(jié)、水機(jī)、電一、電二、暖通、給排水、觀測(cè)等20多個(gè)專業(yè)模型。
本文在自主研發(fā)的BIM仿真系統(tǒng)平臺(tái)上完成對(duì)多種專業(yè)的BIM模型進(jìn)行測(cè)試,使用多種不同施工專業(yè)的BIM模型于平臺(tái)中進(jìn)行輕量化展示,并與同個(gè)模型不進(jìn)行輕量化處理的結(jié)果進(jìn)行對(duì)比驗(yàn)證。案例中所用于驗(yàn)證的模型分別涉及地質(zhì)專業(yè)、機(jī)電專業(yè)、土建專業(yè)及電氣專業(yè),測(cè)試結(jié)果如表1所列。
(1) 地質(zhì)模型輕量化前后對(duì)比驗(yàn)證(見圖5)。地質(zhì)專業(yè)使用龍開口水電站勘測(cè)模型,該模型體量較小,模型的三角面片數(shù)經(jīng)過幾何簡(jiǎn)化后至原有面片數(shù)1/3左右,幀率顯示與加載速度優(yōu)化不明顯,原因在于原模型數(shù)據(jù)量較小,渲染與加載效率主要受限于硬件。
(2) 機(jī)電專業(yè)與土建專業(yè)模型輕量化前后對(duì)比驗(yàn)證(見圖6~7)。機(jī)電專業(yè)使用龍開口水電站機(jī)電總裝模型,土建專業(yè)使用龍開口水電站水工總裝模型,兩者數(shù)據(jù)體量類似,輕量化后顯示效率效果相近,三角面片優(yōu)化至1/3左右時(shí),加載速度均有4倍以上提升,模型展示幀率提升幅度較大。
(3) 電氣專業(yè)模型輕量化前后對(duì)比驗(yàn)證(見圖8)。電氣專業(yè)使用110 kV強(qiáng)民變電站模型,數(shù)據(jù)體量遠(yuǎn)遠(yuǎn)大于其余模型,經(jīng)優(yōu)化后的顯示幀率與機(jī)電專業(yè)、土建專業(yè)模型顯示幀率差距較小,因電氣專業(yè)模型中擁有更多相同渲染屬性的模型構(gòu)件,動(dòng)態(tài)預(yù)處理過程中將相同渲染屬性數(shù)據(jù)合并提交,提高了顯示幀率;加載速度較之于機(jī)電專業(yè)、土建專業(yè)模型加載速度更快,因?yàn)槠湮募?shù)據(jù)在保存時(shí),紋理數(shù)據(jù)存在大量相同數(shù)據(jù),相同的紋理只存儲(chǔ)一次,文件加載數(shù)據(jù)量壓縮,加載時(shí)資源傳輸量減少。
通過對(duì)各專業(yè)模型輕量化前后測(cè)試結(jié)果分析,可以總結(jié)得到:
(1) 幾何簡(jiǎn)化的輕量化方法在各模型的應(yīng)用中優(yōu)化穩(wěn)定,不會(huì)因模型專業(yè)、數(shù)據(jù)量大小不同改變優(yōu)化效率;
(2) 渲染優(yōu)化的輕量化方法對(duì)不同模型在平臺(tái)上的顯示效果均有提升,其中不同專業(yè)模型中相同渲染屬性的構(gòu)件數(shù)量越多,渲染優(yōu)化提升效率越高;
(3) 文件格式及數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)支持打開多源異構(gòu)的不同專業(yè)模型,大體量模型內(nèi)相同紋理數(shù)據(jù)的壓縮,實(shí)現(xiàn)了減少資源傳輸量,提高了模型加載效率。
4 結(jié) 語(yǔ)
本文依托BIM仿真系統(tǒng)平臺(tái)需求,提出了一種BIM模型輕量化技術(shù)的應(yīng)用方法,用以解決在多源異構(gòu)模型數(shù)據(jù)匯集時(shí)遇到的性能相關(guān)問題,對(duì)于BIM的實(shí)際應(yīng)用十分必要?;陂_發(fā)的BIM仿真系統(tǒng),通過多個(gè)樣本和指標(biāo)驗(yàn)證了所提出的方法在BIM應(yīng)用中的有效性。
參考文獻(xiàn):
[1] 姜日鑫.基于數(shù)據(jù)引用的Revit模型數(shù)據(jù)輕量化插件研究[J].建筑技術(shù)開發(fā),2021,48(3):92-94.
[2] 陳慶財(cái),馮蕾,梁建斌,等.BIM模型數(shù)據(jù)輕量化方法研究[J].建筑技術(shù),2019,50(4):455-457.
[3] 操鋒,張海兵,段高博.BIM模型輕量化問題研究[J].中國(guó)管理信息化,2020,23(2):79-80.
[4] 陳龍,郭軍,張建中.三維模型輕量化技術(shù)[J].工礦自動(dòng)化,2021,47(5):116-120.
[5] 王云龍,朱明清,吳文凱,等.基于頂點(diǎn)偏移算法的模型輕量化優(yōu)化方法[J].自動(dòng)化技術(shù)與應(yīng)用,2019,38(8):27-30.
[6] 劉曉利,劉則毅,高鵬東,等.基于尖特征度的邊折疊簡(jiǎn)化算法[J].軟件學(xué)報(bào),2005,4(5):669-675.
[7] 張必強(qiáng),邢淵,阮雪榆.基于特征保持和三角形優(yōu)化的網(wǎng)格模型簡(jiǎn)化[J].上海交通大學(xué)學(xué)報(bào),2004,4(8):1373-1377.
[8] 李現(xiàn)民,李桂清,張小玲,等.基于子分規(guī)則的邊折疊簡(jiǎn)化方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2002,4(1):8-13.
[9] 馮翔,周明全.帶紋理的三維模型簡(jiǎn)化算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2009,21(6):842-846,852.
[10] 杜曉暉,尹寶才,孔德慧.一種邊折疊三角網(wǎng)格簡(jiǎn)化算法[J].計(jì)算機(jī)工程,2007,4(20):12-15.
[11] 金廣龍,秦慶鵬.基于BS架構(gòu)的BIM模型輕量化技術(shù)[J].中國(guó)高新科技,2020,4(20):61-62.
[12] 馬金忠,田彥山.基于云計(jì)算的BIM模型輕量化及應(yīng)用研究綜述[J].寧夏師范學(xué)院學(xué)報(bào),2019,40(7):72-78.
[13] 白雪,王翔,朱超平.BIM輕量化技術(shù)在鐵路工程建設(shè)中的應(yīng)用研究[J].鐵道通信信號(hào),2019,55(1):40-43.
[14] 趙維,茅坪,沈凡宇.下一代三維圖形引擎發(fā)展趨勢(shì)研究[J].系統(tǒng)仿真學(xué)報(bào),2017,29(12):2935-2944.
[15] 張萍.BIM專業(yè)模型輕量化處理方法研究[J].中國(guó)管理信息化,2020,23(14):122-123.
[16] 毛旭陽(yáng),李曉東,李娜.數(shù)字城市三維可視化平臺(tái)BIM模型輕量化技術(shù)研究[J].城市建設(shè)理論研究(電子版),2020,4(20):122-128.
[17] 余芳強(qiáng),宋天任,陳菁.面向網(wǎng)絡(luò)化應(yīng)用的古建筑BIM模型輕量化處理技術(shù)[J].建筑施工,2018,40(3):321-323.
[18] 郭思怡,陳永鋒.建筑運(yùn)維階段信息模型的輕量化方法[J].圖學(xué)學(xué)報(bào),2018,39(1):123-128.
[19] 劉北勝.基于云渲染的三維BIM模型可視化技術(shù)研究[J].北京交通大學(xué)學(xué)報(bào),2017,41(6):107-113.
(編輯:劉 媛)
Research and implementation of lightweight technology of BIM model
SUN Yuan1,3,WANG Guoguang1,2,3,ZHAO Xingying1,2,3,WANG Yang1,3,DONG Daluan4
(1.PowerChina Huadong Engineering Corporation Limited,Hangzhou 311122,China; 2.Zhejiang Engineering Digital Research Center,Hangzhou 311122,China; 3.Zhejiang Huadong Engineering Digital Technology Co.,Ltd.,Hangzhou 311122,China; 4.Zhejiang Huadong Construction Engineering Co.,Ltd.,Hangzhou 311122,China)
Abstract:
At present,the application of building information model (BIM) in projects is becoming more urgent in China,however the massive model of BIM with jumbled data seriously restricts the use of BIM technology in practical applications.Large BIM models have the problems of slow loading and stuck display in the display process.Therefore,it was proposed to build a BIM lightweight system,and provided a review and browsing platform for a large number of BIM models by self-developed BIM simulation system platform.Four methods were used to build BIM lightweight system,geometric simplification algorithm,rendering optimization algorithm,file format optimization and data structure design.The triangular surface of BIM model was optimized by edge folding algorithm.According to the model of multi-source heterogeneous data,the file format and data structure were designed.At the rendering level,the combination of PagedLOD technology and geometric simplified model,the double-thread method of rejection and rendering,and the rendering optimization technology of batch rendering were researched and implemented independently to complete the preliminary construction of BIM lightweight system and verified it in the platform.The results showed that the application of lightweight method system made the platform quickly load a large number of BIM models and smoothly display them,and had ability to display multi-source heterogeneous data models on the same platform
Key words:
BIM;model lightweight technology;PagedLOD;double-thread method