饒平平 趙思凡 張學亮
(1.上海理工大學 環(huán)境與建筑學院,上海 200093; 2.同納檢測認證集團有限公司,上海 200331)
當前,國內(nèi)外工程應(yīng)用各階段對BIM的需求呈現(xiàn)出從靜態(tài)的、交互性差的模型展示轉(zhuǎn)向共享化、網(wǎng)絡(luò)化的趨勢[1]。BIM技術(shù)雖然早已應(yīng)用于建筑行業(yè),但在初期很多工程交付過程中,仍以BIM本地文件的形式進行數(shù)據(jù)傳遞,再通過安裝特定的客戶端軟件查看模型。這些模型數(shù)據(jù)量大且傳遞方式不實時,從而大大降低了BIM技術(shù)在工程應(yīng)用中的便捷性[2]。
在BIM模型輕量化方面,Autodesk Revit 軟件系列的模型存儲為rvt 格式; 晁陽等[3]通過將BIM模型導出為fbx格式文件實現(xiàn)Web端可視化,但輕量化程度遠遠不夠且瀏覽器渲染效果一般;薛建英等[4]將Revit模型轉(zhuǎn)化為json格式文件,進行瀏覽器的渲染,但輕量化強度仍達不到工程廣泛使用的要求; 楊李東等[5]研究了3D Tiles 相關(guān)的數(shù)據(jù)轉(zhuǎn)換技術(shù),由于數(shù)據(jù)結(jié)構(gòu)較復雜,輕量化效果不理想; 呂婧等[6]通過將Revit模型轉(zhuǎn)化為gltf格式文件,實現(xiàn)了模型數(shù)據(jù)的輕量化,但卻未深入考慮各專業(yè)模型轉(zhuǎn)化的適用性問題。
近年來,眾多BIM工作團隊為提高模型查看效率開展了一系列研究。例如,BIMFACE[7]嘗試網(wǎng)絡(luò)端BIM顯示,同時需要用戶將模型上傳至其服務(wù)器,再通過模型在線轉(zhuǎn)換調(diào)取文件API接口進行網(wǎng)頁開發(fā),才能實現(xiàn)客戶端對BIM模型的瀏覽; 魯班等團隊[8]研發(fā)的平臺需要同樣的邏輯操作,這些操作雖然初步實現(xiàn)了模型輕量化Web端展示,但用戶使用仍受制于特定的客戶端及平臺。除此之外,直接將工程信息上傳到第三方平臺會對重大工程的信息保護構(gòu)成很大威脅。
基于此,本文使用BIM模型輕量化轉(zhuǎn)換方案,搭載Web流式加載技術(shù),結(jié)合工程實際應(yīng)用需求,統(tǒng)一了文件格式和數(shù)據(jù)結(jié)構(gòu),優(yōu)化了模型渲染技術(shù),設(shè)計了工程數(shù)據(jù)篩選思路,實現(xiàn)了基于Web端輕量化平臺展示流暢的渲染效果,對BIM輕量化方案作出了一定的優(yōu)化,提高了BIM模型查看效率和平臺使用流暢度,使其更加滿足實際工程應(yīng)用需要。
未來的BIM應(yīng)用會趨于輕量化,這一趨勢最明顯的變化就是由厚重的客戶端向Web端轉(zhuǎn)變的過程。由于Web端無法直接處理rvt文件,Revit模型需要經(jīng)過轉(zhuǎn)換才能在Web端顯示。而Web端支持的模型格式較為廣泛,如xml、obj、3ds、json、dae、gltf等格式。其中,gltf能用于許多系統(tǒng)的數(shù)據(jù)交換,也滿足服務(wù)器與客戶端之間的數(shù)據(jù)交換格式,并且相對來說數(shù)據(jù)量很小,是BIM數(shù)據(jù)從客戶端向Web端轉(zhuǎn)型的重要形式之一。
本文輕量化技術(shù)選擇“gltf格式數(shù)據(jù)+流式加載”的輕量化模式,在實現(xiàn)BIM應(yīng)用模塊整體輕量化的同時,還保證了數(shù)據(jù)的完整性、平臺的流暢性及穩(wěn)定性。
gltf(GL Transmission Format)是由 Microsoft與Khron os 3D 公司共同推出的應(yīng)用于網(wǎng)絡(luò)傳輸?shù)娜S模型文件格式,且被大多數(shù)瀏覽器渲染引擎所支持,可以加載gltf格式模型文件,例如Three.JS、Cesium.JS等。在3D內(nèi)容的傳輸和加載過程中,gltf通過提供高效、可協(xié)作和易擴展的格式填補了3D 建模工具和現(xiàn)代Web應(yīng)用程序之間的空白。使用gltf的用戶可以使用現(xiàn)有工具來處理模型并減少模型中的數(shù)據(jù)量,無需經(jīng)過多余的客戶端或平臺進行模型展示。
gltf的本質(zhì)是一種易于Web端解析的 json文件+數(shù)據(jù),該文件描述了3D場景的結(jié)構(gòu)和組成,其中包含模型的節(jié)點層次、材質(zhì)、相機、網(wǎng)格、著色器及動畫等相關(guān)邏輯結(jié)構(gòu),應(yīng)用程序通過讀取這些信息對模型的環(huán)境和場景參數(shù)進行設(shè)置。
圖1 gltf數(shù)據(jù)結(jié)構(gòu)圖
gltf的數(shù)據(jù)結(jié)構(gòu)簡單,內(nèi)存占比較小。如圖1所示,gltf數(shù)據(jù)主要分為三大模塊:幾何模塊、數(shù)據(jù)模塊和表層模塊。幾何模塊中json文件主要描述模型完整的場景,包括節(jié)點、材質(zhì)、相機和網(wǎng)格等; 數(shù)據(jù)模塊中bin文件主要包含幾何和動畫數(shù)據(jù); 表層模塊由圖像文件組成,用于圖片紋理的顯示。
瀏覽器有兩種方式加載gltf模型:對于簡單模型,將Model視作幾何體直接加載,方法簡單,效果單一且適用性差; 對于復雜建筑群、大型場地等,采用多樣化屬性加載方式。瀏覽器加載文件過程中,Model有四種狀態(tài):加載模型、解析數(shù)據(jù)、數(shù)據(jù)反饋及繪圖。
圖2所示為流式加載過程:首先解析中間數(shù)據(jù)json文件,進行初步的模型結(jié)構(gòu)構(gòu)建; 其次解析gltf具體數(shù)據(jù),將數(shù)據(jù)(紋理、頂點、材質(zhì)屬性等)賦值給模型各個結(jié)構(gòu); 再者瀏覽器進行數(shù)據(jù)解析并反饋數(shù)據(jù)至渲染隊列; 最終由繪圖指令(Drawconnand)繪制Web端3D圖形。
圖2 瀏覽器加載GLTF流程
對于密集建筑群與大型場地,如果一次性加載所有建筑,會造成內(nèi)存緊張甚至崩潰,正如很多BIM客戶端軟件在大型工程中會出現(xiàn)加載卡頓、死機的情況。針對這一問題,傳統(tǒng)的處理方式是LOD[9](Levels of Detail,細節(jié)層次法)處理技術(shù),它認為當模型覆蓋面積很小時,可以使用較粗的物體來描述模型,對被遮擋的物體使用簡模展示,并給出了算法判定幾何層次,從而讓計算機快速繪制出復雜場景模型。但是,由于視角一直在建筑中來回切換,不同LOD模型也會隨之切換,造成占用相對較大的內(nèi)存。而瀏覽器的流式加載相比于傳統(tǒng)客戶端直接加載模型方式,其優(yōu)勢在于它可以在保證快速加載出靜態(tài)模型的前提下,流暢地進行動態(tài)模型加載; 同時可以根據(jù)視角的時空位置,只加載當前一定范圍內(nèi)的場景,并且利用多余的內(nèi)存提前加載后續(xù)一定空間的場景,在視角切換到下一空間時,繼續(xù)循環(huán)進行之前的加載操作。
對于BIM模型的Web端可視化過程,可以根據(jù)BIM應(yīng)用的需求,篩選轉(zhuǎn)換后的各類模型數(shù)據(jù),進一步輕量化模型數(shù)據(jù)。對于一般BIM應(yīng)用的開發(fā)需求,在模型轉(zhuǎn)換時,可以僅選取最基本的模型空間、紋理等形態(tài)數(shù)據(jù); 對于重大項目或?qū)Π踩?、保密性有特殊要求的項目,可以只提?D場景及工程應(yīng)用所需的基本數(shù)據(jù),篩除工程隱私數(shù)據(jù),保障BIM模型共享數(shù)據(jù)的安全性; 對于復雜應(yīng)用環(huán)境的工程項目,可以同時開發(fā)兩種不同的模型平臺,從BIM數(shù)據(jù)源頭保證數(shù)據(jù)的安全性。
BIM模型數(shù)據(jù)格式種類繁多,但考慮到模型文件需要在Web端良好顯示,目前主流的格式轉(zhuǎn)換方案是將模型導出為obj、3Dtiles、gltf等格式。
表1 各格式3D模型性能對比表
基于上海理工大學優(yōu)秀歷史建筑群的案例,本文以別墅群中的小洋樓205為例,圖3所示為在格式轉(zhuǎn)換后導出rvt、obj和gltf格式文件的數(shù)據(jù)大小對比,其數(shù)據(jù)特點如表1所示。
通過小洋樓205不同格式的數(shù)據(jù)大小對比和3D模型性能對比,得出以下判斷:rvt文件數(shù)據(jù)量大,兼容性差,在BIM產(chǎn)品應(yīng)用過程中包袱厚重,限制較多; 而gltf文件的數(shù)據(jù)量最小,205模型的gltf數(shù)據(jù)大小僅為初始rvt數(shù)據(jù)的9.47%,rvt-gltf方案的模型轉(zhuǎn)化效率明顯高于其他方案; 且相比于obj文件,gltf文件具有數(shù)據(jù)量更小,數(shù)據(jù)信息更完整的特點,gltf文件更適用于Web端模型顯示。
圖3 小洋樓205各數(shù)據(jù)格式數(shù)據(jù)量
前文基礎(chǔ)確定了本文的數(shù)據(jù)轉(zhuǎn)換方案為rvt-gltf,在之前的研究中,有許多轉(zhuǎn)換出gltf格式文件的方案。例如徐敬海[10]等通過已有開源工具ifcConvert將IFC文件轉(zhuǎn)化為obj格式文件,再通過obj2gltf開源庫實現(xiàn)obj向gltf格式文件的轉(zhuǎn)化。邊根慶[11]等通過調(diào)用Revit API,使用Revit2gltf實現(xiàn)gltf格式文件輸出。本文通過較為成熟的Revit2gltf開源庫,實現(xiàn)rvt-gltf轉(zhuǎn)換方案。
研究思路:建立Revit模型,Revit二次開發(fā)導出gltf+bin,在Three.js引擎渲染W(wǎng)eb端模型,最后進行平臺功能設(shè)計。
由Revit二次開發(fā)導出gltf+bin文件集:首先搭建Revit二次開發(fā)環(huán)境,安裝Revit 2018+Visual Studio Code 2019,下載Revit SDK 2019,配置AddinManager及Revit Lookup二次開發(fā)插件。提取數(shù)據(jù)需要依賴Revit的sdk、c#引用鏈接庫RevitAPI.dll、RevitDBAPI.dll,實現(xiàn)IExportContext接口。
在Three.js引擎渲染W(wǎng)eb端模型:Three.js是基于WebGL發(fā)展起來的一套Web3D引擎,它對WebGL進行了封裝,開發(fā)者不需要了解圖形渲染的細節(jié),只需要調(diào)用其接口二次開發(fā)就可實現(xiàn)基礎(chǔ)的3D展示。本文選擇開發(fā)環(huán)境為2019版vscode。具體開發(fā)流程圖如圖4所示:
圖4 平臺開發(fā)流程圖
模型同樣選擇上海理工大學小洋樓205為例,根據(jù)已經(jīng)獲得的小洋樓205的rvt、obj、gltf數(shù)據(jù)格式,利用WebGL技術(shù),搭載Three.js框架,基于Visual Studio 2019開發(fā)環(huán)境,進行初步的模型Web端顯示,并對比分析三種模型顯示效果如圖5所示。
(a)rvt格式模型顯示效果
三種顯示效果均在同一設(shè)備、同一初始狀態(tài)下進行,網(wǎng)絡(luò)環(huán)境一致且正常,圖5(a)是rvt文件在Revit軟件中的顯示效果,模型加載耗時7.36s,構(gòu)件顯示較為清晰,但交互操作嚴重卡頓; 圖5(b)是obj文件在Web端展示效果,加載耗時0.28,交互操作流暢,但缺乏內(nèi)部細節(jié)與紋理等關(guān)鍵信息,與原模型外觀差別較大;圖5(c)是gltf文件在Web端顯示結(jié)果,加載耗時0.17s,交互操作流暢,與原模型外觀一致。
平臺在開發(fā)時,功能設(shè)計上需要實現(xiàn)三維場景的交互操作。為了使用鼠標操作三維場景,本平臺借助Three.js眾多控件,并引入控件OrbitControls.js,通過相關(guān)代碼的編寫,實現(xiàn)模型的Web端縮放、旋轉(zhuǎn)與平移等操作。三維模型交互操作如圖6所示,表2為具體鼠標操作方法。
基于Web流式加載方式,在鼠標操作場景變換過程中,總是能夠保持流暢的場景切換和順滑的操作過程,相比于笨重的客戶端全模加載經(jīng)??D死機的情況,模型流式加載方式能夠提高用戶體驗,提高BIM工作效率。
(a)原圖
表2 鼠標操作方式及效果
基于BIM輕量化手段與互聯(lián)網(wǎng)技術(shù),本文將厚重的客戶端BIM應(yīng)用進行了網(wǎng)頁端的開發(fā),并初步設(shè)計了一套智慧園區(qū)工程管理平臺。平臺分為項目總覽、BIM模型、實時監(jiān)控、現(xiàn)場監(jiān)測、人員管理、車輛管理、技術(shù)管理、質(zhì)量管理、安全管理、進度管理、成本管理、大型設(shè)備及材料管理等十三個功能模塊。
在BIM輕量化平臺的設(shè)計上,選擇BIM模型作為界面主要元素,周邊搭載工程信息、監(jiān)測信息、預測信息及管理信息等功能窗口。
基于Web端的輕量化BIM應(yīng)用平臺,可以隨時隨地將工程信息分享給工程相關(guān)人員,并且支持在線瀏覽模型、查看工程基本信息等操作,協(xié)助工程人員及時了解工程施工進度、安全等關(guān)鍵信息。
圖7 智慧園區(qū)項目總覽模塊
初步研究分析表明,在BIM模型Web端展示過程中,gltf模型效果最佳,具有數(shù)據(jù)量小、顯示效果好與兼容性強等特點。Web端的流式加載方式適用于復雜的工程建筑模型,在模型靜態(tài)顯示和動態(tài)操作方面表現(xiàn)優(yōu)異。
在新時代BIM發(fā)展中,單一的可視化不足以滿足實際使用的需求,輕量化是目前BIM發(fā)展的趨勢之一,在當前注重時效性和信息傳遞量的工程背景下具有重要意義。
本輕量化平臺功能的落實還需要依靠后續(xù)的項目推進,在功能設(shè)計上還有優(yōu)化的空間。后續(xù)可以繼續(xù)挖掘BIM數(shù)據(jù)的價值,實現(xiàn)Web端自動建模,一鍵工程算量等應(yīng)用功能,充分發(fā)揮BIM數(shù)形結(jié)合的價值。