要访问教程CityEngine中,单击 帮助>下载教程和例子…。选择教程或示例后,项目会自动下载并添加到您的工作区。
创建地形
通常,CityEngine 场景的起点是创建地形。可以从简单的图像文件或数字高程模型 (DEM) 创建地形。在后一种情况下(例如,使用 GEOTif 文件)支持地理配准信息。
目前,CityEngine 仅支持基于图像的地形(灰度高度图);它不支持 3D 网格。如果您只有 3D 网格或任何其他数据类型,则需要使用诸如 Daylong Graphics 的 Leveler (http://www.daylongraphics.com/) 之类的工具将其转换为高度图。
- 打开Part_1_Start.cej文件。
- 打开地图文件夹,然后将elevation.jpg 图像拖放到视口中。该地形导入对话框。
- 使用浏览按钮将纹理文件更改为 topo.png 文件。
- 编辑边界,使对话框看起来像下面的屏幕截图。如果加载没有地理定位信息的图像,其像素分辨率将设置为地形尺寸。注意保持比例和对齐按钮(默认值居中;通过单击图标进行编辑)。
- 编辑最小和最大高程值(= 黑白像素值高程),然后单击完成。创建地形地图图层后,您可以在场景编辑器中选择它并在检查器窗口中查看其属性。笔记:您可以编辑地形分辨率(地形平面的细分数)和线框 Alpha值。后者显示地形上的线框线,如果在视口的显示选项中激活了着色/纹理上的线框选项(使用7切换)。
- 探索地形的属性。
种植街道——高度图和障碍图
种植街道——与地形对齐
在教程 1 中,您学习了如何在没有高程的平面网格上生长街道。现在,您将使用Grow Streets算法直接根据实际地形高程调整增长的街道。
- 单击Graph > Grow Street打开Grow Streets对话框并展开Environment Settings。
- 将高度图下拉选项更改为您的地形名称。
- 种植一些街道,看看它们如何自动与地形对齐。
成长街道-障碍图
您可能已经注意到,“增长街道”功能会随机增长街道。这包括您可能根本不想拥有街道的区域。为了让您将这些区域留空并最大程度地减少手动清理过程,CityEngine 具有ObstacleMap功能。障碍物地图是黑白图像,其中亮度定义了可增长区域。要创建障碍物地图,请完成以下步骤:
- 在场景编辑器中右键单击您的街道,然后选择 删除以删除您之前生成的街道。
- 单击图层>新建地图图层>障碍物。
- 浏览到教程地图文件夹中提供的 barrier.png 图像文件。
- 定义与地形范围相同的范围。
- 让频道保持亮度。
- 的障碍阈值定义了图像的亮度,其中区分障碍物和非障碍物。
一旦障碍创建层,选择它并检查其层属性在检查标签。您将找到以下代码,它确定属性映射,在本例中为布尔值 (true/false):
attr obstacle = brightness < 0.5
- 在场景编辑器中隐藏障碍物层,使其不会在视觉上干扰地形。
- 再次打开Grow Streets对话框并指定障碍物贴图。
- 再次成长。
请注意街道如何尽量避开图像的黑色区域。
- 要在特定区域中增加更多街道,请在增加更多街道之前选择一些现有的图形段。
Streets–Cleanup Graph 工具
在某些情况下,CityEngine 的动态城市布局系统可能无法将街道网络的冲突部分解决为正确的形状。在这种情况下,CityEngine 以红色突出显示冲突的图段。
要解决此问题,您可以通过编辑街道宽度、曲线半径或其他参数来手动修复问题,但这可能是一项繁琐的工作。一种快捷方式是使用清理图工具。
- 找到一个冲突的图段(或创建一个)。
- 选择冲突区域周围的对象。是否也选择了形状或其他对象类型并不重要。
- 单击工具栏上的清理图工具。在清理图形对话框。
- 探索设置,并阅读帮助中的 Cleanup Graph 工具文档。
- 您的网络现已清理完毕,类似于以下屏幕截图:
对齐对象
实际上,街道通常沿着地形表面或建筑物放置在地形上的位置。场景中新创建的对象很少直接正确对齐(例如,在导入 2D GIS 数据之后),因此需要特定的对齐工具。CityEngine 提供了一系列命令来将某些对象类型与其他对象类型对齐。
常见的对齐类型如下表所示:
目的 | 对齐类型 | 例子 |
---|---|---|
图段 | > 地形 | 将街道段投影到地形上 |
静态形状 * | > 地形 | 将足迹形状投影到地形上 |
地形 | > 形状 | 将地形与形状(街道银行等)对齐 |
笔记:
*手动绘制或导入的形状称为静态形状。CityEngine 自己的形状创建系统——动态城市布局——动态创建形状,因此它们被称为动态形状。一个重要的细节是动态形状不能与对齐工具对齐。由于动态形状是作为(动态)块的子项创建的(街道也是如此),因此块细分参数包含用于对齐的特定参数。可以在本教程的以下部分找到有关块细分的其他信息。
- 选择场景中的所有图形段。
- 单击工具栏上的将图形与地形对齐按钮。
- 选择您的地形作为Heightmap。
- 添加0.2的偏移量。
- 单击完成。
请注意,由于街道已经对齐,因此不会有太大变化。根据您的地形,您可能需要调整最大提升距离值。有关设置的更多信息,请参阅帮助菜单F1 中的手册。
在此场景中,没有静态形状,因此继续将地形与您已有的形状对齐。
- 选择场景中的所有形状(是否还选择了图形段也没有关系)。
- 单击工具栏上的将地形与形状对齐按钮。
请注意您的地形是如何适应的。根据您的地形,差异可能不是很明显。要获得更强的效果,请编辑地形的最大高度。
- 在检查器中打开地形的图层属性。
- 多次切换启用高程差值复选框。注意地形如何在未对齐和对齐状态之间来回切换。这意味着必须以某种方式存储对齐数据(elevationDelta)。
- 保存您的场景。
- 刷新项目的数据文件夹。(例如,右键单击文件夹,然后使用上下文菜单中的刷新)。数据文件夹现在包含一个与场景文件同名的新文件夹。除非您在第一次地形对齐后保存场景,否则此文件夹和deltaMap不存在。 下图显示了存储更改的(16 位)增量映射(灰色 = 无变化;黑色 = 较低;白色 = 较高)。在您的示例中,图像可能看起来完全不同。
动态城市布局
对象类型
动态城市布局是一组工具和功能,可让您快速创建城市布局。结果是一系列形状,准备好与 CGA 规则一起使用以创建 3D 模型。主要元素是街道和街区。如果街道中心线在物理上包围了一个区域(并且网络完全连接),则会创建街区。块用虚线表示,您可以选择它。
街道段和街区都有各自的参数,这些参数驱动着它们的孩子的动态形状的创造。
当您探索迄今已发展的街道时,您会发现有三种可选对象类型,它们的参数驱动和影响形状创建:图形段、图形节点和块。
图段
图节点
图节点是图段的“末端”。
块
所有三种对象类型的共同点是shapeCreation参数,它可以让您确定这些特定的对象类型是否可以生成形状。例如,您可能希望获得街区中的街道形状,但没有细分。同样,动态形状是图段、图节点和块的形状创建的结果。
您现在可以执行以下操作:
- 探索不同对象类型的所有参数。
- 创建一些环形交叉路口,并编辑它们的半径。
- 创建一些死胡同。
您现在将专注于Block Subdivision。每个细分算法都有自己的参数并创建特定的模式。
笔记:
形状创建是一项纯粹的交互式任务,使用动态城市布局。Shape Creation 和 Block Subdivision 是与 CityEngine 的规则系统 (CGA) 无关的任务。形状必须首先存在(创建),然后才能将 CGA 规则分配给形状以用于最终生成 3D 模型。
尽管如此,还是可以选择使用 CGA 细分完整的块形状(或任何其他地块形状)。
街道——创造
除了导入图形段的选项外,CityEngine 在工具栏上提供了两个专门用于创建街道图的工具:Freehand Street Creation和Polygonal Street Creation工具。
- 使用这两种工具绘制一些街道。
- 转到图表 >街道创建设置。该街创建设置对话框。此对话框可让您定义街道画笔。
- 探索街道创建设置选项,并绘制更多街道。
弯曲段
要创建带有曲线段的街道,请完成以下步骤:
- 选择一些街道段。
- 探索Graph > Set Curves Straight和Set Curves Smooth命令。选择单个图形段后,您还可以编辑精度参数来设置曲线街道的细分精度(段数)。请记住,弯曲的街道会产生许多多边形;最好将它们保持在最低限度。
街道——编辑
- 单击工具栏上的编辑街道/曲线工具或按 C键作为键盘快捷键。
- 编辑一些街道和人行道的宽度。
- 编辑一些切线。根据视角,只能编辑水平或垂直切线。
街道——生成模型
- 探索您在 Inspector 中创建的街道的 StartRules。有五种类型(您需要更改某些街道节点的类型参数才能找到它们)。
- 将提供的Street Construction Simple.cga规则分配 给所有街道,并生成模型。
- 在动态重新生成模型的同时继续编辑街道。
街道图案示例
作为展示的工作流示例
- 创建一个单独的街道。
- 具有栅格模式的第一个生长阶段。
- 具有栅格模式的第二个生长阶段。
- 这两个网络是相连的。
参数集
- 光栅图案。
- 径向图案。
- 有机模式。
- 在未成年人上带有光栅图案的径向主要街道。
- 有机圆形图案。
- 蜂窝样式。
- 眼镜风格。
- 栅格的有机分布。