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