【CityEngine教程文件】 ---02 街道教程
本文件為Esri CityEngine學習文件,是CityEngine_2011_Tutorials 官方示例教程2—— “Tutorial_02_Street_Generation__2011_2”的中文翻譯稿,由網友鼕鼕翻譯整理。
教程簡介
本教程將對CityEngine中建立街道網和建立精細街道模型的方法進行講解。自動生成的街道圖能夠反應出受到各種障礙的影響,如湖泊和地形等。在本教程的第二部分,將講解如何根據街道圖建立街道圖層。應用道路規則到道路資料上,能夠生成精細的街道模型。在本文的最後部分,展示了一些特定屬性資訊下生成不同樣式的道路網路。
第一部分:建立街道網
教程設定
將工程“Tutorial_02_Streets”匯入到你的CityEngine工作空間中; 通過【File】 →【New】 .. →【 CityEngine scene】新建嚮導在街道教程工程的場景(scenes建立障礙圖層
在城市環境中,道路的放置受到很多的限制。如湖泊、河流或公園,這些地方很可能不會有道路網路分佈。在CityEngine中,你可以建立一個障礙圖層(obstacle layer)來控制這種表現方式。
建立一個新的地圖圖層【Layer】 → 【New Map Layer...】;
選擇Obstacle(障礙),並單擊下一步;
從地圖資料夾(maps)中選擇檔案“obstacles.png”作為障礙檔案;
將對齊位置設定為中心點,並保持比例按鍵按下;
將X size(X的大小)設定為3000;
單擊Finish結束設定。
提示:如果在viewport視窗中沒有顯示障礙圖層,則通過檢視設定選單切換到紋理陰影模式。
建立地形圖層
我們建立的街道需要遵循高程地形。這將通過建立一個由灰度高程圖生成的地形圖層來獲得。
在檔案導航(Navigator)視窗的地圖資料夾中,選擇影象檔案“elevation.jpg”;
將影象拖拽到你的3D視窗中;
從地圖資料夾中選擇“topo.png”作為紋理貼圖檔案;
將max. elevation(最高海拔)設定為250;
與前面一樣,將對齊位置設定為中心點,並將保持比例按鈕按下;
將X size設定為3000;
單擊“Finish”結束;
在場景視窗中選擇障礙(Obstacle)圖層,在Inspector視窗(可以通過【Window】 →【Inspector】方式開啟)中,將其Elevation Offset修改為-15 。這樣做可以防止在ViewPort視窗
生成街道網路
現在可以開始生成街道網路。
通過點選viewport視窗中的空白處來取消對障礙圖層的選擇;
通過【Graph】→【Grow Streets...】方式啟動街道生長對話方塊;
將街道數修改為1500;
在“Environment Settings”組中,從“Heightmap”的下拉選項中選擇你的地形圖層;
從“Obstaclemap”的下拉選項中選擇你的障礙圖層;
單擊【Apply】,並關閉視窗。
解決道路形狀的衝突
在生成或匯入道路模型時,街道和十字路口的形狀可能會產生衝突,這些衝突在圖中以帶紅色點的線段顯示。
這些衝突是由圖形的重疊導致的,通常情況是由於道路中心線上結點間距離過短造成的。你可以嘗試使用手工編輯道路網的方式來解決衝突,也可以使用圖形清理工具“Resolve Conflicts(解決衝突)” 選項(【Graph】->【Cleanup Graph】)。
使地塊(Lot)建立不可用
我們現在只對街道感興趣,因此:
在“Viewport”視窗中單擊右鍵,【Select】->【Select All】,選擇場景中的全部要素;
選擇Inspector”視窗中的“Blocks”選項卡;
將“shapeCreation”屬性設定為“false”,通過單擊“Off/On”開關。
此操作將在街區(blocks)中建立地塊形狀的功能設定為不可用。
小知識:當你處理較大資料量的道路網時,此功能可以用來阻止街道的形狀建立以提高軟體效能。選擇一些道路和結點,在它們的“Inspector”視窗中的“Shapes”選項卡中,將“shapeCreation”的引數設定為false,能夠使這些街道線和結點無法生成道路和路口。
互動式街道編輯
已生成的道路網能夠進行互動式優化:
在空白區域建立更多的街道,選擇一條或臨近的幾條街道,在街道生長對話方塊中調整你要生成的街道數,並單擊【apply】按鈕就會自動在該條路段上自動生成相應數量的街道(隨機生成)。
選擇你希望刪除的街道,通過選單欄中的【Edit】->【Edit】進行刪除;
手工建立新的街道,使用“Create Street”工具(快捷鍵:G);
轉換道路,設定道路寬度,修改道路彎曲,使用“Edit Street”工具;
使用變換調節器來實現單一或一組道路的轉換,旋轉及伸縮。
在Inspector視窗中修改道路圖形的屬性
選中一個或多個道路段;
開啟“Inspector”視窗中的“Segment”選項卡;
通過設定“streetWidth”引數,修改道路寬度;
高度再調整
場景中的地形海拔看起來有些高。
在“Scene Editor”視窗中,選中地形圖層;
開啟圖層屬性“Layer Attributes”組;
將高程屬性的最大高度值“max height”由250改為220。
小知識:你同樣可以修改其他圖層的屬性。如果你有另外一個不同的高程圖,選擇你的新地圖,“viewport”視窗中的地形也會隨之改變。
現在你需要根據新的地形讓街道網重新適應地形:
在“Scene Editor”視窗中選擇街道網圖層;
開啟圖形適應地形話框:【Graph】->【Align Graph to Terrain...】;
選擇圖形適應地形方式 :“Project All”;
選擇地形圖層;
單擊【Finish】排列圖形元素。
使地形適應形狀
使用【Layer】->【Align Terrain to Shapes...】功能,地形會發生變化並與形狀貼合。
選中場景中的全部街道圖形;
開啟圖形對齊對話方塊:【Layer】->【Align Terrain to Shapes...】;
使用預設設定,單擊【Finish】結束。
當地形圖層的線框圖被啟用之後,適應後地形圖的改變看起來會更明顯些。
在“scene”視窗中單擊街道網格圖層前的眼睛圖示,使其不可見,再選中地形圖層
在“Inspector”視窗的圖層屬性(Layer Attributes)組中,將線框圖的透明度(Wireframe Alpha)設定為0.3
在3D視窗設定中,使線框圖模型處於啟用狀態(viewport視窗上方的工具條)或者按一下“7”鍵
小知識:改變光線的方向,同樣能夠使地形的細節顯示得更清楚些。
小知識:快速驗證修改效果的方法,是在“Inspector”視窗中切換“elevationDelta”的啟用狀態(在地形圖層選中的狀態下)
小知識:用來構建地形的原始高程圖並沒有被修改
地形解析度
當使用一張高程圖建立地形的時候,高程圖的解析度決定地形圖的解析度。可以在“Inspector”視窗的“layer attribute”組中對分辨進行手工調整(在地形圖層選中狀態下)
較高的解析度有助於提高對齊後的地形圖的精確度
小知識:需要注意,地形圖層設定較高的解析度會降低3D視窗的顯示效能(取決於你電腦的顯示卡效能)
你可以直接開啟“Tutorial_02_Streets/scenes/streetTutorial_01.cej”檢視本教程第一部分的結果。
第二部分:使用CGA規則生成街道模型
教程設定
你可以繼續在已經完成的場景中進行接下來的學習,或者直接開啟“Tutorial_02_Streets/scenes/streetTutorial_01.cej”場景。
小知識:為了更清楚的看到道路圖層,通過單擊“Scene”視窗中的眼睛圖示來隱藏地形圖層。
道路形狀型別
可以看到圖中有5中不同型別的街道形狀被建立了,這些形狀已經被賦予了"start rule(初始規則)",在“Inspector””視窗中顯示了被選中形狀的“start rule(初始規則)。
下圖中以不同演示區分了不同型別的道路模型。初始規則是規則檔案十分重要的一部分。
應用規則檔案
現在執行最後一步:建立真實的3D街道模型。應用CGA規則“rules/simpleStreets.cga”到街道形狀上。每一個不同型別的街道形狀都有一個獨特的CGA初始規則作用在其上。這些初始規則的描述如下。
街道(Street):根據路寬應用街道貼圖;
人行道(Sidewalk):應用人行道貼圖,分佈道路小品如行道樹、路燈等;
十字路口(Crossing):應用道路底色貼圖;
交叉路口(Junction):同十字路口;
連線入口(JunctionEntry):同十字路口。
檢視“simpleStreets.cga”規則檔案的細節,規則語法。參考CGA模型語法教程進一步學習該語法。
在“Scene”視窗中選擇“Streetnetwork”圖層
【Shapes】->【Assign Rule File...】選擇“Tutorial_02_Streets/rules/simpleStreets.cga”規則檔案
框選一些街道模型
單擊上方工具條中的生成按鈕
你同樣可以開啟“Tutorial_02_Streets/scenes/streetTutorial_02.cej”場景,生成街道,以檢視本部分教程示例的結果。