吳曉紅
(唐山學院土木工程學院,河北 唐山063000)
city engine 是一款城市三維建模和規劃設計的軟件。2001年city engine 正式走入市場,2008 年發布第一個商業版本,可導入任意模式的道路網,快速的設計構建城市布局。2009 年,cityengine 確定了以形狀語法來建模的核心技術,利用python 腳本構建三維模型等功能,增強了參數化建模。2010 年,city engine 增加了地形的導出工具和夜景城市功能,在大范圍的規則建模和城市設計規劃方面加入了新型的運行模式。2011 年,Esri 公司收購了procedural 公司,產品改名為Esricityengine,并將開發工作集中于城市設計和建模、GIS 集成的方向。加入了地理參考數據等四項新功能,分為兩種版本分別是基礎版和高級版。2012 年,cityengine 因其功能強大和實用、簡單的優勢,一下子成為了城市三維建模的首選軟件,到2015 年期間,city engine改善了操作界面,增強了導出功能,提升了用戶體驗效果。2016年,發布了city engine2016 版本,加強了可視化和及時操作性。2017 年,cityengine 引入了全新的交互式可見性分析工具,其中ViewCorridor 是視廊分析工具,主要是從觀看者的視角,看是否有建筑物遮擋。Viewshed 是視域工具,同樣是從觀看者的角度出發,確定其可見范圍。ViewDome 是一個360°的全景工具,同同樣是在觀看者的角度,360°的查看自己可見范圍和不可見范圍。這些工具能夠給用戶帶來新的體驗感受和效果。2018 年,CityEngine2018 發布。在可見性工具方面進行了進一步的拓展,進一步優化了導航和視圖窗口。現已更新到cityengine2019 版本,改進了交互式編輯工具和設計工具,繪圖和轉換工具更加的迅速,并且增強了多邊形繪制圓弧功能。可以連接到ArcGIS Urban,與之集成和數據交換。另外,2019 版本還為glTF 引入了導入和導出功能,VR 體驗更佳,全面支持python 語言,與ArcGIS 三維產品銜接變得更加的緊密,與之聯系成一個生態體系。
City engine 最大的特點就是可以用語言規則來進行批量化的三維建模,其建模思想是首先進行定義,然后通過優化和迭代等語言設計來創造各種細節,與傳統的手工建模方法相比,它能夠調用GIS 中的屬性信息,大大的調高了建模的效率問題。另外它還無縫的支持如shapefile、geodatabase、KML 等格式的GIS 數據,快速的導入場景中。除了語言規則建模,CityEngine也有交互式的工具,紋理貼圖就是人機交互式的建模,通過兩者的結合,是建模過程更加的簡潔和迅速。City engine 具有將場景里的所有三維模型一鍵打包并生成web scene 的特點,可在網頁上進行瀏覽,查看到動態的水域效果,進行定位查詢、日照設置等功能。
CPU(中央處理器)速度最小需要2GHz 雙核(至少core2 Duo compatible Intel/AMD))CPU,內存/RAM要16GB,磁盤空間2GB 或以上。顯卡中NVIDIA 要求最低GeForce 600 及以后/Quadro 600 及更高版本,AMD 要求Radeon HD 7000 及更高版本,Windows 和Mac 要求Intel-HD4400 及更高版本,在Linux和Windows 上要使用最新的可用驅動程序(OpenGL 4.1 或更高版本)。網絡硬件方面需要有一個網絡適配器。支持的系統有:Windows10Pro 和Enterprise(64 位[EM64T]);Windows8.1Pro和Enterprise(64 位[EM64T]);Windows7 終極、專業和企業(64 位[EM64T]);Windows Server 2019 標 準 和 數 據 中 心(64 位[EM64T]);Windows Server 2016 標 準 和 數 據 中 心(64 位[EM64T]);Windows Server 2012 R2 標準和數據中心(64 位[EM64T]);Windows Server 2012 標 準 和 數 據 中 心(64 位[EM64T]);Windows Server2008R2 標準、企業和數據中心(64 位[EM64T]);macOSMojave;macOSHigh
基于CityEngine 的建筑物三維建模流程:
①通過各種方式獲取目標建筑的二維地圖矢量數據、衛星影像數據、道路中心線數據,用Arc GIS 軟件對其進行數據類型的轉換,矢量數據的修改,添加屬性信息等操作,使其成為統一的、合格的項目數據格式。外部墻體等紋理數據通過用相機拍攝照片的方式獲取,拍攝過程中盡量保持其是正射的狀態。
②數據準備好之后用cityengine 創建新的項目和場景并打開。
③制定規則,建立三維模型。通過拉伸、組件分離、切割和縮放等一系列規則的編寫,將其規則賦予在相應的二維地圖矢量地塊上,最終生成基本的三維模型。
④對生成的三維模型進行紋理貼圖,使建筑物的立體三維效果更加的形象和逼真。
⑤紋理貼圖之后保存目標物體三維模型,選中所有模型并根據需要的格式進行導出。
在開始進行規則建模之前,首先需要對建模區域進行數據的收集。主要包括區域矢量數據、區域衛星影像數據以及各種紋理貼圖數據。其中矢量數據又包括物體(建筑、湖泊、綠化等)的底面數據以及道路的中心線數據。紋理貼圖數據比較瑣碎和細致,包括建筑物的門、窗、房頂、墻壁、道路、水面、草地等,都需要采集其紋理貼圖信息,正射的紋理貼圖數據讓模型更加貼近現實事物,建模效果更好。
衛星影像數據可以通過百度地圖、谷歌地圖、搜狗地圖等途徑進行下載。本文所使用的是BIGEMAP 地圖下載器,先定位框選目標區域,然后下載高分辨率的衛星影像數據作為建模區域底面數據,保存為tif、jpg、png 等格式。在下載影像數據之前,需要注意選擇和設置影像數據的坐標以及分辨率,在后續的創建shape 格式數據時,一定要設置與影像數據相同的投影坐標系統。
矢量線性數據的獲取基本上有兩種方式:a. 在ArcMap 中,以衛星影像數據為基礎底圖,在其基礎上對建模區域進行矢量化提取并建立不同的圖層,如教學樓、宿舍樓、綠地等等。所有對象都提取完之后,收集建筑物、道路等對象的屬性信息,屬性信息越詳細越好。b.在ArcGIS 中打開CAD 線性數據,因為其格式不能用GIS 軟件進行編輯,所以需要對其進行預處理。先利用Arc GIS 中的轉換工具將CAD 數據轉為Shapefile 格式,再將其與影像數據進行配準,以影像數據為基準,用配準工具把Shape數據往影像上配。注意線性數據的投影坐標系統必須要與影像數據保持一致。其次收集對象屬性信息,設定建筑物的層高、層數、墻寬等信息,建立相應的屬性表。
在將矢量數據導入到cityengine 中時,如果遇到導入失敗或者死機的情況,可以試著在ArcCatalog 中建立一個數據庫,將底圖矢量數據統一放在這個數據庫下。再次導入到city engine 中,一般情況下問題會迎刃而解。
Cityengine 建模系統的核心就在于CGA 規則的編寫與實現過程,通過用CGA 規則定義道路、建筑物、植物等模型的形態和位置等信息來創建三維模型。其原理是簡單化、具體化、細節化的將三維立體模型結構單獨拆開再逐個的詳細分解,對其執行循環和迭代等操作,最終實現整體建模。
CGA 規則中包含所有建模過程中用到的函數,是一個非常全的代碼庫。它最基本的用途是將客觀存在的物體進行簡單化,通過迭代等語法編寫將物體進行細節化處理,方便用戶去解決相關的問題。CGA 的執行過程是從代表原始模型的字母名稱開始,由代表原始模型的字母名稱開始向規則執行之后代表的生成模型的字母名稱運行,程序運行結束,原始模型的字母名稱失效。同時,在相同的規則文件后面不可以再出現同樣的模型名稱。CGA 規則執行的模式是在原有的二維平面地塊基礎上,通過拉伸和切割操作創造出基礎的建筑框架,然后通過切割、替換、縮放等函數進行模型的精細化操作最后用紋理函數、投影設置函數等對建筑物進行紋理貼圖,在多種語言規則函數的變換與共同作用下,生成最終的三維模型。
建筑物的規則建模要通過重點分析不同種類的建筑物外形特點和結構特征,來明確自己的編寫思路。整個規則編寫的過程大致分為以下幾步:
(1)基礎框架的構造,主要用到拉伸(extrude)函數、分離(comp)函數、切割(split)函數等使其成為一個建筑體。
(2)模型的精細化,主要是對模型進行細化切割,用切割(split)函數把窗戶、門等細節部分單獨切割出來。
(3)紋理貼圖,常用到紋理(texture)函數、投影設置(setupProjection)函數和UV 投影(projectUV)函數。
除去這些對建筑物整體的規則建模以外,還有對屋頂模型的編寫。在city engine 中,屋頂主要有四種樣式,分別是單坡式屋頂(roofShed)、雙坡式屋頂(roofGable)、四坡式屋頂(roofHip)和金字塔式屋頂(roofPyramid)。如果在建模的時候想要看到所編寫規則的切割情況是否正確,可以通過打開3D View 窗口中的Wireframe on Shaded/textured(模型線框顯示)來查看。
利用CGA 規則語言建模,實現了在較少人工干預的情況下快速構建建筑區域三維模型的目的,且效果良好,可以為建筑規劃設計、虛擬旅游、數字化城市建設提供參考。