羅文 任玉春 胡耀文



摘? 要:BIM技術是建筑產業信息化的關鍵性技術,Revit以其提供豐富的二次開發API等特點,在市場中占有絕對優勢。在瀏覽器中展示Revit三維模型有利于開發公司對于項目的設計、施工、運維等的掌控,因此該方向的研究對建筑行業很有意義。文章通過對Revit API的解析與二次開發進行研究,實現將三維建筑模型的幾何模型與數據模型的分離,將數據模型存儲于MySQL數據庫,幾何模型存儲為JSON文件,在Web端使用Three.js對JSON文件解析渲染,從而在瀏覽器端實現三維模型的重建。
關鍵詞:BIM;WebGL;Revit;二次開發;Three.js
中圖分類號:TP391.7? ? ? ?文獻標識碼:A 文章編號:2096-4706(2020)17-0017-03
Abstract:BIM Technology is the key technology of construction industry informatization. With its rich secondary development API and other characteristics,Revit has an absolute advantage in the market. Displaying the 3D model of Revit in the browser is conducive to the development companys control over the design,construction,operation and maintenance of the project,so the research in this direction is of great significance to the construction industry. Through the research on the analysis and secondary development of the Revit API,the geometric model and data model of 3D building model are separated. The data model is stored in MySQL database,and the geometric model is stored as JSON file,which is used on the Web Three.js by parsing and rendering the JSON file,the 3D model can be reconstructed in the browser.
Keywords:BIM;WebGL;Revit;secondary development;Three.js
0? 引? 言
BIM(建筑信息模型)技術是指利用BIM的特征改進建筑工程從設計到施工以及運維等一系列過程的技術,其在建筑設計領域內被廣泛討論。建筑產業升級和高質量發展的根本途徑是信息化和工業化的深度融合,BIM技術是建筑產業信息化的關鍵性基礎技術,其被廣泛認為是21世紀建筑產業創新發展的關鍵技術,是現代和未來建筑行業從業者需要學習和掌握的基本技能[1]。
Revit Architecture是由Autodesk公司開發的針對建筑行業的BIM工具,其因圖形化創建參數化構件和模型信息高度一致性的兩大特色,再加上其強大的API接口便于開發者能根據自身項目進行不同功能開發等優點,在市場中占有絕對優勢,國內從央企到地方企業對于Revit的應用也是非常普遍的[2-4]。
但是,Revit模型文件只能在Revit軟件中進行瀏覽和編輯,而很多時候人們需要通過網絡共享和顯示Revit模型,如果能將模型與復雜的建模軟件分離,用輕便的網頁形式將其展現出來并保證信息的完整性,同時提供實現Web程序與模型之間信息交互的接口,這樣開發和運維工作就可以充分利用Web技術的普及性和強大功能,大大提高了BIM開發和運維工作的效率,目前已有一些基于Web的Revit展示平臺[5-7]。
為了滿足建筑行業內部不同細分領域的需求,Revit Architecture軟件提供了大量的API,供開發者針對當前項目的實際情況進行自主研發,自主研究和開發Revit模型展示平臺有利于開發公司對于項目設計、施工、運維等步驟的掌控,能極大地提高工作效率。
因此,筆者通過對Revit API的解析與二次開發以及對對象的信息結構和獲取方法進行研究,通過對Revit API的解析與二次開發以及對對象的信息結構和獲取方法進行研究,形成基于類型過濾的數據提取方法,從而實現幾何模型重建,并且通過數據庫連通前后端,實現自定義的交互功能。
1? 基于WebGL的幾何模型重建
1.1? 幾何模型與數據模型分離
1.1.1? Revit文件插件處理流程
Revit API是Autodesk公司為開發者提供的Revit應用程序的開發接口,支持C#的二次開發,供開發者根據項目實際情況進行自主研發。Revit API通過兩種方式來擴展Revit功能:一種是Revit自帶的,使用Revit API中直接為開發者提供的函數;另一種是開發者自行編寫的。本文結合了兩種方式,共同實現插件的開發。
整個插件運行過程如圖1所示,Revit文件處理插件通過手動添加處理文件的方式將需處理Revit文件信息傳至后臺。后臺在接收到文件后,可通過文件地址、名稱、處理方式等信息自動讀取Revit文件,通過判斷所選擇的處理方式,調用不同的導出函數dataexporter.Execute()(圖中a)或jsonexport.Execute()(圖中b)。另外,當選擇同時導出方式時(圖中c),利用多線程的形式使得兩部分數據可同時導出。
需要注意的是,一般的BIM模型材質信息都十分復雜、細節較多,所以對于建筑模型中的各項具體構件,需將其在數據庫中按一定規則進行存放;此外,將模型的幾何構建信息與構件的數據信息分離,幾何模型只包含圖形等文件,不帶任何參數信息。
1.1.2? Revit數據模型提取流程
本文設計的屬性數據提取方式可分為三步操作:
第一步,對Revit元素進行分類,通過分類整理的數據列,本文可很好地依次進行元素參數的提取;
第二步,運用Revit API提供的各種過濾器將本文需要導出的數據過濾出來,并進入具體的參數提取函數;
第三步,進行具體的元素參數獲取,通過API實現具體參數數值的導出入庫,從而完成對數據的獲取。
1.2? 幾何模型存儲成JSON文件
在進行三維幾何模型數據的提取時,考慮到其中間文件既需要能夠保存Revit文件中幾何模型的數據,又需要是能被WebGL接受的數據格式[8,9],本文選擇使用JSON格式的中間文件進行幾何模型數據的存儲。
1.2.1? 幾何模型的構建
由于導出的幾何模型是以JSON格式文件進行數據存儲,并用于后期Three.js的讀取,因此需要遵照Three.js的標準格式進行生成。依據此標準格式并結合Revit內部數據結構,設計了符合需求的JSON模板,其內部主要包含有以下四類數據:
(1)Metadata:當前模型的相關信息以及生成的工具信息。
(2)Geometries:存儲當前模型所包含的頂點信息與拓撲信息。
(3)Materials:存儲當前模型所使用的材質的數組。
(4)Object:當前模型的結構以及標示所應用到的材質和幾何體標示。
1.2.2? 導出功能實現
首先,Revit API實例在進行格式轉換后需要以字符串的形式存儲在JSON文件中以便于Three.js加載,而Revit API提供了對渲染輸出渠道訪問的類:自定義導出程序類(CustomExporter Class)、導出語境接口(IExportContext)、節點渲染類(RenderNode Classes)、照相信息(CameraInfo)等。
表1提供了JSONExportContext接口部分函數及實現的功能。
通過將JSON文件格式化后發現,其文件數據是符合Three.js自定義的JSON文件的內容與格式。
1.3? Three.js解析JSON并渲染
1.3.1? Three.js特性
Three.js庫是JavaScript編寫的WebGL第三方庫,實現了基本的圖像算法,并提供了攝像機控制、燈光設置、加載模型和繪制3D物體等多種功能,是目前十分流行的圖形圖像渲染庫。
1.3.2? Revit-Three.js處理過程
JSON格式文件中的Geometries儲存的是幾何圖形構件信息,Three.js通過使用parseGeometries()函數查找儲存在該集合下的類型(type)屬性,不同的處理函數處理不同類型屬性參數,例如柱體處理屬性CylinderGeometry、參數幾何體處理屬性ParametricGeometry、圓形處理屬性CircleGeometry等。在JSON格式文件中,為了存儲參數的便捷,type對象的存儲值統一為Geometry。
JSON格式文件中的Materials儲存的是模型的材質、顏色等信息,Three.js通過使用parseMaterials()函數遍歷整個材料屬性集,將其中的所有信息提取傳輸給Three.MaterialLoader類,該類將材料屬性中的紋理、顏色等信息進行整合打包最后提交到scene對象中進行顯示。
JSON格式文件中的Children存儲的是Geometries和Materials的UUID、Name以及相關聯的屬性參數的UUID。通過不斷的循環遍歷集合,將其中的UUID與Geometries和Materials屬性相結合,讓兩個模塊中的數據結合在一起;同時通過相關聯屬性參數的UUID實現鼠標拾取以獲取屬性參數數據的功能。
最后使用Three.js的渲染器將處理得到的scene場景在畫布(Canvas)上進行構建,使三維網頁呈現出所需的Revit三維建筑模型。
2? Web端展示效果
平臺通過Revit插件將三維建筑模型中的幾何模型數據和參數數據進行導出并存于服務器中,用戶可以登錄前端管理系統平臺實現資源的遠程獲取和顯示。圖2為谷歌瀏覽器端重建的模型建筑三維視圖,可以看出在瀏覽器中構建的三維模型,除了光照、模型顏色和植物外觀上有些許不同外,其余基本沒有變化。同時,借助于數據庫中所提取到的數據,幾何模型的屬性參數在瀏覽器中也能夠查看。至此,平臺實現了在Web瀏覽器上瀏覽Revit三維建筑模型而不依賴Revit軟件的功能。
3? 結? 論
本文通過對Revit API的二次開發,實現Revit幾何模型和數據模型的分離和分別存儲。圍繞幾何模型的Web端展示展開探討,闡述了幾何信息存儲并寫入JSON文件的過程,以及運用Three.js對JSON進行解析并渲染的辦法,在Web端實現了模型重建。這種方法在數據上使幾何信息與數據信息既獨立又互相關聯,在實際情況中彌補了Revit軟件本身的笨重性,使模型在網頁端易于觀看。
參考文獻:
[1] 何善能.BIM技術在建筑工程項目中的應用價值 [J].居業,2018(4):86-87.
[2] 張平.基于BIM技術的三維監控系統應用研究 [J].鐵路技術創新,2019(4):97-101+110.
[3] 儲偉偉,華玉艷,田章華.BIM模型網頁端展示交互技術及其在隧道運維管理中的應用 [J].土木建筑工程信息技術,2018,10(1):60-64.
[4] 劉佳,張慶彬,梁秋麗.BIM模型的輕量化展示平臺研究 [J].建筑技術,2019,50(7):791-793.
[5] 楊喆,付功云,袁文祥,等.基于WebGL三維引擎的軌道交通工程BIM+GIS平臺研究 [C]// 第七屆BIM技術國際交流會——智能建造與建筑工業化創新發展論文集.廣州:《土木建筑工程信息技術》編輯部,2020:7.
[6] 李獻忠,張社榮,王超,等.基于BIM+GIS的長距離引調水工程運行管理集成平臺設計與實現 [J].水電能源科學,2020,38(9):91-95.
[7] 張海濱,王興龍,張曉娜,等.基于BIM與精益建造的數據驅動式項目管理平臺的探索與應用 [C]//第七屆BIM技術國際交流會——智能建造與建筑工業化創新發展論文集.廣州:《土木建筑工程信息技術》編輯部,2020:590-596.
[8] 趙菲.基于WebGL的古建筑BIM模型輕量化研究與實現 [D].西安:西安建筑科技大學,2018.
[9] 羅飛.RevitArchitecture三維建筑模型WebGL顯示及優化 [D].杭州:浙江工業大學,2016.
作者簡介:羅文(1999.07—),男,漢族,四川成都人,本科在讀,研究方向:軟件工程。