楊成龍, 李 早, 王德才
(合肥工業(yè)大學(xué) 建筑與藝術(shù)學(xué)院,安徽 合肥 230601)
徽州傳統(tǒng)建筑受制于特殊的地理人文環(huán)境,形成了別具一格的風(fēng)貌特征,其中民居建筑作為日常宅居生活之所數(shù)量眾多,其余多種類型建筑皆由此派生[1]。近年來,傳統(tǒng)村落的空間肌理以及風(fēng)貌要素的傳承得到重視,越來越多的專家學(xué)者對此展開研究,并且試圖通過新的技術(shù)、新的方法更有效率地傳承風(fēng)貌[2]。新興技術(shù)與傳統(tǒng)建筑的碰撞,在某種程度上體現(xiàn)了對傳統(tǒng)文化的傳承與發(fā)展,因此對于徽州民居的快速生成研究就顯得更加重要。
從建筑學(xué)的視角來看,在建筑參數(shù)化蓬勃發(fā)展的時(shí)代,數(shù)字化與建筑本身的結(jié)合是新的方向[3],數(shù)字化能夠利用CityEngine軟件對村落肌理進(jìn)行重構(gòu),研究村落肌理的快速生成邏輯,并在此基礎(chǔ)上與原有村落進(jìn)行對比[4];文獻(xiàn)[5]運(yùn)用Java語言對徽州村落進(jìn)行模擬,并針對建筑的結(jié)構(gòu)與表皮優(yōu)化生成;文獻(xiàn)[6]利用Python編程語言結(jié)合Grasshopper平臺進(jìn)行空間演繹,研究空間的削減、位移與重新組合等內(nèi)容。其中與古建筑結(jié)合最為常見的是Revit平臺,以及與之結(jié)合的dynamo插件,在此基礎(chǔ)上可以搭建古建模型以及整理構(gòu)件庫[7],甚至形成信息管理平臺[8],以期為傳統(tǒng)建筑的保護(hù)尋找新的方向。當(dāng)建筑設(shè)計(jì)與編程語言結(jié)合時(shí),應(yīng)當(dāng)考慮其使用范圍及難易程度,而Grasshopper作為建筑學(xué)領(lǐng)域參數(shù)化研究應(yīng)用最為廣泛的平臺,可為傳統(tǒng)建筑的保護(hù)提供一定的技術(shù)支持。把徽州傳統(tǒng)民居建筑與GhPython結(jié)合去探索快速生成方法,是一種新的思路、新的探索。
徽州民居的主體一般是由天井和居住單元圍合而成,該形式便于組合,從而形成多種平面形式,徽州傳統(tǒng)民居常見型制如圖1所示。
圖1 徽州傳統(tǒng)民居常見型制
外立面幾乎沒有窗戶,僅有防火用的孔洞。其主要的采光來源于天井以及部分高側(cè)孔洞?;罩菝窬恿⒚孀铒@著的特征是層層疊落的封火山墻,并且隨著建筑單體空間組合的不同,馬頭墻的形式也有豐富的變化,除了最常見的疊落式,也會出現(xiàn)折線甚至是弧形馬頭墻。細(xì)部構(gòu)造也是民居建筑比較重視的部分,如門頭、三雕等。墻脊的線狀,大門、窗洞的點(diǎn)狀,在大片粉墻的面狀環(huán)境下形成外部黑白灰的色彩基調(diào)和點(diǎn)、線、面的形體組合,與自然山水融為一體[9]。
(1)總體尺寸關(guān)系。本文對徽州40戶傳統(tǒng)民居進(jìn)行測繪與描繪,選取其中形式完整的35戶作為樣本,可以看到其形式有著明顯的規(guī)律性。其中部分民居明顯是由2種形式拼合而成,并且2個(gè)部分都有各自的出入口,因此將其拆分并分別歸類整理。凹型平面的進(jìn)深一般為7~10 m,回型平面的進(jìn)深一般為10~14 m之間,日型平面的進(jìn)深一般在16 m以上。H型平面數(shù)量較少,但結(jié)合其平面型制以及各模塊的尺寸數(shù)據(jù)也可看出,H型平面的進(jìn)深一般為14~17 m。徽州傳統(tǒng)民居進(jìn)深數(shù)據(jù)如圖2所示。
圖2 徽州傳統(tǒng)民居型制進(jìn)深關(guān)系
從圖2可以看出:當(dāng)進(jìn)深不超過9 m時(shí),一般為凹型平面;當(dāng)進(jìn)深繼續(xù)增加且不超過14 m時(shí),一般為回型平面;當(dāng)進(jìn)深超過14 m時(shí),一般為日型平面或H型平面,其中H型多不超過17 m;當(dāng)進(jìn)深繼續(xù)增加以致超過20 m時(shí),一般為H型與凹型、回型的組合式,或者日型與凹型、回型的組合式。同時(shí)從凹型、回型、日型、H型的平面型制中也可以看出,隨著進(jìn)深的增加,主要是模塊數(shù)量的增加導(dǎo)致平面型制的變化。因此應(yīng)該進(jìn)一步研究其內(nèi)部模塊之間的連接關(guān)系、尺寸等要素特征。
徽州傳統(tǒng)民居的面寬與平面型制沒有明顯的關(guān)聯(lián)性。從統(tǒng)計(jì)的數(shù)據(jù)來看,傳統(tǒng)民居的面寬主要集中在7~14 m,只有極少數(shù)民居的面寬達(dá)到了15 m,超過17 m的只有1戶,并且更為明顯的是傳統(tǒng)民居面寬在9~11 m之間的比例約為75%,其面寬數(shù)據(jù)如圖3所示。因此可以認(rèn)為,當(dāng)基地面寬超過11 m后,大多數(shù)會采用組合式型制,并且在實(shí)際測繪的過程中,也能夠發(fā)現(xiàn)類似情況。
圖3 徽州傳統(tǒng)民居型制與面寬關(guān)系
(2)功能模塊尺寸關(guān)系。徽州傳統(tǒng)民居最主要的功能模塊有堂屋、天井、臥室、樓梯間、走道、儲藏間等,其中儲藏間一般位于天井兩側(cè)與臥室緊鄰,其尺寸一般由天井和臥室確定;樓梯間一般與堂屋結(jié)合,兩側(cè)或一側(cè)留出過道;走道形狀不固定,一般在天井與堂屋之間,并且能夠聯(lián)系臥室。
對徽州35戶傳統(tǒng)民居測繪圖紙相關(guān)功能模塊的數(shù)據(jù)分析可以看出,堂屋模塊的面寬一般在3.0~6.5 m之間,尤其明顯的集中在4.0~5.0 m之間,進(jìn)深尺寸與面寬尺寸差距不大,一般在3.0~5.5 m之間,尺寸的聚集程度不如面寬明顯;臥室模塊的面寬更明顯地集中在2.0~3.5 m之間,進(jìn)深與堂屋模塊基本持平,這從傳統(tǒng)民居平面型制上也可以看出?;罩輦鹘y(tǒng)民居模塊尺寸如圖4所示。
圖4 徽州傳統(tǒng)民居模塊尺寸
天井模塊的尺寸波動較大,面寬一般在2.0 m以上,并且面寬超過7.0 m的也較多,天井的面寬主要視民居整體面寬而定,但實(shí)際情況下天井兩側(cè)一般有儲藏空間,或者天井兩側(cè)留有走道的寬度;天井模塊的進(jìn)深多數(shù)不超過4 m,且1~3 m之間數(shù)量略多,并且進(jìn)深尺寸一般不超過堂屋或者臥室的進(jìn)深。
從傳統(tǒng)民居平面型制可以看出,多數(shù)樓梯間與堂屋結(jié)合使用,因此樓梯間進(jìn)深一般與堂屋相當(dāng),兩側(cè)或者一側(cè)預(yù)留走道,而樓梯間的面寬一般為0.7~2.0 m之間,更多集中在1.0 m左右;走道的寬度一般在0.7~1.5 m之間,并且走道一般在堂屋與天井之間,連接臥室、儲藏間等模塊。儲藏間一般位于天井兩側(cè)與臥室緊鄰,因此其尺寸基本根據(jù)其他模塊而定。
以此為基礎(chǔ)進(jìn)行自生成研究時(shí),考慮到計(jì)算機(jī)生成結(jié)果的有限性以及傳統(tǒng)建筑的模數(shù)制,可以選擇0.3 m為單位在相關(guān)區(qū)間漸次疊加。
(1)屋面形式?;罩輦鹘y(tǒng)民居的屋面通常由正房和側(cè)面的廂房或走道組成,由于天井的存在,正房(堂屋)屋面一般是雙坡,而位于天井兩側(cè)的走道處的屋頂一般為單坡。天井兩側(cè)的屋頂一般比正方屋頂高度低,這也和馬頭墻高低錯(cuò)落的形式相統(tǒng)一。除此以外,因?yàn)槠矫嫘椭频牟煌?可能有多個(gè)堂屋(或者過廳)、天井同時(shí)存在,所以也會有雙坡、單坡交替出現(xiàn)的情況。
傳統(tǒng)民居屋面的生成過程中要考慮與平面的關(guān)系,主要應(yīng)該考慮坡度的影響,坡度可以將水平方向上的進(jìn)深與屋架高度聯(lián)系起來。對徽州35戶民居的測繪圖紙進(jìn)行總結(jié)分析,并提取相關(guān)數(shù)據(jù),經(jīng)過計(jì)算發(fā)現(xiàn),傳統(tǒng)民居屋頂坡度存在一定的規(guī)律性,其中多數(shù)民居正房屋頂?shù)钠露仍?.4~0.6之間,而走道(天井兩側(cè))坡度在0.3~0.5之間,相關(guān)數(shù)據(jù)如圖5所示。在功能模塊的尺寸以及屋頂斜率已經(jīng)確定的基礎(chǔ)上,可以將平面尺寸與兩層層高相結(jié)合后用數(shù)學(xué)關(guān)系表達(dá)出屋頂高度。
圖5 徽州傳統(tǒng)民居正房與走道屋頂坡度
(2)墻面形式。馬頭墻是徽州傳統(tǒng)民居建筑的典型特征,其產(chǎn)生的韻律感是徽州的一道靚麗風(fēng)景線。在徽州民居調(diào)研過程中發(fā)現(xiàn),馬頭墻形式雖然多樣,但是總體主要分為階梯形、弧形和尖頂(硬山半馬)3類,其中階梯形馬頭墻所占比重最大。階梯形馬頭墻又可分為對稱形和不對稱形,并且隨著房屋進(jìn)深的變化馬頭墻的階數(shù)也會產(chǎn)生變化。
從平面對照來看,馬頭墻的形式也有一定的規(guī)律性。側(cè)立面與天井相對位置的馬頭墻一般較為低矮,且寬度與天井進(jìn)深相當(dāng),并且馬頭墻最高處一般與堂屋或者過廳對應(yīng);正立面馬頭墻一般呈凹型,且兩側(cè)高度一般與相鄰的側(cè)面馬頭墻高度一致,當(dāng)然不排除個(gè)例。
對35戶民居的測繪圖紙進(jìn)行總結(jié)分析,并將不同平面型制下的馬頭墻各階高差與屋面坡度進(jìn)行對比,發(fā)現(xiàn)在所有型制的民居中有75%左右的建筑,最高階兩側(cè)馬頭墻高度一致。
進(jìn)一步尋找馬頭墻最高階與屋頂正脊之間的高差關(guān)系。根據(jù)統(tǒng)計(jì)發(fā)現(xiàn)90%以上民居建筑屋頂正脊與最高階馬頭墻之間的高差在0.8 m以內(nèi),約有40%的民居建筑屋頂正脊與最高階馬頭墻之間僅差了馬頭墻頂部墻脊的高度(此時(shí)差值記為0),如圖6a所示。
由于天井對應(yīng)處馬頭墻寬度與天井進(jìn)深相當(dāng),需要研究馬頭墻最高階與其他階之間的比例。通過對測繪圖紙的總結(jié)分析,發(fā)現(xiàn)馬頭墻最高階的寬度一般在3~6 m之間,而和與之相鄰馬頭墻寬度的比值在3~6之間,并且呈現(xiàn)明顯的正相關(guān),如圖6b所示。
圖6 徽州傳統(tǒng)民居馬頭墻寬度邏輯
通過對測繪圖紙的總結(jié)分析,可選擇適當(dāng)?shù)谋壤?、尺寸等?shù)據(jù),根據(jù)進(jìn)深關(guān)系設(shè)定屋頂高度范圍,并確定馬頭墻的階數(shù)以及高度,使得馬頭墻的整體形式更加自然?;罩菝窬玉R頭墻上面一般有青瓦覆蓋形成墻脊,墻脊往往在沿墻身厚度方向挑出墻面,與坐頭、墻面共同構(gòu)成徽州獨(dú)具特色的馬頭墻形式。墻脊寬度略大于馬頭墻厚度,墻脊的長度隨馬頭墻各階寬度的變化而變化,位置也由馬頭墻而定。
用相關(guān)參數(shù)控制整個(gè)生成過程便于調(diào)控結(jié)果,是自生成研究的核心思路。進(jìn)行徽州傳統(tǒng)民居自生成研究時(shí),根據(jù)把建筑語言轉(zhuǎn)化為計(jì)算機(jī)語言一般做法的討論,需要對建筑概念進(jìn)行抽象化處理,因此可以先把基本模塊做矩形處理,再根據(jù)傳統(tǒng)民居的平面關(guān)系,將堂屋、天井、走道、臥室、等功能模塊分別表示,見表1所列。
表1 徽州民居的簡化處理與相關(guān)參數(shù)
(1)模塊的基本定義與組合規(guī)則。在定義模塊時(shí),要根據(jù)形狀的不同選擇不同的定義方式,其中最基本的方式是用點(diǎn)生成形體。選擇堂屋為生成中心,同時(shí)以原點(diǎn)為定位點(diǎn),點(diǎn)是在Grasshopper中的Python語言通過調(diào)用rhinoscriptsyntax指令包實(shí)現(xiàn)的,這樣所定義的點(diǎn)(rs.AddPoint)可以直接在rhino坐標(biāo)軸中顯示,如圖7a所示。矩形模塊則需要用包含了坐標(biāo)信息的“點(diǎn)”去定位,并且矩形中包含的點(diǎn)和線都按照逆時(shí)針方向生成編號,如圖7b所示。
調(diào)用Grasshopper中的矩形(Rectangle)模塊,并結(jié)合空間向量作為平面生成過程中的固定模塊,矩形的長和寬分別表示模塊的進(jìn)深與面寬,其中各功能模塊的進(jìn)深與面寬由前述總結(jié)得到。在進(jìn)行模塊組合疊加時(shí)還需要調(diào)用炸開、起始點(diǎn)、終止點(diǎn)、距離等命令作為運(yùn)算的變量,并選擇生成的矩形某條邊上的點(diǎn)作為連接點(diǎn),進(jìn)行其他模塊的生成,如圖7c所示。
圖7 Python中定義與連接規(guī)則
一些比較特殊的模塊(如走道模塊)是由相鄰的功能模塊圍合而成,因此需要在其他模塊生成,且在外圍護(hù)結(jié)構(gòu)生成之后才能確定。
(2)平面形式的選擇。結(jié)合前述對于平面型制即尺寸的分析總結(jié),發(fā)現(xiàn)當(dāng)進(jìn)深不超過9 m時(shí),一般為凹型平面;當(dāng)進(jìn)深繼續(xù)增加且不超過14 m時(shí),一般為回型平面;當(dāng)進(jìn)深超過14 m時(shí),一般為日型平面或H型平面,其中H型多不超過17 m;當(dāng)進(jìn)深繼續(xù)增加以致超過20 m時(shí),一般為H型與凹型、回型的組合式,或者日型與凹型、回型的組合式。隨著進(jìn)深的增加,主要是模塊數(shù)量的增加導(dǎo)致平面型制的變化。
用Python語言處理形體參數(shù)時(shí)要考慮到運(yùn)算量的問題,模塊越多運(yùn)算量越大,因此在編寫過程中也考慮了對部分模塊的合并,例如樓梯間模塊一般在堂屋中靠后的位置,因此可以先不考慮樓梯間,在生成堂屋后于生成結(jié)果中重新置入,同理天井兩側(cè)的儲藏間也如此處理,如圖8所示。
圖8 Python語言中模塊的簡化與重新置入
后續(xù)實(shí)驗(yàn)過程中隨機(jī)選擇了3種型制進(jìn)行生成,并對堂屋內(nèi)部置入樓梯間模塊,以及天井兩側(cè)預(yù)留出走道后置入儲藏間模塊的置入方式進(jìn)行表達(dá)。Python語言基本型生成規(guī)則如圖9所示。
圖9 Python語言基本型生成規(guī)則
(3)屋面的生成。屋面的生成邏輯與平面緊密相關(guān),徽州傳統(tǒng)民居因其特殊的型制,屋面一般分為正房屋面和側(cè)面走道屋面,其中正房屋面一般為雙坡頂,而走道(儲藏)上空的屋面一般是單坡頂,并且兩者正交。屋面的高度一般由進(jìn)深和斜率決定,根據(jù)前面的概括總結(jié),發(fā)現(xiàn)多數(shù)民居正房屋頂?shù)钠露仍?.4~0.6之間,而走道(天井兩側(cè))坡度在0.3~0.5之間。正房屋面一般延伸至走道上空,留出天井位置,因此在上節(jié)生成平面的基礎(chǔ)上,調(diào)取正房的進(jìn)深以及走道的寬度作為屋架進(jìn)深,正房屋頂邏輯如圖10a所示。結(jié)合坡度得到一般的正房屋頂高差表達(dá)式為:
正房屋頂高差=(堂屋進(jìn)深+走道進(jìn)深)×正房屋頂坡度。
一般情況下,徽州傳統(tǒng)民居1層較高,多數(shù)超過3 m,2層略低于1層。天井兩側(cè)屋面坡度在0.3~0.5之間。平面生成后,前述對部分模塊進(jìn)行了合并操作,因此需要計(jì)算天井到山墻的距離作為生成基數(shù),在寫入Python時(shí)可以考慮用點(diǎn)到直線的距離(gh.CurveClosestPoint)表示:
側(cè)面屋頂高差=天井到山墻的距離×走道屋頂坡度。
走道屋頂邏輯如圖10b所示。
圖10 正房及走道屋頂尺寸邏輯關(guān)系
對不同型制下傳統(tǒng)民居的屋面進(jìn)行生成研究,隨機(jī)選擇其中3種型制進(jìn)行結(jié)果呈現(xiàn),屋面形式與平面型制相仿,堂屋正上方一般為雙坡頂,與天井兩側(cè)的單坡頂交替出現(xiàn)。相同型制甚至是相同基地的情況下,由于模塊尺寸的變化,屋頂也隨之改變。Python屋頂生成結(jié)果如圖11所示。
圖11 Python屋頂生成
(4)墻面的生成。徽州傳統(tǒng)民居馬頭墻形式是墻面自生成的關(guān)鍵。徽州傳統(tǒng)民居的馬頭墻主要有階梯形、弧形和尖頂(硬山半馬)3種形式,其中最常見的是階梯形馬頭墻。馬頭墻的形式往往與平面型制有關(guān),例如側(cè)立面與天井相對位置的馬頭墻一般較為低矮,并且其寬度與天井進(jìn)深相當(dāng)。此外,馬頭墻最高階的寬度一般也最寬,與其相鄰側(cè)馬頭墻寬度比多在1∶3~1∶6之間。
馬頭墻的尺寸與平面尺寸相關(guān)聯(lián),首先從生成的平面形式中調(diào)用傳統(tǒng)民居的外輪廓,根據(jù)平面型制和進(jìn)深確定側(cè)面馬頭墻的階數(shù)。一般凹型平面優(yōu)先選擇3階馬頭墻,回型平面視進(jìn)深選擇3階或者5階,H型平面視進(jìn)深選擇3階、5階或者更多,而日型平面優(yōu)先選擇5階及以上馬頭墻。不同平面型制首先根據(jù)天井所在位置對墻面進(jìn)行分割,若剩余部分進(jìn)深超過一定數(shù)值,則按照1∶4或者1∶5的比例繼續(xù)進(jìn)行分割。
正立面馬頭墻形式較為統(tǒng)一,多數(shù)情況下為3階,中間低矮且寬度與天井開間相關(guān),并且兩側(cè)的高度與相鄰側(cè)立面馬頭墻高度一致或略低。根據(jù)每階的長度對外輪廓進(jìn)行拆分重構(gòu)。最后馬頭墻的高度由層高和屋面高度決定,由于每階所處的位置不同,高度也有變化。最高階馬頭墻一般高出屋面0.8 m以內(nèi),或者正房屋脊與最高階平齊。而與最高階相鄰的馬頭墻一般低矮0.7~1.2 m。對徽州傳統(tǒng)民居側(cè)立面及正立面馬頭墻進(jìn)行生成操作,墻面生成結(jié)果如圖12所示。
圖12 Python墻面生成
(5)生成結(jié)果。對凹型、回型、H型、日型分別進(jìn)行程序編寫,最后生成的模型中包含了各模塊的尺寸數(shù)據(jù)、位置關(guān)系,建筑的層高,馬頭墻各階的高度和寬度,屋頂?shù)母叨群推露?。徽州傳統(tǒng)民居Python語言快速生成結(jié)果如圖13所示。
(1)隨著進(jìn)深的增加,徽州傳統(tǒng)民居的基本型制依次從凹型、回型、H型、日型逐漸變化,各型制尺寸分別為9 m以下、9~14 m、14~17 m、17~20 m,進(jìn)深繼續(xù)增加則產(chǎn)生組合型制。
(2)徽州傳統(tǒng)民居主要模塊有堂屋、臥室、天井、走道、樓梯間等,堂屋的面寬和進(jìn)深主要集中在4.0~5.0 m和3.0~5.5 m之間;臥室的面寬主要集中在2.0~3.5 m之間,進(jìn)深隨堂屋變化;天井的面寬視民居整體面寬而定,進(jìn)深多不超過4 m;樓梯間的寬度多集中在1 m左右;走道的寬度一般在0.7~1.5 m之間。
(3)徽州傳統(tǒng)民居正房屋頂坡度多在0.4~0.6之間,而走道屋頂坡度多在0.3~0.5之間。
(4)徽州傳統(tǒng)民居建筑屋頂正脊與最高階馬頭墻之間的高差多在0.8 m以內(nèi);馬頭墻最高階寬度與相鄰階寬度的比值在3~6之間,且與最高階的寬度呈現(xiàn)明顯的正相關(guān),其他階的寬度與天井的進(jìn)深相關(guān)。
(5)在Python中對模塊簡化處理,用點(diǎn)定位生成模塊,根據(jù)各功能模塊尺寸、數(shù)量、位置等條件,進(jìn)行連接設(shè)定。
(6)結(jié)合立面馬頭墻韻律的數(shù)學(xué)邏輯,以及與平面的對應(yīng)關(guān)系在Grasshopper平臺上運(yùn)用Python語言編程生成,隨后結(jié)合平立面對快速生成的民居進(jìn)行展示。
不同于以往針對徽州村落的計(jì)算機(jī)生成模式,本文針對單體型制,從功能模塊的角度,采用量化解析的方法探究個(gè)體的生成規(guī)律; 有別于傳統(tǒng)的JAVA語言生成方法,本文采用GhPython語言把傳統(tǒng)民居與Grasshopper平臺結(jié)合起來,提供了建筑生成的更多可能性。
對于徽州傳統(tǒng)民居特征的數(shù)字化總結(jié),有利于通過計(jì)算機(jī)程序進(jìn)行快速生成,Grasshopper與Python語言的結(jié)合更加適用于建筑學(xué),可以提高傳統(tǒng)民居的重建、現(xiàn)代民居的新建效率。在此基礎(chǔ)上,還可以把程序與不規(guī)則的地形條件結(jié)合尋找更加廣泛的適用領(lǐng)域。