教程 5:导入初始形状

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

球体城市模型

导入数据是使用 CityEngine 的重要部分。 支持多种格式,包括 shapefile、地理数据库、OBJ、FBX、USD、glTF、DWG 和 IFC。 有关详细信息,请参阅通过对话框导入

大多数文件类型可以导入为形状或静态模型,并具有以下描述:

  • 形状用作 CGA 生成的基础。 典型示例是覆盖面数据。
  • 导入后,可以对静态模型进行缩放、旋转和平移,但无法使用 CGA 对其进行进一步处理。 典型示例是地标建筑物。

在本教程,您将学习如何导入数据格式并提供对其进行进一步处理的工作流。

导入 shapefile

要导入 shapefile,请执行以下操作:

  1. 单击主菜单中的文件 > 新建 > CityEngine > CityEngine 场景以创建场景。
  2. 导航器窗口中展开 Tutorial_05_Import_Initial_Shapes 教程文件夹。
  3. /data/shp_footprints 文件夹中的 footprints.shp 文件拖动到视窗窗口中。
  4. 无投影下选择以米为单位的原始数据作为场景坐标系。

    “以米为单位的原始数据”场景坐标系

    由于 shapefile 中的数据以米为单位,并且未进行地理配准,因此场景坐标系设置为以米为单位的原始数据

  5. 单击确定

    已导入的 shapefile 数据

  6. 选择单个覆盖区以查看随 shapefile 导入的对象属性。

    对象属性将显示在 Inspector 窗口的对象属性下。

    Shapefile 属性

分配规则并生成模型

现在,您将在已导入的覆盖区上使用 CGA 规则生成简单的拉伸。 extrude.cga 规则可将覆盖区拉伸到在高度对象属性中定义的高度。

  1. 双击 rules 文件夹中的 extrude.cga 规则文件以在 CGA 编辑器窗口中将其打开。

    attr height = 10
    
    @StartRule
    Lot --> extrude(height)

  2. 视窗窗口中选择所有覆盖区。
  3. extrude.cga 规则拖动到所选形状上以分配该规则。

    来自 shapefile 的已拉伸模型

    打开 footprints_from_shp.cej 场景以查看已生成的模型。

导入地理数据库数据

导入地理数据库数据的工作流类似于 shapefile 导入。

  1. 创建场景。
  2. data 文件夹中的 footprints.gdb 文件夹拖动到视窗窗口中。

    注:

    footprints.gdb 文件将在导航器窗口中显示为文件夹。

    随即出现文件地理数据库对话框,用于选择要从地理数据库导入的图层。

    “文件地理数据库”对话框

    注:

    对于其他导入选项,例如生成桥梁简化图形清理图形,可以单击下一步

  3. 单击 完成

    系统将提示您选择一个场景坐标系。 对话框中建议的坐标系取自地理数据库中的数据。

    场景坐标系

    由于地理数据库中的数据与以上 shapefile 相同,因此您可以应用相同的步骤以根据覆盖区生成建筑物模型。

导入 PolylineZ 形状

要导入具有 Z 值的形状,请执行以下操作:

  1. 创建场景。
  2. /data/sphereCity_shp 文件夹中的 sphereCity.shp 文件拖动到视窗窗口中。

    随即出现选择 shapefile 数据坐标系对话框。

  3. 由于 shapefile 数据以米为单位,并且未进行地理配准,因此请选择以米为单位的原始数据
  4. 单击确定

    由于 sphereCity.shp 文件没有用于定义场景坐标系的 .prj 文件,因此随即出现选择场景坐标系对话框。

  5. 选择以米为单位的原始数据作为场景坐标系。

    通过对数据和场景使用相同的坐标系,导入时不会对数据应用任何重投影。

    球形城市形状

随即将新的 sphereCity 形状图层添加到场景编辑器窗口,并且由于覆盖区形状具有 z 值,因此它们将在视窗窗口中显示为 3D 面。

探索属性

此数据集中定义了两个属性:ruleFilestartRule

注:

在 GIS 应用程序中使用此特定语法来定义导入后直接分配的规则和初始规则。 由于无需手动分配,因此可节省大量时间。

GIS 应用程序中的属性表将类似于以下内容:

属性表

  1. 选择单个形状(球体的一个面)。

    Inspector 窗口中,对象属性将显示在对象属性下,自动分配的规则将显示在规则下。

    spherecity 规则和属性

  2. Scene Editor 窗口中选择 sphereCity 图层的所有形状。
  3. 单击生成 生成 (Ctrl+G) 以生成建筑物。

    球体城市模型

    spherecity_from_shp.cej 场景展示了带有模型的球体城市。

更改初始规则

更改各个形状的初始规则以更改生成的模型。

  1. 在场景中选择单个模型。
  2. 单击初始规则旁的选择

    选择“初始规则”

    随即显示设置初始规则对话框。

    设置初始规则

    初始规则(CGA 代码中带有 @StartRule 标签的规则)将以粗体显示。

  3. 选择 Commercial 作为新的初始规则。
  4. 单击确定

    初始规则设置为 Commercial 的模型

从 OBJ 导入形状

要导入 OBJ 文件作为形状,请执行以下操作:

  1. 创建一个场景。
  2. 右键单击 /data/obj 文件夹中的 pompeii_footprints.obj 文件,并选择导入

    随即显示 OBJ 导入对话框。

    OBJ 对话框

  3. 取消选中作为静态模型导入
  4. 单击 完成

    “视窗”窗口中的 OBJ 形状

    现在,您将根据覆盖区生成简单的拉伸。

  5. 选择所有覆盖区。
  6. extrude.cga 规则文件拖动到所选覆盖区上。

    将规则拖动到形状上方时,它们将突出显示:

    将拉伸规则分配给形状

    extrude.cga 规则文件将覆盖区形状拉伸到由规则中的 height 属性定义的 10 米高度。

    具有 10 米拉伸的 OBJ 形状

    打开 footprints_from_obj.cej 场景以查看最终已拉伸的模型。

导入 OBJ 文件作为建筑物模型

可以在外部应用程序中对体积进行建模,而非使用 CGA 语法对其进行描述。 本部分将介绍如何将在 Autodesk Maya 中建模的建筑物体积导入 CityEngine 中,以及如何使用 CGA 规则对立面进行优化。

建筑物体积模型

此建筑物体积采用了 Maya 中的传统方法进行建模并导出为 .obj 文件。

注:

有关 CityEngine 支持的文件格式列表,请参阅通过对话框导入

要导入 OBJ,请执行以下操作:

  1. 创建场景。
  2. 右键单击 /data/obj 文件夹中的 Building_1.obj 文件,并选择导入

    随即显示 OBJ 对话框。

  3. 取消选中作为静态模型导入
  4. 单击 完成

    新的 Building_1 形状图层随即出现在 Scene Editor 窗口中,建筑物模型将显示在视窗窗口中。

    OBJ 建筑物模型

应用建筑物规则

Building_1 形状包含 Building 初始规则。 必须将模型的坐标系与 CityEngine yUp 系统对齐。

Building 规则使用 alignScopeToAxes()comp(f) CGA 操作将模型分割为不同的面。 top 选择器用于屋顶面,side 选择器用于立面:

Building -->
	alignScopeToAxes(y)
	comp(f){top : color("#ff0000") Roof. | side : Facade. }

由此将为屋顶形状上色,以便正确识别面。

要将 Building 规则应用于建筑物模型,请执行以下操作:

  1. 选择建筑物模型。
  2. importedVolume_01_markFaces.cga 规则文件拖动到所选建筑物上。

    具有面的建筑物模型

    建筑物模型现在具有彩色面 - 顶面(屋顶)为红色,侧面(立面)为灰色。

    由于这些面是在 CityEngine 外部建模的,因此其方向不一定与您的规则操作兼容。 为了更正此问题,importedVolume_02_facades.cga 规则将 Facade 规则添加到 alignScopeToGeometry(zUp, any, world.lowest) CGA 操作中:

    Facade -->  
    alignScopeToGeometry(zUp, any, world.lowest)
    split(y){3.5 : Groundfloor | {~3 : Floor}* }

    Facade 规则将立面形状的范围对齐到其最低边,并且 z 朝外。 这样可确保您在所有立面上使用相同方向的范围进行操作。

  3. 确保选择建筑物模型。
  4. importedVolume_02_facades.cga 规则文件拖动到所选建筑物上。

    具有立面细节的建筑物

    volume_from_obj.cej 场景显示了已完成的模型。

  5. 有关 CGA 规则的详细信息,请参阅教程 6:基础形状语法

将资产导入为纹理形状或静态模型

可以将预先建模的纹理资产(例如地标建筑)导入为形状或静态模型。

  1. 创建场景。
  2. /data/dae 文件夹中的 building_0.dae 文件拖动到视窗窗口中。

    已导入的 DAE 模型

    新的 building_0 形状图层随即出现在 Scene Editor 窗口中。

将静态模型转换为形状

要将 CGA 规则应用于静态模型,必须首先将其转换为形状。

  1. 选择已导入的静态模型。

    静态模型

  2. 单击主菜单中的形状 > 将模型转换为形状

    转换后的形状模型

    这些模型现已准备好应用 CGA 规则。

应用 CGA 规则

要将地标规则应用于模型,请执行以下操作:

  1. 选择建筑物模型。
  2. landmark.cga 规则文件拖动到所选建筑物上。

    landmark.cga

  3. 通过在 Inspector 窗口中更改模式参数的值来探索规则选项。

    “模式”选项

  4. 单击地标下拉菜单以在样式之间进行切换,或者单击预览并选择样式以打开样式管理器窗口。

    “样式”菜单

    样式管理器窗口将显示样式选项。

    “样式管理器”窗口

    要查看具有已生成模型的已完成场景,请打开 landmark_as_shape.cej 场景。

在本教程中,您学习了如何将多种文件格式作为形状或静态模型导入 CityEngine 中并对其应用规则。

要继续学习 CityEngine,请参阅完整的 CityEngine 教程目录