肖康 施晨歡 張彥鵬
(華建數(shù)創(chuàng)(上海)科技有限公司,上海 200011)
2021 年5 月,住房和城鄉(xiāng)建設(shè)部頒布了《城市信息模型(CIM)基礎(chǔ)平臺技術(shù)導(dǎo)則》(修訂版),其中城市信息模型(City Information Modeling,CIM)被定義為“以建筑信息模型(BIM)、地理信息系統(tǒng)(GIS)、物聯(lián)網(wǎng)(IoT)等技術(shù)為基礎(chǔ),整合城市地上地下、室內(nèi)室外、歷史現(xiàn)狀未來多維多尺度空間數(shù)據(jù)和物聯(lián)感知數(shù)據(jù),構(gòu)建起三維數(shù)字空間的城市信息有機(jī)綜合體[1]”。上海市住房城鄉(xiāng)建設(shè)管理委會同市經(jīng)信委于2022 年9月聯(lián)合印發(fā)《關(guān)于開展上海城市信息模型(CIM)底座建設(shè)的指導(dǎo)意見》,并充分運(yùn)用最新的信息技術(shù),歸集全市白模、精模、地下管線與構(gòu)筑物、區(qū)域CIM 和工程建設(shè)BIM 等三維數(shù)據(jù)以及燃?xì)狻⒔煌窙r等IoT數(shù)據(jù),完成數(shù)據(jù)匯聚與管理、數(shù)據(jù)查詢與可視化等五類基礎(chǔ)功能開發(fā),實(shí)現(xiàn)數(shù)據(jù)二三維一體化、動態(tài)靜態(tài)一體化、地上地下一體化和分層分級可視化展示等分析能力,基本建成住建行業(yè)CIM 平臺[2]。
CIM 發(fā)展和應(yīng)用的基礎(chǔ)和前提是建立一個全要素、大場景、美觀又實(shí)用的數(shù)字城市三維時空底座。CIM數(shù)字底座建設(shè)中的主體框架是BIM+GIS,可輔助IoT采集視頻、傳感器等數(shù)據(jù)來構(gòu)建整個CIM 數(shù)字底板。
目前,多源異構(gòu)三維模型的集成與兼容仍存在諸多技術(shù)難點(diǎn),主要體現(xiàn)在模型數(shù)據(jù)融合難、模型加載效率低及渲染性能差等問題[3]。而在實(shí)際CIM 項(xiàng)目建設(shè)過程中,三維數(shù)字底板模型部分多以三維手工建模、傾斜攝影為主,距離全場景承載BIM 模型的目標(biāo)尚有差距[4]。
針對于這些實(shí)際項(xiàng)目中遇到的技術(shù)難點(diǎn),本文提出了一套解決方案:
(1)針對于BIM 模型實(shí)現(xiàn)數(shù)模分離、壓縮優(yōu)化,并對OBJ、FBX 等格式三維人工建模模型進(jìn)行模型輕量化;
(2)對所有類型的模型在治理優(yōu)化的基礎(chǔ)上統(tǒng)一形成.cim 的標(biāo)準(zhǔn)格式模型;
(3)自定義的.cim 格式支持雙向轉(zhuǎn)換,即從.cim轉(zhuǎn)出OBJ、FBX 等40+種格式;
(4)基于統(tǒng)一的.cim 格式,同時支持目前CIM 主流引擎—游戲引擎、WebGL 等多源引擎融合加載渲染,即用一套模型實(shí)現(xiàn)多引擎支持。
(2)地理上的集中本身就有助于商品制造者、供給者與顧客之間產(chǎn)生一種更為自由的信息傳播,相當(dāng)數(shù)量的創(chuàng)新正是由于顧客需要和解決供給問題而產(chǎn)生的結(jié)果.
CIM 數(shù)字底座輕量化技術(shù)路線如圖1 所示。
圖1 CIM 數(shù)字底座輕量化技術(shù)路線
模型治理優(yōu)化工具的核心是對BIM 模型的輕量化。本文通過Revit 二次開發(fā)將BIM 模型的結(jié)構(gòu)化的構(gòu)件信息與非結(jié)構(gòu)化的渲染信息數(shù)據(jù)進(jìn)行壓縮優(yōu)化,并根據(jù)數(shù)據(jù)類型采用對應(yīng)的數(shù)據(jù)存儲方式進(jìn)行分離存儲,以達(dá)BIM 模型的高度輕量化。其主要包括以下三個步驟:
(1)數(shù)模分離
首先提取模型中的幾何數(shù)據(jù)和模型中的非幾何數(shù)據(jù),并建立構(gòu)件幾何索引字典映射,自動分析幾何標(biāo)高信息提取出當(dāng)前幾何樓層信息,對非幾何數(shù)據(jù)進(jìn)行去重、合并和優(yōu)化等操作,減小數(shù)據(jù)存儲量[5]。
(2)網(wǎng)格簡化
然后采用QEM 網(wǎng)格簡化算法結(jié)合權(quán)值計(jì)算及累積簡化誤差度量進(jìn)行三角網(wǎng)格簡化,在不損失模型精細(xì)度的情況下簡化幾何特征值精度并計(jì)算最優(yōu)頂點(diǎn)收縮,使頂點(diǎn)數(shù)與三角面數(shù)減少以達(dá)到局部簡化最優(yōu)性[6]。
(3)壓縮優(yōu)化
將簡化后的構(gòu)件幾何數(shù)據(jù)按每500個壓縮為一個包,拆解為N 份,根據(jù)拆分標(biāo)識與幾何字典映射生成數(shù)據(jù)索引,并進(jìn)行分塊壓縮,大幅降低BIM 模型的體積[7]。
圖2 BIM 模型輕量化流程
本文提出的CIM 統(tǒng)一標(biāo)準(zhǔn)模型格式(.cim),主要分為索引數(shù)據(jù)、幾何數(shù)據(jù)和屬性數(shù)據(jù)三部分。其中,.cim索引數(shù)據(jù)文件主要包含關(guān)聯(lián)模型、幾何分組、材質(zhì)索引、模型源點(diǎn)及模型版本等信息;.pack 幾何文件主要包含屬性索引、顏色、法線、頂點(diǎn)及UV 等信息;.cdp屬性數(shù)據(jù)文件主要包含基礎(chǔ)屬性(構(gòu)件屬性)、屬性分組(關(guān)聯(lián)模型)、標(biāo)高(樓層劃分)、房間(房間劃分)及版本等信息。通過數(shù)模分離、重新分類和無損壓縮,可以實(shí)現(xiàn)在多源引擎中使用WebWorker 多線程按需組裝加載[8],各部分的模型格式組成如圖3 所示。
圖3 CIM 統(tǒng)一標(biāo)準(zhǔn)模型格式組成
人工建模模型的格式種類繁多,本文基于CIM 統(tǒng)一標(biāo)準(zhǔn)模型格式,將多達(dá)40 多種三維格式轉(zhuǎn)換為.cim,同時支持將.cim 格式轉(zhuǎn)換回原格式。通過.cim 模型插件對模型(.cim、.pack、.cdp)進(jìn)行二進(jìn)制解密,并對壓縮后的非結(jié)構(gòu)化幾何數(shù)據(jù)進(jìn)行重組,結(jié)構(gòu)化屬性數(shù)據(jù)進(jìn)行序列化操作,然后通過插件將整個模型加載至一個場景對象,此對象承載模型所有數(shù)據(jù),包含節(jié)點(diǎn)、幾何、材質(zhì)和動畫等。
場景對象包含了場景根節(jié)點(diǎn)的引用,在根節(jié)點(diǎn)中包含了場景對象中所儲存數(shù)據(jù)的索引,每個節(jié)點(diǎn)都可以有多個子節(jié)點(diǎn),形成模型節(jié)點(diǎn)樹。在節(jié)點(diǎn)中關(guān)聯(lián)場景對象的nMeshes 數(shù)組,此數(shù)組只存儲場景中網(wǎng)格數(shù)組的索引數(shù)據(jù)。場景下的Meshes 數(shù)組儲存了模型實(shí)際的Mesh 對象,Mesh 對象包含渲染所需要的所有相關(guān)數(shù)據(jù),包含面、法向量、頂點(diǎn)位置、紋理坐標(biāo)和材質(zhì)數(shù)據(jù)。一個Mesh 包含多個面、材質(zhì)對象,面包含了組成圖元的頂點(diǎn)的索引,表示點(diǎn)、三角形及方形類型的渲染圖元。由于頂點(diǎn)和索引是分開的,使用索引結(jié)構(gòu)進(jìn)行渲染大大提高了模型加載及處理的效率。材質(zhì)對象包含物體的材質(zhì)屬性,如顏色和紋理貼圖、漫反射和鏡面光貼圖等材質(zhì)相關(guān)屬性[9],多格式雙向轉(zhuǎn)換流程如圖4 所示。
圖4 多格式雙向轉(zhuǎn)換流程
目前CIM 主流的應(yīng)用平臺以由Unreal Engine 為代表的游戲引擎和基于網(wǎng)頁端的WebGL 引擎組成。游戲引擎以三維可視化、渲染效果為主,WebGL 引擎則側(cè)重于業(yè)務(wù)系統(tǒng)的建設(shè)[10]。這兩大類引擎對于三維模型的格式、存儲和傳輸各有不同的方式,在項(xiàng)目中往往需要兩套獨(dú)立的模型數(shù)據(jù)。本文基于所提出的CIM 統(tǒng)一標(biāo)準(zhǔn)模型格式,即可實(shí)現(xiàn)后臺同一套模型數(shù)據(jù),游戲引擎和WebGL 同時讀取、加載和渲染的目標(biāo),從而實(shí)現(xiàn)多源平臺引擎融合。
針對于“重量級”BIM 模型可在本地生成輕量化包手動上傳至云平臺,減少模型處理失敗,網(wǎng)絡(luò)不穩(wěn)定傳輸造成的處理失敗問題,同時支持將輕量化壓縮包進(jìn)行本地部署,提高模型加載效率與模型安全性。上傳至云平臺是指在本地環(huán)境中將模型預(yù)處理后的輕量級壓縮包上傳至云平臺進(jìn)行后續(xù)壓縮計(jì)算,有著不占用本地資源,批量處理的優(yōu)勢。
基于自定義可控的CIM 標(biāo)準(zhǔn)格式模型,可以解析BIM 模型構(gòu)件,進(jìn)行構(gòu)件級別精細(xì)化管理和信息統(tǒng)計(jì)匯總,如圖5 所示。
圖5 構(gòu)件級別精細(xì)化管理和信息統(tǒng)計(jì)匯總
本文以一座上海市歷史保護(hù)建筑的BIM 模型為例,按照圖2 的技術(shù)流程對BIM 進(jìn)行數(shù)模分離、壓縮優(yōu)化等處理,形成統(tǒng)一的標(biāo)準(zhǔn)模型格式(.cim),原始模型大小118MB,無損輕量化后的大小為9.7MB,模型文件組成部分如圖6 所示。
圖6 CIM 統(tǒng)一標(biāo)準(zhǔn)模型格式
本文以.fbx 格式為例,通過開發(fā)轉(zhuǎn)換腳本,實(shí)現(xiàn).cim格式與.fbx 格式的雙向轉(zhuǎn)換,轉(zhuǎn)換過程如圖7 所示,轉(zhuǎn)換結(jié)果如圖8 所示。
圖7 多格式雙向轉(zhuǎn)換腳本
圖8 多格式雙向轉(zhuǎn)換結(jié)果
基于CIM 標(biāo)準(zhǔn)格式模型,實(shí)現(xiàn)大屏端、PC 端、移動端等多終端和跨平臺支持,針對目前CIM 主流的基于游戲引擎和WebGL 兩大類引擎,從模型和平臺層面實(shí)現(xiàn)了多源引擎的融合。
2.4.1 基于游戲引擎渲染可視化
通過CIM 配套的游戲引擎插件提取模型的頂點(diǎn)數(shù)據(jù)、法線、紋理坐標(biāo),重新解析并采用數(shù)組結(jié)構(gòu)分散儲存為游戲引擎支持的Vertices、Normals、TextureCoords、Faces 數(shù)據(jù),在游戲引擎內(nèi)部采用ProceduralMesh、CreateMeshSection、GetAllFilesInDirectory、FindMeshInfo、LoadMesh 等函數(shù)還原為原始模型,同時該插件支持在UE 引擎下Runtime 模式中實(shí)時讀取模型數(shù)據(jù),實(shí)現(xiàn).cim 模型的無損轉(zhuǎn)換渲染及運(yùn)行時動態(tài)加載,技術(shù)路線如圖9 所示,渲染效果如圖10 所示。
圖9 基于游戲引擎的加載、渲染技術(shù)路線
圖10 基于游戲引擎的無縫加載、渲染
2.4.2 基于WebGL 引擎渲染可視化
在模型渲染展示時,首先發(fā)起渲染請求,模型云平臺收到請求后反饋回模型索引數(shù)據(jù),前端根據(jù)索引數(shù)據(jù)通過Web Worker 多線程請求與解壓處理模型數(shù)據(jù)包,并解析相應(yīng)的幾何數(shù)據(jù),在前端進(jìn)行渲染,技術(shù)路線如圖11 所示,渲染效果如圖12 所示。
圖11 基于WebGL 引擎加載、渲染技術(shù)路線
圖12 基于WebGL 引擎加載、渲染結(jié)果
輕量化結(jié)果與市場主流的BIMFace、盈嘉互聯(lián)、葛蘭岱爾和易景空間等4 個品牌等進(jìn)行了定量比較,基于原始大小118.6M 的模型文件,從輕量化結(jié)果、前端加載大小、加載渲染時間和壓縮比率4 個維度進(jìn)行了分析統(tǒng)計(jì)。本次實(shí)現(xiàn)的輕量化成果均占據(jù)明顯的優(yōu)勢,優(yōu)化后模型文件相比原始文件減少 92%,優(yōu)化后模型前端加載量相比原始文件減少 98.5%,模型加載渲染僅耗時1.9 s,比較結(jié)果如圖13 所示。
圖13 與市場主流品牌定量比較
本文提出的CIM 數(shù)字底座輕量化關(guān)鍵技術(shù)已經(jīng)在多個項(xiàng)目中實(shí)際落地,具有很大的應(yīng)用價(jià)值,主要?dú)w納為三個方面:
(1)完善了CIM 數(shù)據(jù)融合機(jī)制。模型治理優(yōu)化工具將常用三維模型格式統(tǒng)一為CIM 標(biāo)準(zhǔn)模型文件格式(.cim) ,為CIM 提供完整的模型數(shù)據(jù)融合機(jī)制;
(2)提高了CIM 模型加載渲染效率。輕量化模型在保證模型精度、構(gòu)件屬性不丟失的情況下,能夠基于多源引擎平臺大幅提高模型渲染效率。為CIM+應(yīng)用、智慧園區(qū)、智慧工地等應(yīng)用場景提供從宏觀到微觀、從室外到室內(nèi)不同空間場景中無縫銜接、切換和瀏覽;
(3)實(shí)現(xiàn)了模型在幾何實(shí)體、承載信息等方面的精簡、轉(zhuǎn)換、縮減的過程。減少重復(fù)性人工模型簡化工作,加快項(xiàng)目交付。