1. 程式人生 > >【CityEngine教程文件】---01 基礎教程

【CityEngine教程文件】---01 基礎教程

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

在此非常感覺網友鼕鼕,也歡迎更多的網友提供更多的技術文章(可在新浪微博上通知我們)在本欄中與大家分享。 教程02和教程03內容也己有鼕鼕翻譯完畢,隨後會為大家更新上去。

教程簡介

本教程講解如何利用CityEngine快速地從無到有建立一個城市,通過對CityEngine各部分功能的講解使讀者瞭解完整的工作流程。您將學習到怎樣建立一個新的工程,建立道路網以及設定“形狀建立引數”。最後,您將學習使用規則編輯器並生成城市建築模型。


第一部分:建立一個新的工程

建立新工程和場景

第一步,建立一個新的CityEngine工程。

選擇【File】—>【New】—>【CityEngine】—>【CityEngine project】

點選【Next】,將工程命名為“FirstCity”並單擊【Finish】

完成以上操作,一個新的工程便建立好了並出現在在檔案導航視窗中(預設佈局下檔案導航視窗位於CityEngine介面的左上角)。這些自動生成的資料夾用來儲存你的工程資料,如assets資料夾(用以儲存貼圖和引用的模型部件資料),rules資料夾(用以儲存規則檔案)等。

第二步,建立一個新的場景:

選擇【File】—>【New】—>【CityEngine】—>【CityEnginescene

 確認新場景所儲存的資料夾位置(/FirstCity/scenes),將該場景命名為“firstcity_01.cej”並點選【Finish】

我們的工作空間中現在包含了一個新的空工程以及一個場景檔案:


拷貝規則和資源

在本教程的後面部分,我們需要使用規則檔案和資源(assets)用以生成建築物模型。因此我們現在需要從教程配套的示例工程中拷貝這些檔案。

首先,我們將教程1的示例工程匯入到當前的工作空間

下載並匯入教程工程(教程1)到我們的工作空間中

接下來,我們將所需要的檔案從已下載的教程1工程中拷貝到我們的新建工程中。

定位到教程1的資源(asset)資料夾。


使用複製和貼上(Ctrl+C和Ctrl+V)將資源

asset)資料夾中所有的檔案與資料夾拷貝到我們新建工程的資源(asset)資料夾中。

使用同樣的方法,將規則資料夾中的 “building.cga” 規則檔案拷貝到新工程的規則資料夾中。

現在,你的導航視窗應如下圖所示:


現在,我們已經為第二部分的建立道路網和建築模型工作做好了準備。

第二部分:街道和建築物

建立道路網

第一步,建立道路網

單擊viewport視窗將其啟用

選擇【Graph】—>【Grow Streets...】

選擇預設設定來建立我們的城市。

單擊【Apply】,並關閉對話方塊。單擊ViewPort視察上方工具欄中的“Frame All”按鈕(或單擊鍵盤上的“a”鍵)在Viewport視窗中全圖顯示你新建的道路網。

現在,你的Viewport視窗中應顯示如下圖所示的道路網以及預設的建築物形狀。


現在我們來看一下場景編輯器視窗“Scene Editor”。可以發現一個名為“Streetnetwork 1”的新圖層已經生成。


修改“形狀建立引數”

現在我們改變一些形狀建立引數使場景看起來更加有趣。

點選“a”鍵使當前場景全圖層顯示。

按住滑鼠左鍵,從右向左拖拽一個矩形框將場景中的全部元素都包含在內。


 找到位於CityEngine視窗右上側的Inspector面板,單擊"Blocks"選項卡

 開啟"Block Parameter",將看到“形狀建立引數”。


將型別(type)設定為偏移細分(Offset Subdivision

將最小面積(lotAreaMin)設定為300

將最大面積(lotAreaMax)設定為600

將偏移寬度(offsetWidth)設定為20

 將代替分割遞迴(subdivisionRecursive)設定為否(false)


仔細觀察場景中建築物形狀產生的變化


接下來進入第三部分,學習怎樣對建築物形狀應用CGA規則並建立建築物模型。

第三部分:應用CGA規則並生成模型

CGA規則簡介

CityEngine中,使用CGA規則來描述三維模型。一個CGA規則檔案由若干規則組成,這些規則用來定義三維模型是如何生成的。在一個CGA規則檔案被指定給某個形狀(如建築物地塊)時,建築物模型便開始生成。在本部分的教程中,我們將應用和修改一個由基本規則構成的簡單的CGA檔案。

應用一個CGA規則檔案

在3D視窗中,單擊某個形狀的內部以選中它。


在工具條中,單擊Assign按鈕並選中“building.cga”規則檔案

另一種應用規則的方式,是直接從導航視窗(Navigator)中將規則檔案拖拽到viewport視窗中的已選中形狀上。


現在,Inspector視窗應如下圖所示


瀏覽CGA規則並設定初始規則

在生成模型前,我們需要確認在Inspector視窗中已選定形狀的初始規則被設定為了“Lot”,通常這種設定為預設設定。需要注意的是初始規則的名稱由CityEngine自動生成,但可以進行修改。

繼續保持某形狀在前一節中被選中的狀態,找到Inspector視窗中的初始規則(Start Rule)屬性。

雙擊規則檔案開啟規則編輯器(Rule Editor)視窗。在左側(黃色標籤部分)顯示的是規則的屬性,在右側(灰色標籤部分)顯示的是實際規則的圖表。

點選下圖紅色圓圈內所示的按鈕使編輯視窗最大化。


將規則定位在規則圖的根部,在這裡的根部指的是“Lot”。這個規則將是已選定形狀的起始規則。


再次檢視inspector視窗,確認在"Start Rule"處選定的是"Lot"(“Lot”為預設值),如下圖所示。


現在我們已經做好生成真實建築模型幾何體的準備了。


生成第一個建築物模型

確認選定形狀仍然在選中狀態,單擊生成(Generate)按鈕。

建築物模型出現在了選定形狀的上方


單擊選中模型,使用右鍵選單中的"Delete Model"選項來刪除模型。


再次生成模型。

我們現在已經做好修改模型的準備。首先,我們將修改一個規則的屬性——building height(建築物高度)。接下來,我們將為建築物新增一個不同的屋頂,這樣我們就需要一個新的CGA規則。

修改規則屬性“建築物高度”

高度在相應的規則檔案中被設定為了隨機值,使用更新並生成模型(Update seed and Generate Models)命令多次生成建築物,觀察每一次生成的建築物的變化。



檢視規則編輯器中建築物高程的預設定義:


在Inspector視窗中,定位到規則引數“Rule Parameter”。

找到高程"height"引數將其值修改為“18”。引數值的字型變成粗體,為使用者定義值。


再次重複點選更新和生成模型命令(Update seed and Generate Models)。可以發現建築物模型的高度不再變化。你可以通過點選數字“18”左側的黑色三角圖示將其重置為預設行為。

接下來,我們為屋頂新增一個新的規則。

新增一個屋頂規則

在inspector視窗中,通過點選規則檔案開啟規則編輯器


找到“Lot”規則並點選其右上角的“V”形符號將其展開。


在“comp”部分,右鍵點選“shape”,在右鍵選單中進行選擇,新建一個新的規則。


將新規則命名為"Roof"。


觀察新規則是如何生成並被連線到"Lot"節點上的。


為了建立一個屋頂模型,我們現在插入一個人字形屋頂圖形(即通常說的雙坡頂)。右鍵單擊“Roof”規則中的“Shape”,找到roofGable(angle, overhangX, overhangY)操作。


觀察roofGable操作的生成情況。點選三個引數值分別輸入20, 1, 0作為屋頂的引數。


單擊生成(generate)按鈕,檢視新生成的模型。


生成一個小的城市模型

在最後一個步驟裡面,我們會將規則應用到較大數量的形狀上。為了給較大數量的形狀分配規則,我們將使用選擇選單。

選擇已生成的模型。

右鍵單擊3D視口,並選擇“Select -> Select Objects of Same Group”以選擇大量的形狀。


單擊assign按鈕,將building.cga規則分派給選中的形狀。

單擊“Generate”按鈕生成模型。注意:根據你的選擇,將會彈出一些關於起始規則“LotInner”或類似的警告對話方塊。你可以忽略這些對話方塊,因為我們對所有的形狀分配規則,但我們的規則並不包含名為“LotInner”等的起始規則。


你現在應該可以看到一些高度不同的建築物了。