宋 安
(西南交通大學(xué)建筑與設(shè)計學(xué)院,四川 成都 611730)
形狀文法誕生于20世紀(jì)70年代[1],它在本質(zhì)上類似于一種符號重寫系統(tǒng),但計算過程中的執(zhí)行對象不是零維且離散的“符號”,而是多維且連續(xù)的“形狀”。在表現(xiàn)上,形狀規(guī)則是它的主體,由“左形狀(LHS)→右形狀(RHS)”形式構(gòu)成,表示從一個初始形狀中找到LHS,并替換為RHS。它的規(guī)則簡單易懂,但卻能利用“形狀”的特殊性質(zhì)構(gòu)成相對復(fù)雜的設(shè)計[2](見圖1)。形狀文法既能夠作為一種獨(dú)立的形式化分析和設(shè)計工具,生成具備風(fēng)格一致性或創(chuàng)意性的設(shè)計,也能集成在一個復(fù)雜設(shè)計系統(tǒng)中,用于前期的概念推敲或后期的模型生成,并被廣泛應(yīng)用于建筑、藝術(shù)、工業(yè)等領(lǐng)域。
但令人遺憾的是,該方法大多活躍于學(xué)術(shù)界而鮮少被應(yīng)用于真實(shí)的建筑設(shè)計活動中。究其原因有二:其一在于缺乏足夠健壯的形狀文法解釋器,使其難以充分在CAD環(huán)境中發(fā)揮全部潛力;再者,形狀文法本身僅僅具備形狀生成的能力而缺乏評估和探索等機(jī)制,而設(shè)計探索階段是建筑師思維過程中的重要一環(huán)[3],通常很難依靠固定的規(guī)則來生成適應(yīng)復(fù)雜環(huán)境的建筑方案。
解釋器的開發(fā)一般涉及形狀在計算機(jī)中的數(shù)據(jù)表征形式與形狀識別算法的開發(fā),通常依賴于專業(yè)程序員的努力。建筑師則可通過設(shè)計一個更為完整的算法框架,將形狀文法嵌入其中并與其他方法模塊相互配合,完善其生成、評估、探索設(shè)計的能力。而后者則是本文將要討論的問題,借此機(jī)會提出了一個以形狀文法為核心的建筑設(shè)計算法框架(下文簡稱“框架”),并探討了其開發(fā)與實(shí)現(xiàn)的初步思路。
提出的初步框架以平面較為簡單的大量性建筑為研究載體,可以是鄉(xiāng)村住宅或單元公寓等等。一般情況下,這類建筑的縱向空間復(fù)雜度較低,可由平面的特征與指標(biāo)來作為建筑整體的評判依據(jù)。為了提高生成以及遍歷方案的速度,將二維平面與三維模型的生成進(jìn)行分離,在得到合理的二維解后再去形成相應(yīng)的三維模型??偟膩碚f,框架由形狀生成(shape generation)、設(shè)計探索(design exploration)和三維模型生成(3D model generation)三大模塊組成(如圖2所示)。
在初次應(yīng)用形狀文法進(jìn)行形狀生成之前,開發(fā)對應(yīng)問題的語法及其規(guī)則一定是首要任務(wù),它為框架提供了起始的輸入數(shù)據(jù)?;仡檸资陙淼恼Z法實(shí)踐,可以將開發(fā)具體語法的思路歸納為三個步驟:原始語料的搜集與歸納,規(guī)則模式與策略的選擇以及形狀規(guī)則的進(jìn)一步歸納與轉(zhuǎn)換。
一個具體語法的主要構(gòu)成是形狀規(guī)則,而形狀規(guī)則由基本形狀組成,即所謂的詞匯或語料。搜集語料的任務(wù)便是設(shè)計知識獲取的過程,一般能夠通過三種途徑獲取相關(guān)的知識[4]:
1)開發(fā)設(shè)計理論;
2)從成功設(shè)計師那里獲取知識或是他們設(shè)計對象時的實(shí)踐經(jīng)驗;
3)分析特定領(lǐng)域中的現(xiàn)有對象。
第一種方式顯然是最為困難的,但也暗示著可以從現(xiàn)有的設(shè)計理論中提取相關(guān)知識。第二種方式可以在設(shè)計工作室或公司的學(xué)習(xí)實(shí)踐或合作中獲得,Duarte在西扎的幫助下完成的馬拉蓋拉語法[5]就是此種方式的典型案例。第三種方式相對來說是最普遍且最易實(shí)現(xiàn)的,可以通過實(shí)地調(diào)研直接記錄與測繪數(shù)據(jù),也可以通過文獻(xiàn)資料集或案例圖紙庫的查閱間接獲取數(shù)據(jù)。
知識的獲取相對來說并不困難,而更為重要的是如何使用這些知識,如何將它們轉(zhuǎn)換為形狀文法所需要的表達(dá)形式,這一過程也被稱為知識的提取。提取知識即從獲取的數(shù)據(jù)中歸納與提煉出設(shè)計所需要的那一部分,要理清所需為何,清晰明確的設(shè)計問題則是此項工作的基本前提。
亞歷山大處理設(shè)計問題的流程可以歸納為自頂向下分解問題,以及自底向上解決問題[6](見圖3)。用該方法解決問題的關(guān)鍵在于是否能夠創(chuàng)造出這種層級明確的樹狀圖解。通過對初始問題進(jìn)行不同角度或程度地分解和抽象,可以得到不同的樹狀圖解。至此,只需從底層開始,將各個元素最常見的幾何構(gòu)成與屬性設(shè)置為形狀,將對應(yīng)的元素名稱設(shè)為其標(biāo)簽,便能獲得所需的基本詞匯。獲得基本詞匯之后,還需掌握它們之間的空間組合關(guān)系,進(jìn)而逐層向上,得到最終的設(shè)計目標(biāo)。
規(guī)則模式是對設(shè)計過程的反映,語法呈現(xiàn)哪種規(guī)則模式取決于將設(shè)計問題分解成何種形式。Knight將現(xiàn)有語法實(shí)踐中的規(guī)則模式歸納三種類型[7]:
1)網(wǎng)格型(Grid):建筑存在明確的軸網(wǎng)關(guān)系,這種類型的建筑一般也從定義軸網(wǎng)開始。除帕拉迪奧語法外,日本茶室語法[8]、營造法式語法[9]也屬于這種類型。
2)疊加型(Addition):建筑沒有明確的軸網(wǎng)關(guān)系,通常以某個核心空間開始設(shè)計,其他空間依次添加到設(shè)計中,如草原式住宅語法[10]、安妮女王住宅語法[11]等。
3)細(xì)分型(Subdivision):通常以一條明確的邊界開始,逐層對內(nèi)部進(jìn)行劃分,如冰射線語法[12]、馬拉蓋拉語法等。
這三種典型的規(guī)則模式反映出自上而下和自下而上的設(shè)計方法,網(wǎng)格與細(xì)分屬于前者,疊加屬于后者。這些模式正是語法通用化的關(guān)鍵,同一種風(fēng)格的建筑可以由不同的規(guī)則模式表征,同一規(guī)則模型也可以生成不同類型的建筑[13]。
從整個應(yīng)用過程來看,利用形狀文法生成新設(shè)計的策略可以被歸納為以下四種[14]:
第一種策略即標(biāo)準(zhǔn)的分析型文法,起點(diǎn)是一組現(xiàn)有的設(shè)計,分析這些設(shè)計得到語法實(shí)例。語法生成的設(shè)計包括原始設(shè)計和新設(shè)計,就像帕拉迪奧語法一樣。因此僅通過分析型文法就有可能生成新穎的設(shè)計。但這些新設(shè)計將被限制在與原始設(shè)計相同的風(fēng)格(見圖4(a))。
第二種策略與第一種策略的開始方式相同,但是為了進(jìn)一步擴(kuò)展設(shè)計的可能性并超越原來的風(fēng)格,額外定義了規(guī)則轉(zhuǎn)換。這些規(guī)則轉(zhuǎn)換將原始語法的規(guī)則作為輸入,生成的新語法與新規(guī)則作為輸出。新語法產(chǎn)生了一套與原有設(shè)計有聯(lián)系,但風(fēng)格不同的新設(shè)計(見圖4(b))。
第三種策略與第二種策略相似。它們有相同的出發(fā)點(diǎn)。然而,規(guī)則轉(zhuǎn)換不是定義于原有語法,而是直接作用于原有語法生成的設(shè)計。換句話說,不是定義規(guī)則轉(zhuǎn)換,而是定義轉(zhuǎn)換規(guī)則。當(dāng)采取這種策略時,設(shè)計師正專注于某一位客戶設(shè)計一棟房子,而不是為所有潛在客戶設(shè)計一類房子(見圖4(c))。
第四種策略與上一種本質(zhì)上相同。但是在流程上省略了開發(fā)原始語法的步驟,而是直接考慮如何將現(xiàn)存設(shè)計轉(zhuǎn)換成新設(shè)計的轉(zhuǎn)換語法。當(dāng)原始設(shè)計沒有分析的必要時,可以采取這種策略(見圖4(d))。
到目前為止,已經(jīng)解決了初始條件輸入中最為重要的形狀規(guī)則的開發(fā)問題?!碍h(huán)境配置”和“控制條件”的作用是對形狀的生成施加限制條件,避免產(chǎn)生太多無效解,可根據(jù)具體的實(shí)際需求進(jìn)行添加。
形狀的生成可以借助現(xiàn)有的通用形狀文法解釋器或自建參數(shù)化模型,兩者的數(shù)據(jù)基礎(chǔ)都是上一步完成的形狀規(guī)則。使用通用解釋器,可以像在圖紙上繪制規(guī)則那樣定義形狀規(guī)則,它會在后臺將其自動編譯為包含“形狀識別”和“形狀替換”功能的函數(shù)。解釋器的作用相當(dāng)于將原本類似“黑盒”的復(fù)雜程序以形狀規(guī)則的形式進(jìn)行了可視化,并且還能夠可視化地修改它們,它會自動地將該函數(shù)進(jìn)行更新。這些都是參數(shù)化模型所做不到的,參數(shù)化規(guī)則的創(chuàng)建只能依賴參考形狀規(guī)則的生成邏輯手動完成,且規(guī)則的修改也需要人為地調(diào)整其算法邏輯。
使用通用解釋器能夠簡單地實(shí)現(xiàn)規(guī)則的自動推演,而參數(shù)化模型想要實(shí)現(xiàn)該功能則十分困難。另外,使用通用解釋器來存儲形狀規(guī)則,可以更加容易地實(shí)現(xiàn)規(guī)則的通用化,因為組成這些規(guī)則的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)是一致的,不同語法之間的規(guī)則能夠相互產(chǎn)生作用。而這一點(diǎn)用參數(shù)化模型同樣難以實(shí)現(xiàn),它的規(guī)則不是由形狀組成,而是各不相同的功能模塊,只能實(shí)現(xiàn)接口之間的相互通信。
但是,通用解釋器的開發(fā)十分困難,只能依賴于專業(yè)的程序員,而諸如Grasshopper,Dynamo平臺下創(chuàng)建的參數(shù)化模型則被大多數(shù)設(shè)計師所熟悉,即使這僅意味著對形狀規(guī)則推演的模擬,但也能達(dá)到相同的設(shè)計結(jié)果,開發(fā)的過程也相對更加靈活,因此能夠被大多數(shù)設(shè)計師所接受。這時的形狀規(guī)則,則只是作為可視化的知識模型,在開發(fā)和設(shè)計過程中起著指導(dǎo)作用。
按需選擇通用解釋器或參數(shù)化模型其中一種,即可完成形狀的生成。但需要注意的是,框架暫未嵌入固定的通用解釋器以供形狀計算,而參數(shù)化模型也需根據(jù)實(shí)際案例進(jìn)行開發(fā),這里僅規(guī)定數(shù)據(jù)的接口,即它們都應(yīng)輸出帶標(biāo)簽的二維平面作為最終的生成結(jié)果。經(jīng)過設(shè)計師篩選后,這些結(jié)果可以用來生成三維模型,或借助設(shè)計探索模塊執(zhí)行進(jìn)一步的優(yōu)化。
設(shè)計的探索不是必須的,這種需求一般發(fā)生在設(shè)計師對某個復(fù)雜問題的求解方式?jīng)]有明確思路,或者說希望生成的解符合某個或某幾個既定的目標(biāo)而沒有較好實(shí)現(xiàn)思路的情況下。相反,如果一個問題有清晰的解決思路,則應(yīng)該使用更加清晰高效的算法,仍使用探索模式將會十分低效。
評估模塊的實(shí)現(xiàn)可以是顯式的,也可以是隱式的。顯式實(shí)現(xiàn)可以通過設(shè)定具體的常量、代數(shù)表達(dá)式或更為復(fù)雜的算法函數(shù)來進(jìn)行判斷;而隱式實(shí)現(xiàn)則是指直接由設(shè)計師通過主觀視覺分析進(jìn)行篩選,該模塊只表征一個評估的形式過程而不包含具體的內(nèi)容。評估手段或評估函數(shù)的選擇并沒有固定的標(biāo)準(zhǔn),主要取決于設(shè)計的目標(biāo)以及是否需要進(jìn)行設(shè)計探索。如果需要進(jìn)行設(shè)計的探索,則評估模塊必須顯式的實(shí)現(xiàn),因為探索模塊的執(zhí)行依賴于評估函數(shù)的結(jié)果。
語法進(jìn)化的前提是利用程序?qū)⒁?guī)則自動化應(yīng)用,即規(guī)則的自動推演,通常使用“形狀代碼(shape code)”來表達(dá)規(guī)則序列(規(guī)則序號的線性排列)[15],而規(guī)則序列則可以作為形狀文法生成的具體方案(表型)的表征形式,因此“shape code”即為基因型。將規(guī)則序列作為基因型不會對語法本身做出任何改進(jìn),它可以將結(jié)果限制在該語法所規(guī)定的解空間內(nèi),以確保設(shè)計在風(fēng)格范圍內(nèi)變化。但若需要增強(qiáng)其設(shè)計探索的能力,則可以對語法本身進(jìn)行進(jìn)化,即形狀規(guī)則的進(jìn)化。這種情形下,則需要將組成規(guī)則的元素變?yōu)槌绦蛩枰幕蛐停梢允切螤钤~匯、形狀參數(shù)或是規(guī)則參數(shù)等等。規(guī)則參數(shù)也可以與規(guī)則序列同時交互,發(fā)生更加復(fù)雜的變化。
“形狀進(jìn)化”即為設(shè)計結(jié)果的進(jìn)一步優(yōu)化。這種方式需要對設(shè)計結(jié)果進(jìn)一步建模,將它的幾何或拓?fù)涞葘傩詤?shù)化,以便于將它們作為基因型進(jìn)行交叉與變異。它的進(jìn)一步生成與進(jìn)化不會再與形狀文法有關(guān)的程序進(jìn)行交互,有關(guān)它的具體操作步驟可參見其他應(yīng)用遺傳算法進(jìn)行平面進(jìn)化的案例。雖然與形狀文法的算法邏輯或過程無關(guān),但它仍然可以是框架中的重要一環(huán),這也能證明各種算法模塊之間除可以直接配合,也可間接地利用共同的接口進(jìn)行交互。
在所有的平面元素全部確定之后,可以開始進(jìn)行三維模型的生成與映射。若是利用通用解釋器得到的帶標(biāo)簽的二維平面,墻體等三維構(gòu)件的生成最關(guān)鍵的是依賴對標(biāo)簽的自動識別,而在參數(shù)化模型中則是依靠手動輸入正確的基線。只要不同風(fēng)格的同類構(gòu)件能夠識別同一個“基線”,它們之間就可以方便地進(jìn)行模塊化替換。隨著需求的增加,不斷地繪制或?qū)胄聵?gòu)件即可。關(guān)于模型映射,在grasshopper平臺上一個簡單的實(shí)現(xiàn)是以內(nèi)置模塊“Box Mapping”與“Bounding Box”為核心的求解方法。該過程中最需要注意的點(diǎn)就是源形狀與目標(biāo)形狀基準(zhǔn)平面的設(shè)定,以保證模型之間的映射能夠適應(yīng)不同的方向(見圖5)。
該框架可以有效完善基于形狀文法的設(shè)計流,使其更加適應(yīng)于實(shí)際的設(shè)計場景。此外,該框架僅在一定程度上規(guī)定了系統(tǒng)的運(yùn)行流程與交互接口,但沒有限定每個模塊的具體實(shí)現(xiàn),它們是可被替換的,應(yīng)該以具體研究載體的實(shí)際問題與需求為準(zhǔn)來開發(fā)最合適的實(shí)現(xiàn)算法。當(dāng)框架得到進(jìn)一步實(shí)現(xiàn)和完善后,能夠具備對某個大量性建筑進(jìn)行大規(guī)模定制化設(shè)計的潛力,以此來提高設(shè)計的質(zhì)量與效率。