李立寧 黃雷 郭楊 劉萍
(南寧職業(yè)技術(shù)學(xué)院 建筑工程學(xué)院,南寧 530008)
近年來,隨著對中國傳統(tǒng)建筑、少數(shù)民族傳統(tǒng)建筑的保護(hù)研究不斷深入,不少學(xué)者開始利用BIM 技術(shù)將過去大多依靠民間工匠師徒相傳、不著文字的傳統(tǒng)建筑記錄保存下來,與文字、圖片和視頻等形成了多形態(tài)的傳統(tǒng)建筑信息數(shù)據(jù)庫。如陳璐銘[1]等探討了點(diǎn)云技術(shù)結(jié)合BIM 在云南少數(shù)民族建筑數(shù)字化建模的應(yīng)用;張?zhí)煊頪2]嘗試了采用BIM 技術(shù)對湖南傳統(tǒng)村落門窗的進(jìn)行數(shù)字化建模;王鐘箐等[3]總結(jié)了攢尖亭的構(gòu)造特點(diǎn),并采用Dynamo 可視化編程技術(shù)實(shí)現(xiàn)了不同形式攢尖亭的快速建模;彭永鵬等[4]采用“融合”的方法創(chuàng)建了吊腳樓花柱的構(gòu)件模型等。學(xué)者們的研究表明,合理運(yùn)用BIM 技術(shù)對更好的傳承和創(chuàng)新利用少數(shù)民族傳統(tǒng)建筑文化元素具有重大意義。
總的來看,目前對中國傳統(tǒng)建筑,特別是少數(shù)民族傳統(tǒng)建筑裝飾構(gòu)件的建模,實(shí)踐中多采用點(diǎn)云、三維掃描的方式進(jìn)行記錄,對其參數(shù)化建模的研究仍不充分。本文通過研究此類裝飾構(gòu)件的主要形式,通過添加第三方Dynamo 節(jié)點(diǎn)和少數(shù)參數(shù)編寫了針對部分廣西傳統(tǒng)壯侗民族建筑柱頭裝飾構(gòu)件的Dynamo 腳本,達(dá)到僅通過輸入或修改少量建模參數(shù)即可生成多種類別和形狀柱頭族文件的目的,對其他類似構(gòu)件的參數(shù)化建模提出了可供參考的新思路。
廣西壯族自治區(qū)是壯、侗及其同源的仫佬族、毛南族、水族等原住民族聚居區(qū),在漫長的歷史發(fā)展中,壯侗語諸民族及其先民因地制宜,就地取材,創(chuàng)造了風(fēng)格別具、功能優(yōu)良、世代傳承,以干欄建筑為代表的建筑文化[5]。在部分干欄建筑營造過程中,工匠為節(jié)約用地,擴(kuò)展空間,合理運(yùn)用力學(xué)原理在建筑前檐柱外鉚入枋木,枋木末端再接短柱,使樓面或屋面向外伸展,在檐下形成了檐廊;形成一個(gè)既能保護(hù)下部構(gòu)件,又能遮陽避雨的空間。為使建筑美觀,營造工匠還往往在短柱上雕刻各式蘊(yùn)涵吉祥含義的花紋、圖樣等作為裝飾,形成富有壯侗民族特色的柱頭裝飾,既體現(xiàn)了壯侗民族的審美情趣,又表達(dá)了吉祥、平安和富裕等對美好生活的愿望。
此類柱頭樣式有燈籠形、南瓜形、寶瓶形、繡球形等,形似中國傳統(tǒng)建筑中的垂蓮柱,但一般不施彩畫,造型別致古樸,體現(xiàn)了壯侗民族特有的文化傳統(tǒng),圖1(a)列舉了廣西壯侗民族傳統(tǒng)柱頭裝飾的常見典型樣式[6],包括圓燈籠形、南瓜形、長燈籠型、流蘇燈籠形、收腰燈籠形、扁底燈籠形等。
圖1 廣西壯侗民族傳統(tǒng)柱頭裝飾的常見典型樣式
工匠在雕刻此類柱頭裝飾構(gòu)件時(shí)的營造方法大致為:
(1)利用原木制作短柱,在短柱端頭附近豎向鑿刻出變徑的連續(xù)輪廓,如圖1(b)的輪廓所示;
(2)在雕刻出輪廓的柱頭上繼續(xù)雕刻多道平行的凸起棱線,如圖2(b)所示。
圖2 柱頭豎向輪廓的參數(shù)化實(shí)現(xiàn)
由此,工匠在不另外增加材料耗用的情況下,利用原木直徑范圍內(nèi)的材料營造很好的裝飾效果。
從對柱頭裝飾構(gòu)件的營造方式和幾何構(gòu)成分析可發(fā)現(xiàn),此類包含棱線的復(fù)雜幾何構(gòu)件難以采用傳統(tǒng)BIM 建模軟件的簡單方法進(jìn)行建模的,主要難點(diǎn)為:
(1)旋轉(zhuǎn)、放樣、掃略等命令可以形成復(fù)雜的豎向輪廓,但難以在構(gòu)件上附著或扣減形成凸起棱線;
(2)復(fù)雜的豎向輪廓和橫截面需要大量的參數(shù)、參照線和參照面等進(jìn)行約束,不同約束容易造成沖突,增加了建模、調(diào)試和使用的難度;
(3)每種形式的柱頭需要單獨(dú)的族文件進(jìn)行參數(shù)化建模,建模工作量大;不同的族文件間參數(shù)難以統(tǒng)一,增加了建模和使用的難度。
為此,本文利用Dynamo 可視化編程支持按需定義圖元構(gòu)成方式、可進(jìn)行復(fù)雜幾何建模的特點(diǎn)[7],通過添加若干第三方節(jié)點(diǎn)和基本參數(shù),根據(jù)柱頭構(gòu)件營造方法和幾何構(gòu)成特點(diǎn)編寫了柱頭裝飾構(gòu)件參數(shù)化建模腳本,實(shí)現(xiàn)了通過選擇豎向輪廓,輸入柱頭直徑、柱頭高度等簡單參數(shù)即可完成圓燈籠形、南瓜形、長燈籠型、流蘇燈籠形建模的功能。
針對以上柱頭裝飾構(gòu)件的參數(shù)化建模方法思路如下:
(1)柱頭豎向輪廓定義:定義與柱頭豎向基本輪廓有關(guān)的基本參數(shù)(如:柱頭高、柱頭直徑等)和基本輪廓,并通過基本參數(shù)控制柱頭豎向輪廓的形狀;
(2)定義柱頭橫截面:由于柱頭橫截面為多道平行凸起棱線構(gòu)成,不同高度處的橫截面可視為同一橫截面按豎向輪廓線進(jìn)行縮放并放樣的結(jié)果;因此,可通過定義柱頭橫截面的基本參數(shù)(如棱高、棱數(shù)),并采用多段線(Poly Curve)或樣條曲線(Nurbs Curve)擬合創(chuàng)建柱頭橫截面輪廓;
(3)生成實(shí)體:為生成柱頭三維實(shí)體,需要根據(jù)不同高度處的豎向輪廓直徑縮放橫截面,并平移到相應(yīng)高度作為放樣的依據(jù);隨后利用Dynamo多截面放樣、擬合以形成帶有棱線的柱頭三維實(shí)體(Solid);
(4)生成短柱:根據(jù)建模需要?jiǎng)?chuàng)建柱頭上的原木短柱部分;
(5)實(shí)體合并、簡化:采用多截面放樣擬合方法形成的三維實(shí)體在族文件、項(xiàng)目文件中占用大量內(nèi)存和計(jì)算資源,因此需要將含有大量曲面的三維實(shí)體進(jìn)行簡化;
(6)實(shí)體導(dǎo)入文件:將三維實(shí)體導(dǎo)入族文件或項(xiàng)目文件中供建模使用。
根據(jù)上述參數(shù)化建模的思路,本文在參數(shù)化建模過程中所用方法和Dynamo 節(jié)點(diǎn)略述如下。
柱頭豎向輪廓的建模采用了專用輪廓族的方法解決,后期只需修改輪廓族少數(shù)參數(shù)即可快速生成不同形狀的三維模型[8]。實(shí)現(xiàn)方法為:
(1)新建常規(guī)模型族;為使專用輪廓族易于被Dynamo 識(shí)別,使用“公制常規(guī)模型”族樣板創(chuàng)制,并在立面視圖中使用“模型線”創(chuàng)建柱頭輪廓族;
(2)創(chuàng)建多個(gè)參照平面,并用參數(shù)綁定;通過對參數(shù)的定義達(dá)到參數(shù)化修改輪廓的目的。圖2(a)展示了根據(jù)長燈籠型輪廓?jiǎng)?chuàng)建的參數(shù)化柱頭輪廓族,族文件中分別使用了D1、D2、D3 參數(shù)控制不同高度處輪廓直徑,使用H1、H2、H3、H4 參數(shù)控制柱頭各段高度尺寸;
(3)將參數(shù)、參照平面、輪廓進(jìn)行約束后,通過參數(shù)控制輪廓的形狀;
(4)依次創(chuàng)建不同類別的柱頭豎向輪廓,如平頭燈籠形、圓頭燈籠型、南瓜形等;
(5)將專用輪廓族導(dǎo)入項(xiàng)目文件,在Dynamo 中通過元素選擇功能即可實(shí)現(xiàn)通過選取不同的族類型、修改族參數(shù)即可改變柱頭幾何形狀的功能。
圖2(b)展示了通過控制族參數(shù)H4 修改輪廓形狀,并最終生成相應(yīng)不同長燈籠型柱頭實(shí)體的形狀對比。
為使柱頭棱數(shù)、棱高參數(shù)化,此處采用多點(diǎn)連線生成Poly Curve 曲線或Nurbs Curve 曲線的方法,后期只需修改“柱頭棱數(shù)”、“柱頭相對直徑”、“柱頭相對棱高”參數(shù)即可快速生成不同截面的柱頭三維模型。具體做法為:
(1)定義“柱頭棱數(shù)”參數(shù);計(jì)算不同棱數(shù)下橫截面的棱頂、棱底控制點(diǎn)坐標(biāo)(柱面坐標(biāo))角度;
(2)定義“柱頭相對直徑”、“柱頭相對棱高”參數(shù),計(jì)算棱頂、棱底控制點(diǎn)的坐標(biāo)(柱面坐標(biāo))半徑;
(3)利用“柱頭棱數(shù)”、“柱頭相對直徑”、“柱頭相對棱高”參數(shù)輸入“通過極軸坐標(biāo)創(chuàng)建點(diǎn)”(Point.By Cylindrical Coordinates)節(jié)點(diǎn),生成棱底、棱底控制點(diǎn);利用“列表展平”(List.Flatten)和“列表組合”(List.Combine)等節(jié)點(diǎn)對控制點(diǎn)進(jìn)行合并和排序,并將控制點(diǎn)列表層級(jí)展開;
(4)根據(jù)排序后的橫截面輪廓的棱頂、棱底控制點(diǎn),使用“通過點(diǎn)定義Nurb Curve”(Nurb Curve.By Points)節(jié)點(diǎn)(或Poly Curve.By Points 節(jié)點(diǎn))按順序?qū)⒖刂泣c(diǎn)連接成橫截面輪廓,如圖3 所示。
圖3 橫截面及其Dynamo 節(jié)點(diǎn)
注意到Nurb Curve 和Poly Curve 生成的圖形樣式不同,則Poly Curve 的橫截面圖形趨于尖銳,Nurb Curve 的橫截面圖形較為圓潤。在傳統(tǒng)建筑建模和模型應(yīng)用過程中,可根據(jù)建筑裝飾的風(fēng)格有針對性的采用。
柱頭豎向輪廓的直徑、高度是橫截面輪廓縮放、移動(dòng)的依據(jù)。為了快速獲得不同高度上輪廓直徑(x 值)和高度(z 值),較簡單的方法是將AutoCAD 中的輪廓x 值、z 值導(dǎo)出,并用List 的形式輸入Dynamo[9]。若要實(shí)現(xiàn)較高程度的參數(shù)化快速建模,則宜采用Dynamo 的數(shù)據(jù)處理節(jié)點(diǎn)獲取。本文采用的方法為:
(1)使用“族實(shí)例”(FamilyInstance)節(jié)點(diǎn)在項(xiàng)目原點(diǎn)導(dǎo)入專用輪廓族,由于輪廓是基于柱頭橫截面中心創(chuàng)建的,因此專用輪廓上各控制點(diǎn)的x 坐標(biāo)和z坐標(biāo)即為建模所需的柱頭不同高度上輪廓直徑(x 值)和高度(z 值);
(2)通過“選擇全部元素”(All Elements of Family Type)節(jié)點(diǎn)、“選擇元素曲線”(Element.Curves)節(jié)點(diǎn)獲取輪廓;可根據(jù)需要在項(xiàng)目中導(dǎo)入多種專用輪廓族(需對應(yīng)不同的族類型名稱),并使用“族類型”(Family Types)節(jié)點(diǎn)識(shí)別專用輪廓族后導(dǎo)入Dynamo 中;
(3) 利用Dynamo 的曲線等分節(jié)點(diǎn)(Curve.PointsAtEqualChordLength)拆分輪廓,隨后讀取拆分點(diǎn)的x 坐標(biāo)和z 坐標(biāo)。在拆分輪廓的過程中,可定義“曲線分段數(shù)”參數(shù)對節(jié)點(diǎn)進(jìn)行控制,從而在后續(xù)Solid.ByLoft 過程中獲得不同精度的三維模型。為了使輪廓控制點(diǎn)連續(xù),應(yīng)在List 中增加各段輪廓的起始點(diǎn)、結(jié)束點(diǎn)坐標(biāo);隨后將x 值、z 值分別存入List 中;讀取x 值、z 值后,利用Geometry.Scale 節(jié)點(diǎn)和Geometry.Translate節(jié)點(diǎn)對橫截面進(jìn)行縮放和平移處理即可。其中,縮放的基準(zhǔn)為儲(chǔ)存x 值的List;平移的基準(zhǔn)為基于z 值生成的平移向量。
基于縮放、平移后的橫截面,采用Solid.Byloft 節(jié)點(diǎn)依次導(dǎo)入橫截面List,即可生成所需的三維實(shí)體;圖4(a)展示了根據(jù)長燈籠型豎向輪廓形成的實(shí)體形狀。
圖4 柱頭三維模型
根據(jù)需要,短柱可采用多種參數(shù)化方式建模,如在revit 中創(chuàng)建建筑柱、結(jié)構(gòu)柱、內(nèi)建模型等。本文擬將柱頭、短柱合成一個(gè)參數(shù)化模型使用,主要使用Cone.ByCoordinateSystemHeightRadii 節(jié)點(diǎn)創(chuàng)建。其中:Height 參數(shù)引用了名為“短柱高”的參數(shù),startRadius、endRadius 參數(shù)引用了“柱頭相對直徑”參數(shù);后期只需修改“短柱高”參數(shù)即可控制柱頭實(shí)體形狀。生成的短柱實(shí)體如圖4(b)所示。
由Solid.Byloft 節(jié)點(diǎn)生成的柱頭包含大量曲面計(jì)算,對模型生成、加載、使用所需的計(jì)算資源需要很大[10]。模型生成測試表明,在Intel i7 處理器、8GB 內(nèi)存、4GB 顯存配置標(biāo)準(zhǔn)的工作站和Autodesk Revit 2019 的軟件環(huán)境中,將上述生成的短柱、端頭加載入Revit 項(xiàng)目文件中時(shí),軟件運(yùn)行速度明顯放慢,常出現(xiàn)計(jì)算機(jī)卡死、軟件崩潰的情況。因此,有必要對三維模型進(jìn)行一定程度的簡化,使之適用于Revit 建模和其他實(shí)際應(yīng)用。
本文中主要采用第三方Meshtoolkit 節(jié)點(diǎn)包對三維模型進(jìn)行Mesh 網(wǎng)格化處理,將包含大量曲面、曲線計(jì)算的模型簡化為一定數(shù)量的三角網(wǎng)格模型而實(shí)現(xiàn)。主要方法為:
(1)加載Meshtoolkit 節(jié)點(diǎn)包;
(2)向Mesh.ByGeometry 節(jié)點(diǎn)分別導(dǎo)入柱頭實(shí)體、短柱實(shí)體,生成實(shí)體的Mesh 三維網(wǎng)格。為使實(shí)體形狀變異程度較小,此處節(jié)點(diǎn)中的maxGridlines 參數(shù)設(shè)置為最大值(512);
(3)注意到不同實(shí)體所需簡化的精度不同,采用Mesh.Reduce 節(jié)點(diǎn)對已生成的Mesh 三維網(wǎng)格進(jìn)行簡化。將網(wǎng)格數(shù)量(短柱取值約為50,柱頭取值約為 1 000~1 500,可根據(jù)生成情況調(diào)整)參數(shù)導(dǎo)入triangleCount 參數(shù)中,得到簡化后的柱頭和短柱Mesh三維網(wǎng)格;
(4)使用Solid.ByJoinedSurface 命令,導(dǎo)入簡化后的柱頭和短柱Mesh 三維網(wǎng)格,重新生成簡化后的三維實(shí)體;
(5)將簡化后的三維實(shí)體合并,得到合并后的柱頭裝飾實(shí)體;圖4(c)展示了長燈籠型實(shí)體和短柱實(shí)體合并簡化后的最終形狀。
得到合并后的柱頭裝飾實(shí)體后,即可導(dǎo)入項(xiàng)目文件中作為構(gòu)件或族使用[11]。為便于模型的統(tǒng)一管理、材質(zhì)賦予,本文主要利用第三方Springs 節(jié)點(diǎn)包將生成的柱頭裝飾實(shí)體處理為族文件。具體做法為:
(1)加載Springs 節(jié)點(diǎn)包;
(2)創(chuàng)建柱頭專用的族樣板文件。為統(tǒng)一材質(zhì)賦予和材質(zhì)管理,需在族樣板文件中定義“柱頭材質(zhì)”參數(shù),并預(yù)先將材質(zhì)加載入文件中;
(3)定義族文件名稱。為便于管理,可以將輪廓形狀族名稱引用為族文件名稱;
(4)將柱頭裝飾實(shí)、族樣板文件、族文件名稱、族文件類型(常規(guī)模型)等導(dǎo)入Springs.FamilyInstance.ByGeometry 節(jié)點(diǎn),在Revit 項(xiàng)目文件中生成族文件。
本文利用上述基于Dynamo 的參數(shù)化建模方法,對廣西傳統(tǒng)壯侗民族建筑中的南瓜形、長燈籠型、流蘇燈籠形、收腰燈籠形柱頭裝飾構(gòu)件進(jìn)行了建模實(shí)踐:
(1)在Autodesk Revit 2019 環(huán)境中,編制了統(tǒng)一的柱頭建模腳本,創(chuàng)建了南瓜形、長燈籠型、流蘇燈籠形、收腰燈籠形柱頭的專用豎向輪廓族;
(2)創(chuàng)建項(xiàng)目文件,在Dynamo 面板導(dǎo)入腳本和專用豎向輪廓族,定義了柱頭直徑、棱數(shù)、棱高、材質(zhì)(松木)等參數(shù);
(3)分別通過手動(dòng)或自動(dòng)運(yùn)行的方式,在項(xiàng)目文件得到了根據(jù)輪廓形狀命名的柱頭族文件。
通過以上步驟創(chuàng)建的柱頭構(gòu)件,可根據(jù)建模和應(yīng)用需要自由放置、移動(dòng),也可在族參數(shù)中對材質(zhì)等參數(shù)進(jìn)行修改;可用于廣西傳統(tǒng)壯侗民族建筑的保護(hù)、記錄和創(chuàng)新應(yīng)用中。
圖5展示了基于Dynamo 腳本生成的、以族形式放置于項(xiàng)目文件中的南瓜形、長燈籠型、流蘇燈籠形、收腰燈籠形柱頭裝飾構(gòu)件。
圖5 基于Dynamo 生成的柱頭構(gòu)件(族)
本文通過對廣西壯侗民族傳統(tǒng)建筑柱頭基于Dynamo 的參數(shù)化建模研究和實(shí)踐表明:
(1)基于Dynamo 的參數(shù)化建模方法適用于廣西壯侗民族傳統(tǒng)建筑柱頭的南瓜形、長燈籠型、流蘇燈籠形等常見樣式的BIM 建模,解決了以往此類復(fù)雜裝飾構(gòu)件只能通過點(diǎn)云等模擬方法建模的難點(diǎn);
(2)采用基于Dynamo 的參數(shù)化建模方法時(shí),所需的輪廓形狀、基本參數(shù)數(shù)量相對較少,可在使用階段降低建模、調(diào)整和修改的難度;
(3)不同形狀的柱頭族文件采用通用的腳本生成,便于后期統(tǒng)一管理和應(yīng)用。
此外,相對于傳統(tǒng)BIM 建模方法,基于Dynamo的參數(shù)化建模還存在以下問題:
(1)為了得到通用性較強(qiáng)的建模腳本,本文使用了較復(fù)雜的編程邏輯,并調(diào)用較多類型的Dynamo節(jié)點(diǎn);腳本編寫的技術(shù)難度較大,時(shí)間和其他相關(guān)成本較高;
(2)腳本的使用對建模和設(shè)計(jì)人員的BIM 建模水平提出了較高的要求,可能限制了該種方法的適用范圍;
(3)基于Dynamo 的參數(shù)化建模方法尚難以處理某些具象的、缺乏幾何構(gòu)成相似性的柱頭,如動(dòng)物造型、繡球造型等高度復(fù)雜的構(gòu)件。
總之,基于Dynamo 的參數(shù)化建模方法在廣西壯侗民族傳統(tǒng)建筑的建模,特別是柱頭裝飾構(gòu)件的建模中具有可行性和一定的優(yōu)勢,可以為其他類似構(gòu)件的參數(shù)化建模提供新思路。在后續(xù)的研究中,尚需對基于Dynamo 參數(shù)化建模方法在廣西壯侗民族傳統(tǒng)建筑保護(hù)和創(chuàng)新應(yīng)用進(jìn)行更多的系統(tǒng)性總結(jié)和歸納,以得到更多可行的方案。