王 茹, 孫衛新, 徐東東
(西安建筑科技大學土木工程學院,陜西 西安 710055)
古建筑不僅有很高的歷史價值、藝術價值,也有很高的科學價值,是研究歷史科學的實物例證,也是新建筑設計和新藝術創作的重要借鑒。但是,隨著時間的流逝,現存的古建筑受到不同程度的損壞。目前對古建筑的保護研究主要體現在“三維掃描點云處理技術”、“參數化建模技術”和“基于三維模型的三維動畫演示和虛擬現實研究”等方面。在點云數據精簡算法方面,Lee K H,Woo H, Suk T提出了三維網格精簡算法[1],王茹教授等提出了基于聚類平面特征的點云數據精簡算法[2]。在建模方面,MULLER P,ZENG Gang,WONKA P提出基于校正圖生成的過程模型[3]、DUZhi-qiang, LI De-ren, ZHUYi-xuan提出基于3DGIS的建模系統[4]以及陳越、王婉等提出的參數化建模方法[5-6]。文獻[7]用多媒體技術演繹了唐宋建筑,文獻[8]利用虛擬現實技術復原了龜山漢墓。以上研究較好的實現了古建筑的工程模型或表面模型的三維重建,但是信息技術的快速發展,為古建筑模型及構件添加必要的信息,對古建筑的信息化保護、修復有很重要的意義。
本文基于國家自然科學基金項目“基于BIM的明清古建筑數字化保護與修復方法研究”為背景開發了明清古建筑信息模型設計平臺,主界面,如圖1所示。本系統為古建筑構件參數化信息模型庫的建立和管理提供了基礎平臺,以信息模型的方式存儲現場測量的數據,支持信息的擴展功能。理論上可以包含有關古建筑的所有信息,既可以為古建筑的修繕和復原提供準確的信息,又可以為古建筑的研究提供歷史資料。利用該古建構件信息模型建立的古建筑虛擬現實系統,可以展示更多的關于古建筑的歷史人文信息。

圖1 明清古建筑信息模型設計平臺主界面

圖2 古建筑構件建模過程示意圖
系統建模過程,如圖2所示,根據古建筑構件內在結構規律,總結參數化建模需要的關鍵參數,并設計輸入界面由用戶輸入這些關鍵參數。在總結每類古建筑構件關鍵參數的基礎上,將生成古建筑構件所需要的其他參數與關鍵參數的關系存入數據庫,用戶輸入某古建筑構件的關鍵參數后,系統將在構件參數數據庫中檢索生成該構件三維模型的其他所有參數。本建模系統另一個重要的數據庫就是構件結構規律數據庫,在該數據庫中存儲了古建筑構件的結構層次、部件名稱及形狀等結構信息。建模系統將根據參數數據及結構規律信息調用相應的函數創建三維模型,同時由數據庫操作函數將各個部分的名稱、尺寸及結構信息寫入三維模型。當再次打開信息模型時,圖形數據庫操作函數將讀取信息模型中的相關信息,并在用戶界面中顯示。
斗拱在中國古建筑木構架體系中占有非常重要的地位,是中國古典建筑體系中重要且極具特色的建筑構件。經過幾千年的發展歷史,斗拱的形制以及各個橫縱構件的尺寸日臻完善和規格化。清式斗拱種類繁多,構造復雜,但各類構件各自的尺寸以及構件之間的組合是十分有規律的。清《工程做法則例》對斗拱的的形制、比例、細部規格做法等都有著十分明細精確的記載。本系統支持斗栱參數化建模的類型分為內檐斗栱和外檐斗栱兩類,內檐斗栱主要包括襻間斗栱、品字科斗栱、隔架斗拱,外檐斗栱包括平身科斗栱、柱頭科斗栱、角柱科斗栱、溜金科斗栱以及平座科斗栱。如圖3所示,選擇“斗栱”菜單下的“外檐斗栱”子菜單,然后選擇“平身科斗栱”命令,可彈出如圖4所示的對話框。本系統創建斗栱的關鍵參數為斗口尺寸和斗栱樣式,確定了這兩個參數后,根據圖2所示參數化建模過程,點擊“創建模型”按鈕即可創建斗栱模型如圖5所示。

圖3 斗栱參數化建模菜單

圖5 斗栱參數化建模
本系統按構造信息、材質信息、物理信息、油漆彩繪信息和說明備注信息五個選項卡存儲斗栱模型的信息,如圖5所示。在每個選項卡下,系統預先設置了一些信息,用戶還可以根據需要定制每個選項卡下的信息。系統根據用戶選擇的斗口尺寸和斗栱樣式,在構造信息選項卡下自動生成了斗栱的構造層次以及各個構件的安裝位置信息,如圖6所示。點擊列表中的構件可以彈出構件尺寸對話框,如圖7所示。需要說明的是,該選項卡中的構造信息以及尺寸信息與斗栱模型建立一一驅動關系,改變選項卡中的構造或是尺寸信息,都將會引起模型的相應改變,相反,
改變模型中的尺寸或構造關系也會引起選項卡中相應項的改變。此功能可方便古建筑的測繪工作,可方便地將測繪數據轉換成三維信息模型。

圖6 斗栱的構造信息選項卡

圖7 坐斗尺寸信息
油漆彩繪信息選項卡下,設置了古建筑構件油漆和彩繪方面的信息。這些信息主要與斗栱信息模型的材質和貼圖渲染建立驅動關系,如圖8所示。古代斗栱的彩畫主要包括斗栱部分和墊栱板兩部分。根據用金量、退暈層次和等級規格的不同,斗栱部分可分為煙琢墨斗彩畫、金琢墨斗彩畫和渾金斗栱彩畫3種;墊栱板部分可分為大木為和璽彩畫、大木為玄子墨線大點金彩畫和大木為高等蘇式彩畫3種。另外斗栱的畫花花樣如夔龍、墨線等也反映古建筑的類型及建筑等級,這些信息都可以在油漆彩繪信息選項卡中存儲。

圖8 油漆彩繪信息選項卡
材質選項卡主要用于顯示或輸入與材質有關的信息,如圖9所示。古代斗栱的主要用材是木材,如杉木、松木等針葉樹材和柞木、香樟、

圖9 材質信息選項卡
楠木等闊葉樹材。系統預先添加的材質信息主要包括經濟技術成本和處理難度兩個方面,經濟成本主要指木材的市場價格、加工運輸難度、施工難度、使用壽命和維修成本等方面的信息。
圖10和圖11為斗栱的物理信息選項卡和說明備注信息選項卡,物理信息主要是指材料的物理力學性質,這些信息可用于對斗栱進行力學計算與分析時使用。說明備注信息想模型中添加一些歷史人文方面的信息。

圖10 物理信息選項卡

圖11 說明備注信息選項卡
古建筑信息模型設計系統框架,如圖 12所示。我國古建筑的一個特點是由千百個大小、形狀各異的單個構件組成,并且各個構件按照一定的規律進行組裝,宋代的《營造法式》和清代的《工程做法則例》中規定了各個構件的構造特征及整體的組裝規律,本系統正是在此基礎上設計而成,其具體特點如下:
1) 系統構建了兩種方式建立古建筑三維模型,一種是軟件本身的參數化建模,另一種是直接導入dwg或dxf格式的模型。其中參數化建模提供手工輸入參數、測繪數據的導入以及三維掃描點云數據的導入3種參數輸入方式。
2) 古建筑構件的信息直接存儲在圖形數據庫中,信息作為模型的一部分進行存儲。信息的生命周期等于模型的生命周期,任何時候打開模型都能讀取其上存儲的信息。
3) 本系統采用擴展數據存儲信息的字段信息,采用擴展字典存儲信息值,從而實現信息存儲的擴展性和可定制性。用戶不僅可以向數據庫中添加記錄而且可以添加信息字段。
4) 信息與古建構件模型建立驅動關系,信息值的改變自動驅動模型的改變。
5) 本系統支持多種數據格式,可以與常用的BIM軟件進行通信。
6) 模型檢索模塊,實現基于圖形數據庫的三維模型檢索算法,檢索字段為模型中的附加信息,使檢索更加準確。
7) 組裝模塊基于古建筑構件本身的安裝位置信息和古建筑整體的結構信息實現,是古建筑建造規律的體現。

圖12 古建筑信息模型設計平臺的系統框架
本系統建立在AutoCAD圖形數據庫之上,圖形數據庫結構,如圖 13所示。根據圖形數據庫的結構可知,給實體追加附加信息可以通過擴展數據和擴展字典來實現。擴展數據能被添加到任何實體上,它由一個結果緩沖區鏈表組成,并且隨圖形一起被保存。但是,每個實體中附加的擴展數據不能超過16K[10]。擴展字典也是隸屬于特定的實體,但是,每一個實體只能包含一個擴展字典。它為實體保存自定義數據提供了一種途徑。擴展記錄與擴展數據類似,但是,其數據存儲量和能夠存儲的數據類型都要多于擴展數據。擴展記錄可以保存到實體的擴展字典中。
任何一個應用程序都能將擴展數據附加到實體上,因此,所有的擴展數據都需要一個惟一的應用程序名稱,該名稱不能超過 31個字符。為了注冊一個應用程序,可以使用全局函數acdbRegApp()。AcDbObject類的 setXData函數用于設置一個對象的擴展數據,其定義為:


圖13 圖形數據庫結構
要利用擴展字典保存與實體關聯的數據,可以使用 createExtensionDictionary()函數為實體建立擴展字典。如果實體已經包含擴展字典,該函數的調用不會產生影響。AcDbDictionary對象的setAt()函數,可以為字典添加一條擴展記錄。如果添加了擴展記錄,就可以利用 acutBuildList()函數構建一個保存數據的結果緩沖區鏈表,然后使用setFromRbChain()函數將結果緩沖區鏈表添加到擴展記錄中,這樣就把數據附加到實體上了。如果要訪問擴展字典中的擴展記錄,可以使用 extensionDictionary()函數獲得實體的擴展字典,然后通過字典的getAt()函數得到指定的擴展記錄,使用AcDbXrecord類的rbChain()函數得到保存數據的結果緩沖區鏈表,遍歷該鏈表可以獲得保存的數據。相關函數的定義如下:

本系統利用擴展數據,存儲古建筑構件信息選項卡和每個選項卡中的字段信息,如圖 14所示。以斗栱為例,其信息選項卡包括:構造信息、油漆彩繪信息、材質信息、物理信息、說明備注信息。構造信息選項卡下的字段信息包括:構造層、結構名稱、安裝信息、數量;油漆彩繪信息、材質信息、物理信息和說明備注信息選項卡下的信息字段都包括信息類型和信息值兩個字段。

圖14 利用擴展數據存儲信息字段
對擴展數據操作的兩個關鍵函數是添加擴展數據函數 AddXData()和讀取擴展數據的函數ReadXData()。兩個函數的實現如下:



本系統利用擴展字典來存儲古建筑構件的所有信息,以斗栱為例,其擴展字典數據結構,如圖 15所示。對擴展字典操作函數也主要是向擴展字典中添加數據和讀取擴展字典中的數據,即AddXrecord()函數和ReadXrecord()函數。其實現關鍵代碼如下:




圖15 利用數據字典存儲信息值
點擊菜單欄中的“組裝”,可彈出古建筑信息模型組裝對話框。在對話框中主要確定古建筑的主體參數、開間數據、步舉架等基本參數,以及設置從構件庫信息模型中搜索構件模型的參數。確定了這些參數之后系統將自動根據古建筑建造規律組裝成古建筑信息模型,如圖16所示。

圖16 古建筑信息模型組裝圖
本文通過對明清古建筑構造特征及其包含信息的分析實現了古建筑信息模型設計平臺的開發,為古建筑構件參數化信息模型庫的建立和管理提供了基礎平臺,同時方便將古建筑的測繪數據轉換為三維模型。本系統支持信息的擴展功能,理論上可以包含有關古建筑的所有信息,既可以為古建筑的修繕和復原提供準確的信息,又可以為古建筑的研究提供歷史資料。本系統模型的建立,為建立更為精細、真實、并附帶大量歷史人文信息的古建筑信息模型提供了良好的技術平臺。
[1]Lee K H, Woo H, Suk T. Data reduction methods for reverse engineering [J]. The International Journal of Advanced Manufa-cturing Technology, 2001, 17(10):735-743.
[2]王 茹, 周明全, 邢毓華. 基于聚類平面特征的三維點云數據精簡算法[J]. 計算機工程, 2011, (10):249-254.
[3]Muller P, Zeng Gang, Wonka P, et al. Image-based procedural modelingoffacade [J]. ACM Trans on Graphics, 2007, 26(3): 85.
[4]Du Zhiqiang, Li Deren, Zhu Yixuan, et al. 3DGIS-basedrecon-struction and visualization oftimber-frame building cluster [J]. Jour-nalof System Simulation,2006, 18(7): 1184-1189.
[5]陳 越.中國古建筑參數化設計[D].重慶: 重慶大學, 2002.
[6]王 婉, 謝步瀛. 中國古代宮殿建筑參數化設計與三維建模[J]. 東華大學學報(自然科學版), 2008,34(3): 270-273.
[7]陳 薇. 用多媒體技術演繹唐宋建筑[J]. 東南大學學報(自然科學版), 2002, (3): 383-386.
[8]邵亞琴, 汪云甲, 劉 云. 基于虛擬現實的龜山漢墓虛擬重建研究[J]. 測繪通報, 2008, (2): 11-15.
[9]王 茹. 古建筑數字化及三維建模關鍵技術研究[D].西安: 西北大學, 2010.
[10]李長勛. AutoCAD ObjectARX程序開發技術[M].北京: 國防工業出版社, 2005.