1. 程式人生 > >【CityEngine教程文件】 ---02 街道教程

【CityEngine教程文件】 ---02 街道教程

本文件為Esri CityEngine學習文件,是CityEngine_2011_Tutorials 官方示例教程2—— “Tutorial_02_Street_Generation__2011_2”的中文翻譯稿,由網友鼕鼕翻譯整理。

教程簡介

本教程將對CityEngine中建立街道網和建立精細街道模型的方法進行講解。自動生成的街道圖能夠反應出受到各種障礙的影響,如湖泊和地形等。在本教程的第二部分,將講解如何根據街道圖建立街道圖層。應用道路規則到道路資料上,能夠生成精細的街道模型。在本文的最後部分,展示了一些特定屬性資訊下生成不同樣式的道路網路。


第一部分:建立街道網

教程設定

將工程“Tutorial_02_Streets”匯入到你的CityEngine工作空間中; 通過【File】 →【New】 .. →【 CityEngine scene】新建嚮導在街道教程工程的場景(scenes
)資料夾中建立一個新的場景檔案,將其命名為“MyStreets.cej”。

建立障礙圖層

障礙地圖

在城市環境中,道路的放置受到很多的限制。如湖泊、河流或公園,這些地方很可能不會有道路網路分佈。在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。

地形圖層的“inspector”視窗資訊

小知識:你同樣可以修改其他圖層的屬性。如果你有另外一個不同的高程圖,選擇你的新地圖,“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”鍵

小知識:改變光線的方向,同樣能夠使地形的細節顯示得更清楚些。


對齊後的地形圖與shapes疊加和不疊加的效果圖

小知識:快速驗證修改效果的方法,是在“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(初始規則)。

下圖中以不同演示區分了不同型別的道路模型。初始規則是規則檔案十分重要的一部分。

5種不同的街道模型及其初始規則

應用規則檔案

現在執行最後一步:建立真實的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”場景,生成街道,以檢視本部分教程示例的結果。