天天看點

BIM輕量化之路(一)-unity展示

從事建築行業也有一段時間,知道了整個建築建設的大概流程:初設、設計、施工傳遞到後期營運,資訊化有個關鍵技術就是模型的輕量化。

我們的BIM設計人員主要使用Revit 進行三維設計,這裡主要是分享基于revit的輕量化實作。實作路徑很曲折,先後從uintiy 轉到webgl的threejs.

一、幾種模型的檔案格式

FBX

FBX格式都是三維通用模型格式,基本主流的三維設計軟體都可以導出導入FBX,他們主要差別是FBX包含動畫、材質特性、貼圖、骨骼動畫、燈光、錄影機等資訊。revit 可以直接導出FBX,通過加載這個檔案,3DMAX、UNITY都可以載入進行處理,經過一些測試,3dmax2020可以直接載入rvt檔案,可以按照類别、族等來合并模型進而減少模型檔案的大小,當然也可在3dmax中進行再次處理,比如圖元合并、去除重複頂點、減少mesh等操作進而進一步減少模型體積,一般來說如果有專業的3dmax美術人員可以提供簡模+貼圖。3dmax 導入的RVT檔案可以直接附帶顔色,還原度比較好。

檔案導入UNITY中往往會丢失很多材質,結果顯示的都為灰白色,如圖:

BIM輕量化之路(一)-unity展示

因為沒搞過unity,期間也做了各種掙紮,查了很多資料,主要的因素好像是這些材質不是标準材質,需要在3DMAX中轉換為标準材質,也有說unity的版本不支援或者重新關聯,總之我沒有解決這個問題,隻能在unity重新賦予材質。

IFC

為建築行業釋出的建築産品資料表達标準。目前, FME2013 IFC讀子產品支援2x,2x2,和2x3版本的IFC規範。使用了面向對象、範化的資料描述語言EXPRESS 語言,具體的資料格式網上有很多介紹,這裡就不在贅述。revit 可以直接導出IFC格式檔案,但是3dmax和uintiy 不能直接支援此檔案格式。unity市場有個插件BIM Tridify可以将revit轉換至uinity上,按照IFC的分類對應,材質、資料保留的也很好,不過是通過雲端中轉資料。

github上有個開源的BIMSERVER,使用的是JAVA,支援線上轉換釋出RVT檔案。服務端對檔案解析并轉換為IFC通過檔案資料庫存儲,展現使用的是bimsufer,是基于xeogl引擎開發,不過項目作者不打算繼續維護了,估計是開源項目收益太小,目前主要在開發 xeokit,這個兩個項目的定位是一樣的,但 xeokit 商用要收費,一次性收 €2999。有能力的同學可以在這基礎上進行二次開發。我部署了一套,服務端的還好說,隻是模型展示的功能比較單一,沒有定位、漫遊、測量等這個常用功能需要進行二次開發,xeogl說明資源很少,需要自己慢慢摸索。

BIMSERVER:https://github.com/opensourceBIM/BIMserver

OBJ

OBJ檔案是Alias|Wavefront公司為它的一套基于工作站的3D模組化和動畫軟體"Advanced Visualizer"開發的一種标準3D模型檔案格式,不包含動畫、材質特性、貼圖路徑、動力學、粒子等資訊。OBJ也是比較通用的檔案格式,很單純的描述了模型的頂點、貼圖坐标、法線坐标等等清晰簡單高效。自定義的資料格式可以參照這種資料格式表達。

GITF/GIB

GLTF代表Graphics Language Transmission Format(圖形語言傳輸格式)。這種跨平台格式已成為Web上的3D對象标準。它由OpenGL和Vulkan背後的3D圖形标準組織Khronos所定義,這使得GLTF基本上成為3D模型的JPG格式:Web導出的通用标準。GLTF主要包括兩部分,一部分JSON檔案描述場景結構,另一部分為二進制檔案描述幾何資訊

https://www.khronos.org/gltf/

此外還有DWG\DAE\3DS等需求模型檔案格式,都是各個繪圖專業軟體的檔案格式。

二、UINITY輕量化

我也不太清楚怎麼就出現了輕量化引擎這個說法,可能是給不明白的人聽的吧,顯的高大上。倒不如說怎麼把專業的繪圖檔案轉換為更小更輕的檔案展示,把各繪圖軟體的成果統一到一個平台一種格式,理想很好,現實很骨感。每個廠商都想統一市場、統一标準,可是它能嗎,更何況還有多版本相容性的問題,是以才有各種行業協會制定标準讓大家遵守,but…

先開始使用Unity作為開發工具的原因是一款成熟的遊戲引擎,資源教程多,更重要的是能支援PC,WEB,手機端,一套代碼多端使用,可以友善擴充減少工作量,實作的大概流程:

BIM輕量化之路(一)-unity展示

直接解析rvt檔案不太現實,隻能通過revti接口進行二次開發,revit 提供了IexportContext接口可以導出view\element\mesh等資訊,這裡隻提取了每個構件的屬性資訊,按照标高形成構件樹

經過3dmax對FBX模型檔案處理後在導入unity進行開發,模型檔案最好不要超過100m,否則會卡死,超過100m最好按專業把模型分成多個檔案,不需要檢視構件資料的可以合并。導入unity中最大的問題就是材質丢失問題,我遇到的主要是管線材質丢失,始終沒有什麼好的解決方法。

導入到unity後,剩下的工作就是開發對模型操作的功能,基本包括模型的漫遊、定位、高亮、測量等功能,導出webgl的還需要提供外部調用的接口函數。對于大模型三角面比較多的導出webgl後浏覽器往往會記憶體溢出。導出用戶端形式體驗是非常好的。

總的來說:

如果産品需要的是展示效果,管理功能沒那麼多的,可以考慮使用uinity這條路,unity今年針對AEC行業推出了新軟體 reflect,貌似可以做到revit與用戶端實時同步。

如果需要內建大量的管理功能來做平台系統,最好選擇webgl,優缺點就是B/S與C/S的差別

bim

繼續閱讀