教程 17:沙漠城市

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

探索 Desert City 场景文件

  1. 双击位于场景文件夹中的 Desert City 场景文件。
  2. 在随即打开的第一个对话框中单击生成

    由此将触发所有元素的模型生成。

    Desert City 所有元素的主要视图。

  3. 导航该场景并探索建筑物、街道和植被。

    您将注意到,默认仅生成所有建筑物的一小部分。 这显然是为了节省内存资源。

  4. 编辑一些规则参数,例如 Building_HeightBuilding_UsageLevel of Detail
  5. 选择更多的一些建筑物覆盖区或街道形状(单击鼠标左键或绘制选择矩形)。
    注:

    如果您使用选择矩形选择“左-右”或“右-左”,则将出现不同的行为!

  6. 单击工具栏中的生成按钮或按 Ctrl+G 以触发新选定形状的模型生成。
    规则修改后的城市概览。

重新创建完整场景

完整的 ‘Desert City’ 场景由 GIS 数据和规则集组成。 GIS 数据包括属性化覆盖区形状、街道中心线、植被标记、墙线和电力线。 所有这些数据都包含在所谓的“地理数据库”文件中,简称“GDB”。 由于使用了不同的数据类型(线、面、点),因此每个对象类型都将存储在不同的图层中。

  1. 打开 Desert_City_terrain_only 场景文件。
    在 ArcMap 中显示的 Desert City 地理数据库图层。

导入 GIS 数据

  1. 导航器中,定位该数据文件夹。 从该数据文件夹内,将 DesertCityGDB.gdb 直接拖放到 3d 视口中。 由此将触发 GDB 导入对话框。
    CityEngine 文件地理数据库导入对话框
  2. 取消选中 TerrainExtent 图层。
  3. 单击下一步,在以下设置中,仅激活合并距离2合并节点选项,然后单击完成

将导入的 GIS 数据与地形对齐

在场景编辑器中,可以看到已创建所有图层,但由于所有元素都位于 0 高程处,因此尚未显示任何内容,由此需要将其投影到正确的高度并相应地重新对齐地形:

  1. 取消激活以下图层的可见性:PowerLines、Structures、Vegetation。
  2. 请使用较大的选择矩形来选择视口中的所有可见内容。
  3. 单击图形菜单 > 将图形与地形对齐...
  4. 投影到地形,偏移0.4 米
  5. 单击形状菜单 > 将图形与地形对齐...
  6. 平移至形状的最大值偏移0.2 米
    注:

    平移将保持形状水平和平坦。

  7. 单击图层菜单 > 将图形与地形对齐...
  8. 对齐地形 +- 250 米
  9. 反转所有图层的可见性,因此以前隐藏的图层现在可见,反之亦然。
  10. 对于即将进行的对齐,我们将保持地形为当前状态。
  11. 投影图形(墙和电力线),偏移–0.5 米
  12. 将形状(结构和植被标记)平移至形状的最大值,平移-0.5 米
    “对齐形状”对话框

CGA 规则分配

现在,将相应的 CGA 规则分配给每种特定的对象类型。 为此,最简单的方法是依次激活每个图层的可见性,以便能够轻松选择所有形状以进行规则分配

请注意,可通过多种方法来分配规则。 最常见的方法包括:

  • 从导航器中将规则直接拖放到视口中的所选形状。
  • 使用检查器窗口中的分配按钮。
  • 右键单击图层。

由于标记形状(结构和植被)非常小,因此通过拖放来分配规则将非常棘手。 因此,最好仅在这些图层上单击鼠标右键并选择同一图层中的所有对象,然后通过导航器来分配规则。

Streets

> Desert_City_Streets.cga

PowerLines

> Desert_City_Powerlines.cga

Walls

> Desert_City_Walls.cga

Buildings

> Desert_City_Buildings.cga

Structures

> Desert_City_Structures.cga

Vegetation

> Desert_City_Vegetation.cga

增大城市中心的纹理分辨率

CityEngine 将用于 3D 显示的所有纹理(= 栅格图像)存储在图形卡的视频内存中,因此 CityEngine 中使用的所有纹理文件都存在建议的最大分辨率,约为 4000x4000 像素,这对于较大区域来说可能不够详细。 (另请参阅纹理 - 栅格文件:CityEngine-ArcGIS 中的概念)。

为了至少局部地提高建筑物下方的地形纹理质量,需要激活动态街区细分,并将这些新的地块形状用作建筑物下方的地面。 在此附加地面上,将映射更高分辨率的纹理。

  1. 首先,隐藏除 Street 图层之外的所有图层。
  2. 通过左右矩形选择来选择一些街区。 在检查器中,转至“街区”选项卡,将 shapeCreation 参数更改为 true,然后将 lotAreaMin 和 Max 设置为 2’0004’000
  3. 在每个街区中,选择一个形状,然后选择同一组中的所有形状(右键单击快捷菜单)。 选择形状后,分配规则 Desert_City_ParcelTexturing.cga
  4. 单击生成

重点干预:新学校

用于本章的 GDB 在数据文件夹中为 DesertCity_Intervention.gdb。 对实际手动创建该数据不感兴趣的用户可以跳过本章。

将重新创建一个关注现实世界的干预。 在市中心附近的相应街区中,计划在以下选定城市街区中新建一所带有足球场的学校。

城市中心街区中新学校位置的影像。

由于用于编辑数据的 GIS 应用程序为 ArcMap,因此将在 ArcMap 中打开该数据集。

  • 需要在 ArcMap 中创建空白地图,然后将示例数据集中的要素类导入为图层 DesertCityGDB.gdb
  • 对于实际干预,将创建一个新的 GDB,例如将其命名为 MyIntervention.gdb。 最好直接在硬盘上工程的数据文件夹中定位该 GDB。
  • 创建以下要素类:
  • 面要素:名为 Intervention_Buildings

    添加以下属性:

    • Building_Height 浮点型)
    • Building_Usage文本型)
  • 面要素:名为 Intervention_Soccer_Field

    不添加任何属性:

  • 点要素:名为 Intervention_Vegetation

    添加以下属性:

    • Size 浮点型)
  • 线要素:名为 Intervention_Walls

    添加以下属性:

    • width(必须采用小写形式!) (浮点型)
  • 创建不同的要素:绘制一个或多个具有真实高度 [米] 的学校建筑物,并将 Building_Usage 属性设置为学校
  • 创建一些墙作为折线,将宽度设置为 0.4 米。 将直接在 CityEngine 中映射宽度值。
  • 创建一个矩形的足球场。
  • 分布一些植被点,并将其大小属性设置为介于 215 米之间的真实值。
  • 保存 GDB。
  • 除非您已在工程的数据文件夹中创建了 GDB,否则请将其移动或复制该位置。
  • 刷新 CityEngine 中的工作空间:文件 > 刷新工作空间

导入干预数据

如第 2 章中所述,将新 GDB 拖放到 3d 视口中以触发导入。 当然,您可以选择您自己创建的 GDB,也可以选择示例随附的 GDB:DesertCity_Intervention.gdb

  1. 将形状和图形与地形对齐。
  2. 分配规则。 系统还提供用于足球场的规则。
  3. 如果在错误的方向创建足球场,请将属性 Orientation_Change 设置为 true
    已导入的足球场地形