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