CityEngine 初探

教程简介

 

本教程讲解如何利用CityEngine快速地从无到有创建一个城市,通过对CityEngine各部分功能的讲解使读者了解完整的工作流程。您将学习到怎样建立一个新的工程,创建道路网以及设置“形状创建参数”。最后,您将学习使用规则编辑器并生成城市建筑模型。

CityEngine 初探

 

第一部分:创建一个新的工程

 

创建新工程和场景

 

第一步,创建一个新的CityEngine工程。

选择【File】—>【New】—>【CityEngine】—>【CityEngine project】

点击【Next】,将工程命名为“FirstCity”并单击【Finish

完成以上操作,一个新的工程便建立好了并出现在在文件导航窗口中(默认布局下文件导航窗口位于CityEngine界面的左上角)。这些自动生成的文件夹用来存储你的工程数据,如assets文件夹(用以存储贴图和引用的模型部件数据),rules文件夹(用以存储规则文件)等。

第二步,创建一个新的场景:

选择【File】—>【New】—>【CityEngine】—>【CityEnginescene

 确认新场景所保存的文件夹位置(/FirstCity/scenes),将该场景命名为“firstcity_01.cej”并点击【Finish】

我们的工作空间中现在包含了一个新的空工程以及一个场景文件:

CityEngine 初探

 

拷贝规则和资源

 

在本教程的后面部分,我们需要使用规则文件和资源(assets)用以生成建筑物模型。因此我们现在需要从教程配套的示例工程中拷贝这些文件。

首先,我们将教程1的示例工程导入到当前的工作空间

下载并导入教程工程(教程1)到我们的工作空间中

接下来,我们将所需要的文件从已下载的教程1工程中拷贝到我们的新建工程中。

定位到教程1的资源(asset)文件夹。

CityEngine 初探

使用复制和粘贴(Ctrl+C和Ctrl+V)将资源asset)文件夹中所有的文件与文件夹拷贝到我们新建工程的资源(asset)文件夹中。

使用同样的方法,将规则文件夹中的 “building.cga” 规则文件拷贝到新工程的规则文件夹中。

现在,你的导航视窗应如下图所示:

CityEngine 初探

现在,我们已经为第二部分的创建道路网和建筑模型工作做好了准备。

 

第二部分:街道和建筑物

 

创建道路网

 

第一步,创建道路网

单击viewport视窗将其**

选择【Graph】—>【Grow Streets...】

选择默认设置来建立我们的城市。

单击【Apply】,并关闭对话框。
单击ViewPort视察上方工具栏中的“Frame All”按钮(或单击键盘上的“a”键)在Viewport视窗中全图显示你新建的道路网。

现在,你的Viewport视窗中应显示如下图所示的道路网以及默认的建筑物形状。

CityEngine 初探

现在我们来看一下场景编辑器视窗“Scene Editor”。可以发现一个名为“Streetnetwork 1”的新图层已经生成。

CityEngine 初探

 

修改“形状创建参数”

 

现在我们改变一些形状创建参数使场景看起来更加有趣。

点击“a”键使当前场景全图层显示。

按住鼠标左键,从右向左拖拽一个矩形框将场景中的全部元素都包含在内。

CityEngine 初探

 

 找到位于CityEngine窗口右上侧的Inspector面板,单击"Blocks"选项卡

 打开"Block Parameter",将看到“形状创建参数”。

CityEngine 初探

 

将类型(type)设置为偏移细分(Offset Subdivision

将最小面积(lotAreaMin)设置为300

将最大面积(lotAreaMax)设置为600

将偏移宽度(offsetWidth)设置为20

 将代替分割递归(subdivisionRecursive)设置为否(false)

CityEngine 初探

仔细观察场景中建筑物形状产生的变化

CityEngine 初探

接下来进入第三部分,学习怎样对建筑物形状应用CGA规则并建立建筑物模型。

 

 

第三部分:应用CGA规则并生成模型

 

CGA规则简介

 

CityEngine中,使用CGA规则来描述三维模型。一个CGA规则文件由若干规则组成,这些规则用来定义三维模型是如何生成的。在一个CGA规则文件被指定给某个形状(如建筑物地块)时,建筑物模型便开始生成。在本部分的教程中,我们将应用和修改一个由基本规则构成的简单的CGA文件。

应用一个CGA规则文件

在3D视窗中,单击某个形状的内部以选中它。

CityEngine 初探

 

在工具条中,单击Assign按钮并选中“building.cga”规则文件

另一种应用规则的方式,是直接从导航视窗(Navigator)中将规则文件拖拽到viewport视窗中的已选中形状上。

CityEngine 初探

 

现在,Inspector视窗应如下图所示

CityEngine 初探

 

浏览CGA规则并设置初始规则

 

在生成模型前,我们需要确认在Inspector视窗中已选定形状的初始规则被设置为了“Lot”,通常这种设置为默认设置。需要注意的是初始规则的名称由CityEngine自动生成,但可以进行修改。

继续保持某形状在前一节中被选中的状态,找到Inspector视窗中的初始规则(Start Rule)属性。

双击规则文件打开规则编辑器(Rule Editor)视窗。在左侧(黄色标签部分)显示的是规则的属性,在右侧(灰色标签部分)显示的是实际规则的图表。

点击下图红色圆圈内所示的按钮使编辑视窗最大化。

CityEngine 初探

 

将规则定位在规则图的根部,在这里的根部指的是“Lot”。这个规则将是已选定形状的起始规则。

CityEngine 初探

 

再次查看inspector视窗,确认在"Start Rule"处选定的是"Lot"(“Lot”为默认值),如下图所示。

CityEngine 初探

 

现在我们已经做好生成真实建筑模型几何体的准备了。

 

 

生成第一个建筑物模型

 

确认选定形状仍然在选中状态,单击生成(Generate)按钮。

建筑物模型出现在了选定形状的上方

CityEngine 初探

 

单击选中模型,使用右键菜单中的"Delete Model"选项来删除模型。

CityEngine 初探

 

再次生成模型。

我们现在已经做好修改模型的准备。首先,我们将修改一个规则的属性——building height(建筑物高度)。接下来,我们将为建筑物添加一个不同的屋顶,这样我们就需要一个新的CGA规则。

 

 

修改规则属性“建筑物高度”

 

高度在相应的规则文件中被设置为了随机值,使用更新并生成模型(Update seed and Generate Models)命令多次生成建筑物,观察每一次生成的建筑物的变化。

CityEngine 初探

CityEngine 初探CityEngine 初探CityEngine 初探

 

查看规则编辑器中建筑物高程的默认定义:

CityEngine 初探

在Inspector视窗中,定位到规则参数“Rule Parameter”。

找到高程"height"参数将其值修改为“18”。参数值的字体变成粗体,为用户定义值。

CityEngine 初探

再次重复点击更新和生成模型命令(Update seed and Generate Models)。可以发现建筑物模型的高度不再变化。你可以通过点击数字“18”左侧的黑色三角图标将其重置为默认行为。

接下来,我们为屋顶添加一个新的规则。

 

 

添加一个屋顶规则

 

在inspector视窗中,通过点击规则文件打开规则编辑器

CityEngine 初探

找到“Lot”规则并点击其右上角的“V”形符号将其展开。

CityEngine 初探

在“comp”部分,右键点击“shape”,在右键菜单中进行选择,新建一个新的规则。

CityEngine 初探

将新规则命名为"Roof"。

CityEngine 初探

观察新规则是如何生成并被连接到"Lot"节点上的。

CityEngine 初探

为了建立一个屋顶模型,我们现在插入一个人字形屋顶图形(即通常说的双坡顶)。右键单击“Roof”规则中的“Shape”,找到roofGable(angle, overhangX, overhangY)操作。

CityEngine 初探

观察roofGable操作的生成情况。点击三个参数值分别输入20, 1, 0作为屋顶的参数。

CityEngine 初探

单击生成(generate)按钮,查看新生成的模型。

CityEngine 初探

 

生成一个小的城市模型

 

在最后一个步骤里面,我们会将规则应用到较大数量的形状上。为了给较大数量的形状分配规则,我们将使用选择菜单。

选择已生成的模型。

右键单击3D视口,并选择“Select -> Select Objects of Same Group”以选择大量的形状。

CityEngine 初探

单击assign按钮,将building.cga规则分派给选中的形状。

单击“Generate”按钮生成模型。注意:根据你的选择,将会弹出一些关于起始规则“LotInner”或类似的警告对话框。你可以忽略这些对话框,因为我们对所有的形状分配规则,但我们的规则并不包含名为“LotInner”等的起始规则。

CityEngine 初探

你现在应该可以看到一些高度不同的建筑物了。

CityEngine 初探