【摘 要】針對城市規劃行業目前普遍使用的AutoCAD軟件所繪制的圖形層次較低且缺乏關聯、智能性不足、方案修改維護成本高,以及現有參數化設計系統技術門檻較高等問題,提出一套面向城市規劃的參數化設計新技術,并開發了相應的系統。文章共分三部分,本文為第三部分,重點介紹了參數化三維建模技術,其中包括CGA規則庫的構建策略和自動化生成腳本的設計等關鍵技術,并通過實際規劃案例,證明了所述技術和系統的可行性和高效性。第一、二部分分別給出了系統整體架構思路及基于屬性塊的城市圖元參數管理方法、DXF-SHP文件格式自定義轉換方法等。
【關鍵詞】參數化設計;城市規劃;CityEngine;三維建模
1 引言
目前城市規劃行業普遍使用計算機輔助設計軟件為AutoCAD,它所繪制的圖形存在著層次較低且缺乏關聯、智能性不足、方案修改維護成本高,以及現有參數化設計系統技術門檻較高等問題,嚴重制約了城市規劃設計工作的效率。為此,提出一套面向城市規劃的參數化設計新技術,并開發了相應的系統。文章共分三部分:第一部分介紹了系統的整體架構思路和基于屬性塊的城市圖元參數管理方法;第二部分介紹了DXF-SHP文件格式自定義轉換方法;本文為第三部分,重點介紹了參數化三維建模技術,其中包括CGA規則庫的構建策略和自動化生成腳本的設計等關鍵技術,并通過實際規劃案例,證明了所述技術和系統的可行性和高效性。
2 參數化三維建模技術
2.1 CGA規則庫的構建策略
CGA(Computer Generated Architecture)是CityEngine平臺為三維城市設計的一種形狀語法。由它定義的文法規則可以驅動二維平面生成復雜三維形體。CityEngine平臺提供了大量的CGA命令來組裝不同的流水線(即不同的文法規則)。從理論上講,只要參數足夠多、文法規則足夠復雜,單個文法規則也可以描述一個復雜城市的構造過程。然而這將會使文法規則過于復雜、難以維護,且不利于共享。為此本文提出“一事物一規則”的思路,建立一個種類豐富、數量龐大的規則庫,便于規則的共享和靈活調用。本文根據城市地物類型不同,將規則庫中的CGA文法規則劃分為“建筑”、“道路”、“地塊”三大類,并且制定命名規則,以便于管理和調用。其中建筑類文法規則文件以“B+唯一編號”的形式命名(表示Building),而道路類以“S”開頭(表示Street),地塊類以“L”開頭(表示Lot)。文法規則庫的整體框架如圖所示。
由于本系統的客戶端和服務端是分離的,這就存在一個規則庫中文件如何調用的問題。為此,本文設計了一個以“STYLEID”為核心的調用機制,具體方法如下:首先,定義一個CGA文法規則,并以“STYLEID”(例如“B201209171121001”)作為該文法規則的文件名(不包含后綴,文法規則的后綴為“.cga”)。其次,在服務網站的風格庫中新建一個風格,在該風格的參數列表中增加一個名為“STYLEID”、值為“B2012091 71121001”的參數。然后,規劃設計者從服務網站的風格庫中獲得該新建風格的參數列表,并將其作為屬性與城市地物圖元綁定,構成帶屬性的塊參照。此時塊參照包含一個名為“STYLEID”、值為“B201209 171121001”的屬性。接著,設計人員將編輯并保存好的DXF文件經過服務網站上傳到服務器,服務端獲得DXF文件后啟動自動生成腳本,腳本在處理到上述塊參照時,先將讀取“STYLEID”參數的值“B201209171121001”,再到從規則庫中找到對應的規則文件——即“B201209171121 001.cga”文件,將該CGA文件指定給該圖元,完成其他參數的讀取和映射,即可建立三維實體。
2.2 自動化生成腳本的設計
CityEngine平臺提供了一個Python腳本編輯窗口和一個基于Python語言的“CE”模塊,借此用戶可以使用Python命令自動實現許多自定義的功能,大大擴展CityEngine的功能,自動化生成主要也是基于此實現的。這里的“CE”模塊類似于Python語言自帶的“os”、“random”等模塊,封裝了大量對CityEngine內部空間、屬性數據進行讀寫、編輯的API函數,是自動化生成的核心。當然,整個自動化生成腳本還包括許多輔助功能,具體如圖所示:
圖2 自動化生成腳本工作流程
首先,由于用戶上傳的項目文件組織難以預料,因此必須對原始文件進行整理,本文設計的Python函數整理流程如下:(1)獲取項目壓縮包,并將其解壓到當前目錄下的同名文件夾(根文件夾)中;(2)將所有根文件夾下各層級的壓縮包,分別解壓到它們的同目錄下的同名文件夾中;(3)將根文件夾下所有子文件夾中的文件全部轉移到根文件夾下;(4)將根文件夾下所有空子文件夾刪除。其次,在獲取DXF文件后,需要調用DXF-SHP程序進行格式轉換。為了確保該程序能夠被Python腳本調用,我們在設計DXF-SHP轉換程序,提供了一個含參命令行調用的接口。當程序啟動時,先獲取2個命令行參數,如果參數存在并且一個是DXF文件目錄,另一個是SHP文件保存路徑,那么就隱藏程序窗口并進行處理,處理完畢后自動結束程序。接著需要清理工程,我們在每個規劃方案生成前后,都安排了該步驟,這是為了保證每個項目的獨立性,避免項目之間相互影響和產生不發預見的錯誤。這里的清理包括三維數字場景清理和文件系統清理兩方面。工程清理完畢后,即可開始導入SHP文件,并開始生成方案(道路、建筑)模型。
對于這里以建筑為例,簡要介紹一下模型生成的方法。首先需要獲取一個初始shape圖形,設置圖元名稱(平臺稱為“StartRule”)為“Lot”;然后根據“STYLEID”屬性值從規則庫中找到相應文法規則,賦予該圖元(的“RuleFile”參數);接著系統自動完成shape自帶屬性與文法規則定義參數的匹配;最后自動生成建筑實體。其對應的Python代碼如下:
3 實驗分析
為驗證所述技術及系統的可行性和高效性,這里以浙江省余姚市陸埠鎮的村莊整治規劃為例,進行參數化設計實驗。實驗的已知數據為該村莊的規劃構思局部平面圖,包含道路中心線和建筑封閉輪廓線,如圖所示。實驗目標是由本文所述系統自動創建三維化的詳細規劃方案。
首先利用參數管理插件,在AutoCAD平臺上將合適的參數與每條道路中心線和每個建筑輪廓線綁定,特征相同的元素可以一起綁定,效果如圖 4所示。在此,我們對建筑對象設計的參數有層數FLR_NBR、首層層高FST_HEIGHT、其他層高F_HEIGHT,對道路設計的參數有左側人行道寬度L_WIDHT、車行路面寬度M_WIDTH、右側人行道寬度R_WIDTH,此外兩者共有的參數有精細等級LOD(用于控制生成模型的精細程度)、風格編碼STYLEID。
最后,將文件另存為DXF格式,通過服務網站上傳到服務器。服務端后臺隨即啟動自動化生成腳本,按照上文介紹的流程自動生成三維化的、詳細的規劃方案,并提供下載,最方案終效果如圖 5所示。圖中我們可以看到,由該系統生成的規劃方案具有非常豐富的細節、逼真的紋理和三維空間形態。更重要的是,如此詳細的規劃方案從參數管理到上傳、再到獲得最終結果,總耗時僅20分鐘左右。如果使用傳統的3DMax、Sketchup等三維輔助設計軟件進行手工制作,要達到相同的效果可能需要花費數天時間。
當然,本系統的優勢除了處理速度快,更重要的還在于使規劃方案的調整變得異常方便。例如當需要調整圖 -a中局部建筑的層數和風格時,只需將DXF文件中的對應建筑輪廓圖元(屬性塊)的屬性數值稍作調整,重新上傳到服務器,數分鐘后即可得到成果(如圖 -b所示)。
a. 調整前
b. 調整后
4 總結與展望
本文作為面向城市規劃的參數化技術與系統的組成部分之一,研究了參數化三維建模技術,其中包括CGA規則庫的構建策略和自動化生成腳本的設計等關鍵技術。至此,三個部分構成了一個完整的面向城市規劃的參數化設計技術與系統。最后的實際規劃案例證明了系列技術與系統的有效性和高效性。然而目前該系統的主要功能是根據既有的規劃構思圖,自動、快速得生成詳細的規劃方案,即方案的設計部分其實還是由人工完成的。對該套技術和系統進行拓展,使其能模擬人工構思設計的過程,實現方案設計部分的計算機自動化,將是未來的重點研究內容之一。
基金項目:“國家國際科技合作計劃”項目(2010DFA92720) 及\"863\"項目(2009AA12Z121)資助
作者簡介:
吳寧(1984-),男,博士,研究方向為城市規劃新技術應用研究;
陳秋曉**(1972-),通訊作者,男,博士、副教授。