要访问 ArcGIS CityEngine 中的教程工程,请打开 CityEngine,然后在主菜单中单击帮助 > 下载教程和示例。 在选择教程或示例后,系统会自动下载工程并将其添加到 CityEngine 工作空间。

本教程是教程 14a:2D 和 3D 形状建模的延续,其中教授了基础手动绘制技巧。 在本教程中,您将了解更多有关处理地形的工具和选项:
- 将形状和街道与地形对齐
- 将地形与形状对齐
- 使用画笔工具编辑地形
- 在地形上绘制街道和形状
其中分为两个部分,模拟了 CityEngine 中的典型工作流:
- 通过将覆盖区和街道与地形对齐来准备场景背景。
- 通过准备场景、添加街道退缩尺度、创建体量以及在地形上添加植被来创建重建方案。
准备场景背景
在接下来的章节中,您将学习将街道、形状和地形匹配在一起的不同策略。 您将学习如何在地形上绘制街道以及消除因地形编辑产生的视觉伪影。 将背景数据准备就绪,以便可视化当前状况、执行分析任务以及设计未来的干预措施。
将街道和覆盖区与地形对齐
要将街道和覆盖区与地形对齐,请执行以下操作:
- 在 Navigator 窗口中展开 Tutorial_14_Polygonal_Modeling 教程文件夹。
- 双击 scenes 文件夹中的 14B_ ModelingOnTerrain.cej 文件以在视口窗口中打开场景

场景包含 3 个图层:
- 地形
- 街道
- 覆盖区
请注意,街道和覆盖区位于地形之下;在导入不含高度信息的已地理配准数据时,这是一个常见问题。 接下来,您将通过将街道和覆盖区移至地形上方来解决此问题。 您无需手动执行此操作,因为 CityEngine 提供了将街道与地形对齐和将形状与地形对齐工具来完成此任务。
注:
如果您希望了解有关如何导入数据的详细信息,请参阅教程 4:导入街道、教程 5:导入初始形状和基础知识:使用 GIS 数据教程。
- 首先,在场景编辑器窗口中右键单击 Streets 图层,然后单击选择对象以选择所有街道。

- 单击主工具栏中的将街道与地形对齐工具
以打开将街道与地形对齐对话框。

在将街道与地形对齐对话框中,可以选择两种对齐街道节点的方式:Project All 可将所有选定节点投影到选定地形上,而 Project Below 仅移动位于地形下方的节点。 所有街道节点目前均位于地形下方,因此设置哪个选项均没有影响。

如果使用高度地图选项,则可以选择节点要与之对齐的场景中的地形。 无论场景中存在的地形数量如何,始终可以选择 y=0 选项,这意味着所有街道节点均放置在地面上。

在 CityEngine 中,节点形状始终保持为平面。 将通过线段形状来均衡两个节点之间的高度差。 这意味着将街道与地形对齐之后,街道的某些部分可能仍然位于地形之下。 可以通过定义正偏移来解决此问题。 在本教程的后续部分中,您将学习如何将地形与街道形状对齐以解决此问题。

- 确保高度地图选项设置为 Terrain 并保留其他选项的默认设置。
单击完成以应用对齐。

现在,所有街道已与地形对齐。
- 在场景编辑器窗口中,从 Footprint 图层中选择所有形状。
- 单击主工具栏中的将形状与地形对齐工具
以打开该对话框。

将形状与地形对齐对话框和将街道与地形对齐对话框之间的唯一区别在于附加对齐选项:

Project All 和 Project Below 功能的作用方式相同,但前者针对形状折点,而非街道节点进行操作。 Project to Object Average 将计算形状所有折点的平均值,并将其设置为该值,用于展平非平面形状。 下图显示了转换选项之间的差异:

当放置在起伏地形上时,如果将建筑物覆盖区转换为最大值,则将出现明显漂浮效果;如果转换为最小值,则将出现下沉效果,所有边均位于地形之上或之下;如果转换为平均值,则部分形状会位于地形之上,部分形状会位于地形之下。
- 将对齐功能选项设置为 Translate to Minimum 可以避免出现需要进一步进行地形编辑的间隙;当使用获取地图数据时,CityEngine 将对覆盖区应用相同选项。 再次将高度地图选项设置为 Terrain,然后单击完成以应用对齐。

使用“转换为最大值”对齐覆盖区
虽然 Translate to Minimum 选项在大多数情况下效果良好,但在对齐形状后,仍可能出现大部分形状位于地形下方的情况。 对于陡峭地形上的大型形状来说,这是一个常见问题。 要修复此问题,请执行以下操作:
- 导航至场景右下角,或者单击书签菜单
中的 Align footprints to terrain。以下两个示例存在对齐问题。


- 手动选择这些形状,或者应用 Shapes to translate to maximum 选择集。


- 再次运行将形状与地形对齐工具,但这次将 Align function 选项设置为 Translate to Maximum。

效果将明显改善。
将地形与覆盖区对齐
使用 Translate to Maximum 选项对齐覆盖区后,建筑物的某些部分不再与地面接触。 要解决此问题,可以抬高地形,使其与形状的高度相匹配。
- 在形状仍处于选中状态的情况下,单击主工具栏中的将地形与形状对齐工具
。

选中添加边界复选框后,对齐将应用于形状区域,并在形状外部应用较小的偏移。

默认情况下,地形将在原始地形与已编辑地形之间垂直对齐。 如果使用平滑边界选项,则可以选择 Smooth range 或 Constant gradient 来定义过渡方法。


- 为了获得视觉上令人满意的效果,请将平滑边界设置为 Smooth range,将边界范围设置为 2 m,并选中边界缓动复选框。
保留所有其他选项的默认设置,然后单击应用和关闭。

现在,已沿所选形状抬高地形。
- 取消选择形状,然后放大左侧建筑物并仔细查看(书签:地形平滑)。

原始地形和已编辑地形之间的过渡处存在可见伪影。
- 可以使用地形平滑画笔工具
移除伪影。单击画笔后,视口窗口中将显示一个橙色圆圈,指示单击时将应用平滑的区域。 当圆圈位于地形下方时,其将呈现半透明状态。

- 在场景编辑器窗口中,选择 Terrain 图层。
- 对伪影进行平滑处理。
在视口窗口中,单击地形以在指针位置处应用平滑处理,然后拖动以持续进行平滑处理。

可以看到,使用默认设置的平滑强度过大。 按 Ctrl+Z 以撤销平滑处理。
在地形平滑画笔工具选项中,通过更改画笔大小、强度和平滑行为来微调画笔设置。 强度取决于地形的分辨率。
- 对于此场景中的地形,请将强度设置为 2.5%,并将画笔大小减小为 5 m 以获得更好的控制效果。 将圆圈定位在略超出建筑物的位置,然后沿着边缘进行拖动以平滑地形的陡峭区域。

- 继续沿着所有与地形对齐的建筑物边缘进行必要的平滑处理。
您的结果应类似于下图:

提示:
要沿着建筑物进行平滑,通常必须调整相机位置。 当停止并重新进行平滑时,新圆圈和前一个圆圈之间可能会出现可见边界。 要解决此问题,请使用 Continuous smoothing 选项并将强度设置为 0.1%,然后再次对受影响区域进行平滑处理。
很好,现在所有对象均已位于正确位置。
将地形与街道对齐
当进一步检查场景时,可以看到某些区域中的地形与街道重叠(书签:将地形与街道对齐)。 其原因在于街道几何取决于节点的高度。 节点形状与节点的高度相同,将通过车道形状来弥合两个节点之间的高度差。 要解决重叠问题,您将再次使用将地形与形状对齐工具
。

- 选择场景中的所有街道,然后单击将地形与形状对齐工具
。 - 保留上次对齐的设置。

- 依次单击应用和关闭。

现在,所有街道均完全可见。
添加缺失的街道
如果数据不完整,您可能需要通过追踪底层地图来添加一些数据。 在本示例中,由于部分街道缺失,在接下来的步骤中,您将学习如何在地形上手动绘制街道。
- 导航至河流上方的此区域(书签:添加缺失的街道)。

- 确保选择面街道创建工具
(G)。在工具选项中,将街道配置选项设置为 Neighborhood_Street_6m 并关闭重用邻近点的设置切换按钮,否则在开始绘制连接到现有街道的线段时,将不会分配所选配置。

- 首先在曲线的中心位置处单击一次,然后沿着街道进行追踪。 每个新节点都会自动放置在地形上。

- 连接到底部街道后,按 Esc 键以结束绘制模式。
根据将地形与形状对齐对话框中最近使用的设置,地形会自动与街道形状对齐。

创建桥梁
大多数情况下,最好确保街道与地形对齐。 但是,诸如桥梁、高架桥、坡道和桥墩等高架网络要素需要采用不同的方法。
- 进一步略微缩小,关注之前已绘制街道左侧的区域(书签:添加桥梁)。

可以从地形上看出,缺失的街道横跨河流。
- 选择面街道创建工具
。将街道配置选项设置为 Simple_Street_Generic_12m 并关闭对齐地形和相交线段切换按钮。

- 以底图为参考,从地形边缘开始追踪街道。

- 连接到另一侧的现有街道。

- 将街道绘制到地形图的末端。

- 单击编辑街道/曲线工具
,然后拖动绿色控点以水平调整曲线,使其与地图上的线相匹配。
- 调整相机位置,使其朝向更浅的角度,直到绿色控点由水平方向变为垂直方向为止。
拖动绿色控点,直到曲线更随沿现有地形为止。

- 相应地调整下一段街道。

- 选择桥梁之后的街道部分。

- 使用将地形与形状对齐工具
以对齐形状。
您已顺利完成第一部分;现在即可为场景准备重新开发提案。 在进行第二部分之前,请考虑保存场景。 作为一种备用方案,您也可以使用已完成所有之前步骤的 14B_ModelingOnTerrain_Redevelopment.cej 场景。

创建重新开发提案
在此部分中,您将创建两个方案:
- 现有条件
- 重新开发
重新开发的目标是移除现有建筑物,并将场地分为 3 个部分:A、B 和 C,每个部分具有不同的体量。 您将手动绘制 A 和 B 的地块和街区形状,并从 Esri.lib 中分配 CGA 规则以生成体量。 C 部分的体量已经预先制作完成,因此您可以将其作为静态模型导入并正确放置在场景中。

准备场地
接下来,您将设置场景,以便比较当前的建筑环境和新的重新开发提案。 为此,您将创建两个方案:
- 现有条件:包含场地上的现有建筑物以及之前已修改的地形图层。
- 重新开发:在现有地形的副本上显示新开发项目,您将进一步对其进行修改以符合提案。
- 导航至该场地并选择所有现有建筑物(书签:场地)。

- 使用快捷菜单或者按 Ctrl + X 剪切所选建筑物。

- 在场景编辑器窗口中,单击加号图标以创建一个名为 Existing Conditions 的新方案。

ID 最多可包含 4 个字符,并将显示在场景编辑器窗口中。 将其设置为 EC,然后单击确定。
- 按 Ctrl+V 进行粘贴并将之前剪切的建筑物添加至此方案。
将在场景编辑器窗口中创建一个新图层。 将其重命名为 Existing Buildings。

- 在场景编辑器窗口中选择 Terrain 图层。
在方案旁的检查器窗口中,单击编辑以将方案类型由默认图层更改为方案图层。

- 右键单击新创建的方案,然后单击复制。

- 将复制方案命名为 Redevelopment。

创建完成后,Redevelopment 方案将设置为活动方案。
- 从方案中移除 Existing Buildings 图层,并将地形图层重命名为 Terrain New。
在 RD 和 EC 方案之间切换以验证差异。 两种方案中的地形看起来仍然完全相同,但从现在开始,编辑内容仅应用于当前活动方案中的地形。
添加街道退缩尺度
接下来,使用参考线为场地添加街道退缩尺度。 为简化操作,所有退缩尺度均设置为距离人行道 7 m。 这与现有建筑物的退缩尺度也大致相同。
- 导航至场地右下角,然后单击参考线创建工具
。单击人行道的外边缘,然后开始拖动参考线。

- 在工具选项中启用强制平面切换按钮。
现在,虚线与人行道位于同一平面上,橙色铅垂线将指示绘制平面上的位置与地形之间的垂直距离。
将偏移选项设置为 7 m,然后单击以创建平面参考线。

- 继续添加参考线,直到场景看起来类似下图为止:

为了获得更好的可视效果,可以在可见性设置
中暂时隐藏地形,或者通过按 F9 键直接隐藏地形。
绘制体量的形状
导航至更接近 A 部分的位置。 对于此部分,您将绘制一个覆盖所有可用周长的形状。
- 选择面形状创建工具
(S)。确保已启用强制平面切换按钮,以便将第一个绘制点的高度值用于所有后续点,从而确保平面形状。 按 Y 键将视图设置为自上而下,然后在视图设置工具
中取消选中阴影/纹理上的线框 (7) 选项以暂时隐藏格网。 - 从第二行之前的建筑物右下角开始。

- 将下一个点放置在现有建筑物之间的参考线交叉点处。

- 沿着街道进行追踪,并在参考线的交叉点处添加点。

- 单击以将下一个点放置在左上角街道曲线附近。

在强制平面模式下,所有参考线将投影到当前绘制平面上。
- 捕捉到投影参考线,然后沿其移动鼠标,直到铅垂线位于第一行之前的建筑物左上角为止。

- 继续移至第二行建筑物的右上角,并添加一个点。 单击初始点或按 Enter 键以完成面。

- 将 /ESRI.lib/rules/Components/Massing/Urban_Block 文件夹中的 Perimeter_Stacked.cga 规则分配给新创建的形状,并启用阴影/纹理上的线框选项。

- 在检查器窗口中,将高度设置为 24,将深度设置为 12,并将 Lower_Side_Position 设置为 Front-Right-Corner。

- 对于 B 部分,绘制两个矩形形状以生成联排房屋;一个从上部参考线开始,另一个从下部参考线开始。
- 切换至矩形形状创建工具
(Shift+S) 工具。保持强制平面切换按钮处于开启状态。 对于两个矩形,使用长度 48 m,深度 18 m。

- 将 /ESRI.lib/rules/Components/Massing/Suburban_Block/ 文件夹中的 Rowhouses.cga 规则分配给两个形状。

- 在“检查器”窗口中,将上排体量模型的高度参数设置为 9 m,将下排体量模型的“高度”参数设置为 12 m。

放置 L 形状体量模型
C 部分已存在现有体量模型,可直接将其放入场景中。
- 在 Navigator 窗口中,将 assets 文件夹中的 L-Shaped Mass.glb 文件拖入场景中。


- 按 F9 键,在可见性设置中暂时隐藏地形。
单击变换移动工具
,然后启用调整位置和方向 (o) 切换按钮,将控点位置设置为底部外角。
- 按 F9 键再次打开地形可见性,然后使用橙色球将 L 形状体量模型移至下部参考线和之前建筑物位置的交点。

- 切换为变换旋转工具
并拖动绿色控点,直到 L 形状与参考线对齐为止。
- 按 F9 键再次隐藏地形。

可以看到建筑物的底部与参考线未完全对齐。 原因在于创建参考线时所依据的街道并非水平。 您也可以使用红色控点进行垂直对齐,但是,对于此项目来说,建筑物应该保持水平,因此可以保持原样。
- 再次显示地形,然后单击变换移动工具
。启用移动时启用复制切换按钮,然后拖动橙色球,直到其捕捉到上方参考线为止。

- 单击变换旋转工具
以旋转 L 形状,直到其与参考线对齐为止。
现在,您的场景应与下图类似:

将体量与地形对齐
完成体量模型后,下一步需要将建筑物与地形对齐。 对于每个部分,您希望采用不同的策略以获得最佳效果。
- 导航至更接近外围建筑物的位置。
可以看到,其与地形的融合效果非常好。 但是,在街面高度,应该存在通往建筑物的直接入口。

- 单击主工具栏中的地形编辑画笔工具
。在工具选项中,将画笔大小设置为 3.5 m,将平滑边界设置为 Smooth Range,将范围设置为 2.5 m,并启用缓动切换按钮。 由半透明外环来可视化平滑范围。
- 将吸管工具 (y) 悬停在街道上方,将地形高度设置为街道高度。
或者,可以从信息显示屏上读取指针位置处的高程,然后手动输入合适的值。

- 沿着建筑拖动,但不要悬停在街道上方,以避免产生新的重叠,因为此街道并非完全水平。

- 如有必要,请使用地形平滑画笔工具
来平滑已编辑地形和现有地形之间的区域。
- 重复上述步骤,在上层街道上创建建筑物入口区域。

- 同时选择两个行形状。

- 单击将地形与形状对齐工具
以打开该对话框。将平滑边界设置为 Constant gradient,将边界范围设置为最大值 50 m,将边界斜率设置为 33.33 degrees。

- 依次单击应用和关闭。

- 展平地形以使建筑物高程与街道高程一致。
为此,可以使用地形编辑画笔工具
;或者复制行形状并将其移至街道附近,然后使用之前的设置应用将地形与形状对齐工具
。
- 移除临时形状以查看结果。

- 对上一行重复对齐步骤,并根据需要平滑其他区域。

- 选择上方 L 形状。
- 单击变换移动工具
,然后拖动绿色箭头(y 轴),直到右下角接触地面为止。

- 要允许从街道进入底部 L 形状区域,请按照与处理 A 部分中的入口时相同的方式应用地形编辑画笔工具
。
将两个 L 形状体量模型手动对齐到地形上。注:
静态模型的地形对齐非常有限,因为仅考虑模型的枢轴点。 将地形与形状对齐已禁用;对于将形状与地形对齐,所有转换和投影选项都会产生相同的位置。
添加植被
接下来,您将在建筑物之间添加一些树木。 您将使用 CGA 规则将树木随机分配到某个区域,而无需手动种植每棵树木。 要应用该规则,首先需要绘制覆盖建筑物之间区域的形状。
- 单击面形状创建工具
。在工具选项中,确保关闭强制平面切换按钮。 对于此规则,您不希望形状为平面形状,否则树木将放置在地形以下或以上的位置。
- 绘制一个类似下图的面:

- 将位于 rules 文件夹中的 Plant_Distributor_Simple.cga 规则分配给形状。
Plant_Distributor_Simple.cga 规则是 ESRI.lib 中 Plant_Distributor.cga 规则的修改版,其中设置较少,并且 LowPoly 设置为树木的默认制图表达。


该规则根据随机种子值放置具有随机类型、大小和位置的树木。 更改该种子后,您将得到不同的变种。
- 要更改随机种子,请单击形状 > 更新种子或者在主菜单中按 Ctrl+Shift+G。
可以通过在检查器窗口中调整密度和分布属性来进一步自定义结果。 在下图中,密度设置为 0.2,分布设置为 Border。

- 对于 B 部分,在中间创建另一个面并分配相同的规则。
将地形与形状对齐以避免树干出现在地面以上。

- 对于 A 部分,在庭院内绘制一个面,使其与建筑物略微错开。

至此操作结束。 可以在 Existing Conditions 和 Redevelopment 方案之间进行切换。 禁用地形线框并隐藏可见性设置中的 Shapes 和 Graph Networks,以便更好地可视化您的工程。




