楊宏基, 趙沖, 聶復丹
(福州大學建筑與城鄉規劃學院, 福建 福州 350108)
當前傳統建筑修繕信息的儲存方式主要以零散圖紙和文本為主, 這導致傳統建筑修繕信息無法有效儲存與傳承. 隨著建筑產業的數字化轉型發展[1], 以建筑信息模型為核心的信息管理方式可提高信息的數字化存儲水平. 但是, 現有古建數字化建模技術主要依靠原生軟件的功能, 人工進行模型的搭建, 導致建模效率低、 精度低.
在傳統大木結構研究中, 對于官式建筑的大木結構研究較為全面, 而對于民居類建筑的大木結構研究較少. 閩南民居大木架類型的生成方式在福建地區乃至福建省外都具有一定的代表性. 因此對閩南民居大木架類型的生成方式展開研究, 旨在揭示閩南傳統民居大木架類型體系的演變與發展過程, 將該研究方法推廣至福建省各個地區, 可為福建省傳統民居建筑類型的研究提供參考.
為精確生成閩南傳統民居[2]的大木架模型, 本研究采用以點云為主要數據源, 以參數化模型為核心的歷史建筑信息模型(historic building information model, HBIM). 為解決手工搭建模型效率低等問題, 在HBIM技術框架基礎上, 結合計算機編程技術, 研發出一套參數化和運算化的建模方法[3]. 首先, 在點云數據的基礎上, 提取構件信息, 創建參數化構件族; 然后, 在Revit應用程序開發接口(Revit application program interface, RevitAPI)基礎上進行二次開發, 完成運算化設計模塊; 接著, 結合Windows 的用戶界面框架(windows presentation foundation, WPF)交互生成三維模型; 最后, 使用網頁繪圖協議(web graphics library, WebGL)結合超文本標記語言(hyper text markup language, HTML)網頁技術, 構建閩南古建數字化云平臺展示中心.
閩南民居大木架構件自下而上大致可以分為5類, 包括柱類、 通梁類(類似官式建筑的梁或栿)、 斗拱類、 檁條類、 椽條類. 閩南民居中檁條和椽條的幾何造型較為簡單, 參數化建模難度較低. 本研究以幾何造型較為復雜的其他3類大木架構件為研究對象, 對其參數化建模展開討論.
與以往的參數化建模理念不同, 本方法中每一個Revit族類型都對應一個代碼空間中的幾何描述. 對于各個構件通用的參數, 采用定義類屬性的方式, 在各個構件類屬性中定義長(l)、 寬、 高(h)等屬性; 對于數值相互關聯的參數, 采用函數進行計算.
閩南傳統民居大木架包括落地柱和瓜柱兩種, 其中按截面形狀可將瓜柱分為方筒和瓜筒兩種類型. 方筒常用于穿斗結構中, 下端雕刻成鼻頭狀, 有如披肩衣物, 又稱為披肩尾[4]. 方筒構件參數化建模首先要打開常規模型的族樣板, 在前視圖中繪制1條柱中心線和兩條對稱柱邊線的參考平面, 以寬和高的參數創建長方形拉伸實體. 因為方筒頂部會出現十字形榫卯結構[5], 故需設置右榫卯高和左榫卯高的參數, 并創建十字形空心實體. 為確保方筒在斗底處能平穩過渡, 方筒頂端會產生一段收分的弧線. 參照點云模型, 采用空心放樣的方式圍繞頂部一圈創建剪切實體, 從而得到收分的效果. 由于方筒構件會穿騎在通構件上, 故要以通寬度和高度為參考在方筒的底部創建洞口. 根據花紋的樣式, 繪制花紋的空心拉伸輪廓并剪切方筒實體, 如圖1所示.

圖1 柱構件參數化模型Fig.1 Parametric model of column components
在Visual Studio 2019編譯器中創建class Column類, 并將族參數一一映射到Column類構造函數public Column中, 設置屬性之間的換算關系, 完成柱類的幾何描述, 如圖2所示. 然而, class Column類包含的是柱構件較為共性的、 抽象的幾何描述. 在閩南的插梁式構架中, 部分柱子的頂部會連接柱頭斗, 再使用class Column類描述便不夠準確. 故本程序利用面向對象程序設計中的繼承思想, 讓class Column成為父類, 而設置class Column_MinNan為子類去繼承父類的屬性, 并新增Dou_MinNan Dou屬性來描述柱頭斗這個構件. 如果后續開展閩東、 閩北乃至福建其他地區的民居構件幾何描述時, 只需按照 class Type_Location的命名規則來新增子類即可.

圖2 柱類幾何描述Fig.2 Geometric description of cylindrical class
斗根據形態可分為方斗、 圓斗、 八角斗、 海棠斗等[6]. 通過對海棠斗的結構特點進行分析, 將其分為3層體塊, 由上到下進行建模. 其中, 斗底用放樣命令放樣出兩個形體, 而后對這兩個形體做融合操作; 斗腰用拉伸命令融合; 斗耳通過拉伸功能分別創建單個體塊并且鏡像成對生成. 斗的整體寬度受柱徑大小控制, 斗口的寬度以其上所承載的栱構件寬度為準. 另外, 對于像海棠斗這樣的異形構件, 需要制作雙層嵌套的植物族, 而后控制其高度參數, 將其等比例縮放成需要的尺寸. 在Visual Studio 2019編譯器中, 將族參數和斗的幾何關系作為class Dou_MinNan的屬性, 完成斗構件的幾何描述.
閩南民居中通梁有直通和端部彎曲兩種類型. 對端部彎曲類型的通梁進行建模, 首先需要確定兩柱之間的跨度, 即長(l), 其數值等于左柱半徑(r左柱)、 右柱半徑(r右柱)和平直段長(l平直段)之和, 然后需要確定高(h)和平直段高(h平直段). 利用等分約束法創建參數化弧線, 創建多條在高度方向4或者6等分、 水平方向8或者10等分的參考平面, 形成等分網格, 并在網格中約束折線段, 形成參數化折線.
對于無法使用等分創建的異形花紋, 在使用拉伸功能描繪完輪廓體量后, 利用參考線會隨參考平面移動的特性, 讓花紋體量隨著參考線的變化而變化, 直到與參考點云重合, 進而生成精確的參數化模型, 如圖3所示.

圖3 步通通隨族點云數據與參數化模型Fig.3 Parametric model and point cloud data of Butong’s tongsui family
將族參數與class Beam_MinNan類中的屬性一一對應, 在構造函數中描述屬性間的幾何關系. 將代碼中通梁類的屬性和Revit中通梁模型的屬性一一對應, 然后利用構造函數構建類屬性之間的幾何關系, 完成通梁構件的編程語言幾何描述.
明確數據結構并將參數分門別類是數字化管理的核心. 建模系統內部數據結構的第1層是指代; 第2層是由BaseLine軸組成的集合, 每個BaseLine對應1根軸線; 第3層是由軸線的序號、 鏡像屬性和軸線上所有構件信息組成的集合, 如圖4所示. 用戶輸入的跨度、 檁條的標高和直徑等基本信息最終會保存到對應的BaseLine類之中, 而后再通過RevitAPI的Grid. Create函數創建軸線, 并在對應的BaseLine容器填入該軸的信息, 為運算化建模提供數據基礎.

圖4 數據結構示意圖Fig.4 Schematic diagram of data structure
1) 在Revit用戶主面板處添加“閩南民居”面板, 下設各種功能按鈕, 當用戶點擊“登陸系統”輸入完賬號密碼后, 點擊“參數輸入”按鈕, 彈出參數輸入界面, 如圖5所示. 用戶輸入參數的同時, 系統會進行數據處理, 根據內置的算法生成放置族實例所需要的參數, 如跨度參數. 程序會自動將構件所在軸的序號減去步架數, 得到構件末端所在的軸號, 通過兩軸基點的差值得到跨度.

圖5 參數輸入界面Fig.5 Parameter input interface
2) 參數輸入完畢后, 進行運算化建模. 首先程序會依次提取每一個構件類的屬性, 遍歷其族類型參數, 利用RevitAPI中document. LoadFamily函數從本地的構件族庫文件夾中將對應的構件族導入到項目中. 而后通過API的Create. NewFamilyInstance函數在對應的位置點上創建族實例. 如果用戶將跨度設定為-1, 則系統將判定該軸線為鏡像軸, 該軸將不會接受用戶輸入參數, 該軸所有的構件都會由對稱軸的構件鏡像得到. 在程序中, 通過條件語句判斷該軸是否鏡像.
3) 程序遍歷構件類(如柱類)中的長、 寬、 高等尺寸信息, 通過ele. LookupParameter函數修改族構件的長、 寬、 高、 左右榫卯長度、 端頭下彎程度等參數. 并且在界面右側實時提供預覽界面以供修正, 如圖6所示.

圖6 運算化建模關鍵代碼Fig.6 Key code of operational modeling

圖7 云端展示平臺Fig.7 Cloud display platform
構建云端展示平臺可以讓現場人員突破專業軟件和場地的限制, 只需要在手機上便可以查看模型屬性信息, 從而增強上下游從業人員協同作業的能力. Revit本身發布網頁的功能不完善, 且WebGL提供的API不收取任何費用, 可以供給各個平臺的瀏覽器使用[7]. 因此, 本方法采用WebGL+Three. Js技術實現網頁端的顯示.
Revit模型不能直接導入網頁端, 需要通過Autodesk App Store中的glTF Exporter插件將BIM模型導出成圖形語言傳輸格式(graphics language transmission format, glTF), 再通過generatetable函數將RvtV3c導出的JSon模型屬性顯示在表格中.
在WebGL第三方庫Three. js中, 要在瀏覽器中將渲染的物體顯示出來, 需要滿足3個條件, 即scence、 camera和 renderer[8]. 通過glTFLoader. load函數導入glTF格式的古建模型, 并使用camera函數得到用戶視野, 使用light函數得到模型顯示界面, 使用Raycaster函數讓用戶可以獲取到鼠標點擊的模型構件, 并遍歷識別出不同類別的構架信息, 完成云端展示平臺, 如7所示.
為驗證上述閩南傳統民居建筑參數化和運算化建模方法的可行性, 以泉州市歷史建筑測繪項目中大木構架較為典型的泉州市割山村樹兜25號民居為實踐對象.
1) 數據采集和處理. 在民居現場使用Faro三維掃描儀采集高精度的點云數據, 并手工記錄構件殘損等文字信息. 使用SCENE軟件載入地面點云數據, 降噪、 拼合多個基站的點云數據, 生成完整的las格式數據, 并將其導入到Autodesk Recap軟件中進行數據索引, 生成RCP格式文件后, 導入到Revit軟件中[9].
2) 運算化建模. 在用戶界面輸入構件類型和尺寸參數, 在有歪閃、 錯位和殘損的構件附加上文字和照片信息, 利用運算化建模程序自動在Revit中生成整個大木架模型, 如圖8所示. 圖9為閩南民居構件族庫, 對于其中沒有收錄的構件, 還需要利用點云數據作為圖底, 重新參數化建模出這個構件, 并將其收錄在族庫中, 以豐富樣本數量.

圖8 大木架模型Fig.8 Large wooden frame model

圖9 閩南民居族庫Fig.9 Minnan folk house ethnic library
3) 導出網頁端. 將三維模型上傳至云端, 在閩南數字古建云平臺中展示, 用戶點擊構件, 左側會顯示屬性詳情. 為保證建模的精度, 使用Undet for Revit點云處理插件, 分析表面建模精度. 分析結果表明, 點云與逆向建模表面誤差在15 mm以內, 如圖10所示, 可滿足古建筑建檔立卡的精度要求.

圖10 Undet分析建模精度Fig.10 Undet analysis modeling accuracy
本套建模流程共耗時146 min. 對不在族庫中的構件參數化建模耗時約90 min, 人工輸入參數耗時45 min, 生成模型耗時7.5 s, 點云對比共耗時8 min, 上傳至云端平臺耗時2 min. 相較于傳統的CAD繪圖再轉到建模軟件中翻模的流程, 本套建模流程可節省大量時間.
基于HBIM技術流程, 本研究將參數化建模的精度優勢與計算機運算化建模速度優勢相結合, 提出一套針對閩南傳統民居建筑大木架的參數化和運算化建模方法. 結果表明, 此建模方法可大大提高閩南傳統民居的正逆向建模能力和建模效率, 并能高效管理、 更新各種類型的構件族, 形成豐富的族庫以適應不同類型的民居修繕項目, 為完善閩南傳統民居建筑信息庫提供技術支撐. 結合互聯網技術構建數字古建云端展示平臺, 使模型的可視化擺脫Revit等專業軟件的束縛, 從而大大提高修繕項目中上下游從業人員的協同作業水平, 降低修繕項目三維可視化的門檻, 為更好地向非從業人員宣傳閩南傳統民居文化打下技術基礎. 下一步將通過5G和“數據上云”技術, 由點及面地形成全國古建族庫云平臺. 結合云計算技術, 人人都可在云平臺進行運算化建模, 從而逐步實現“互聯網+古建”的智慧大腦, 加快中國古建筑保護產業的升級步伐.