本文档为Esri CityEngine学习文档,是CityEngine_2011_Tutorials 官方示例教程1—— “Tutorial_01_CityEngine_Basics_2011”的中文翻译稿,由网友冬冬翻译整理。
在此非常感觉网友冬冬,也欢迎更多的网友提供更多的技术文章(可在新浪微博上@ArcGIS_三维通知我们)在本栏中与大家分享。 教程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规则并建立建筑物模型。
CityEngine中,使用CGA规则来描述三维模型。一个CGA规则文件由若干规则组成,这些规则用来定义三维模型是如何生成的。在一个CGA规则文件被指定给某个形状(如建筑物地块)时,建筑物模型便开始生成。在本部分的教程中,我们将应用和修改一个由基本规则构成的简单的CGA文件。
在工具条中,单击Assign按钮并选中“building.cga”规则文件
另一种应用规则的方式,是直接从导航视窗(Navigator)中将规则文件拖拽到viewport视窗中的已选中形状上。
现在,Inspector视窗应如下图所示
在生成模型前,我们需要确认在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”等的起始规则。
你现在应该可以看到一些高度不同的建筑物了。