要访问教程CityEngine中,单击 帮助>下载教程和例子…。选择教程或示例后,项目会自动下载并添加到您的工作区。
从 shapefile 和地理数据库导入形状
将 shapefile 导入 CityEngine
- 通过单击文件>新建> CityEngine > CityEngine 场景打开一个新场景文件。
- 在文件浏览,找到footprints.shp在文件数据/ shp_footprints /文件夹。
- 将文件拖放到视口中。
- 使用以米为单位的原始数据导入没有投影的数据。
对象属性
CityEngine 将属性与 shapefile 一起导入。
-
- 选择单个封装。
对象属性显示在检查器的“对象属性”窗格中。

分配规则文件并生成模型
您现在将在导入的封装上生成简单的拉伸。extrude.cga 规则文件使用高度对象属性将轮廓线拉伸到定义的高度。
-
- 打开规则文件,找到如下代码:
attr height = 10
@StartRule
Lot --> extrude(height)
-
- 选择 3D 视口中的所有轮廓线。
- 通过拖放分配规则。
观察建筑物的生成。

- 或者,打开footprints_from_shp.cej文件以查看完成的场景。
从文件地理数据库导入
从文件地理数据库导入数据类似于 shapefile 导入。
-
- 通过单击文件>新建> CityEngine > CityEngine 场景打开一个新场景文件。在文件导航器中,找到数据文件夹中的文件地理数据库文件夹footprints.gdb。
笔记:
.gdb 文件格式在导航器中显示为文件夹。
-
- 将footprints.gdb 文件夹拖到3D 视口中。
- 单击完成以导入选定的图层。
提供的地理数据库中的数据集与 shapefile 内容相同。您现在可以将上述 shapefile 步骤应用于文件地理数据库导入。
导入具有附加 CGA 属性的 PolylineZ 形状
-
- 通过单击文件>新建> CityEngine > CityEngine 场景打开一个新场景文件。
- 在文件浏览,找到sphereCity.shp在文件数据/ sphereCity_shp /文件夹。
- 将文件拖到 3D 视口中。
在导入期间,CityEngine 会提示您为 sphereCity.shp 文件选择数据坐标系(shapefile 的投影)。shapefile 中的数据以米为单位,未进行地理配准,因此请选择以米为单位的原始数据。

-
- 选择以米为单位的原始数据。通过对数据和场景使用相同的坐标系,导入时不会对数据应用重投影。
- 选择以米为单位的原始数据。通过对数据和场景使用相同的坐标系,导入时不会对数据应用重投影。
此 shapefile 数据中的多边形具有 Z 值,从而在 CityEngine 中生成 3D 形状。

属性
此数据集中定义了两个特殊属性:
- 规则文件
- 开始规则
笔记:
在您的 GIS 应用程序中使用此特定语法来定义在导入后直接分配哪些规则文件和启动规则。这样,您可以通过不手动分配它们来节省时间。这是一种特殊的导入行为。
GIS 应用程序中的属性表将类似于以下内容:

-
- 选择单个形状(球体的一个面)。
规则文件和启动规则是在导入过程中自动分配的。

您现在可以直接生成模型。
生成模型
- 在 3D 视口中选择 sphereCity 的所有形状。
- 生成建筑物。
更改启动规则
更改单个形状的起始规则以更改生成的模型。
- 在 3D 视口中选择一个模型。
- 在 Inspector 中,单击 Start Rule Select按钮。
该集开始规则对话框。
- 在“设置起始规则”对话框中,选择“商业”作为新的起始规则。StartRules(CGA 代码中带有@StartRule 标签的规则)以粗体显示。
从 OBJ 导入形状
OBJ 导入
- 通过单击文件>新建> CityEngine > CityEngine 场景打开一个新场景文件。
- 在data/obj/文件夹中找到并选择pompeii_footprints.obj文件。
- 右键单击该文件,然后选择“导入”。
该OBJ出现导入对话框。
- 在OBJ导入对话框中,取消选中导入为静态模型。
- 单击完成。
分配规则文件并生成模型
您现在将在导入的封装上生成简单的拉伸。extrude.cga 规则文件使用高度对象属性将轮廓线 拉伸到定义的高度。
- 选择 3D 视口中的所有轮廓线。
- 在文件导航器中,找到项目规则文件夹中的extrude.cga规则文件,并将其拖动到 3D 视口中的选定轮廓线。
规则文件将所有轮廓线拉伸到 10 的高度。
形状与静态模型
OBJ 和 Collada DAE 文件可以作为形状或静态模型导入,如下所示:
- 形状 – 作为 CGA 生成的基础。一个典型的例子是足迹数据。
- 静态模型 – 导入后可以缩放、旋转和平移,但不能使用 CGA 进一步处理。典型的例子是地标模型。
如果需要,打开footprints_from_obj.cej以查看完成的场景。
进口量
将体积导入为形状
在某些情况下,在外部应用程序中对体积建模比用 CGA 语法描述它们更容易。本节展示了如何将在 Maya 中建模的原始建筑体积导入 CityEngine,以及如何使用 CGA 规则改进其外墙。
下图中的建筑体积在 Maya 中使用传统方法建模并导出为 .obj 文件:

笔记:
可以使用来自 .shp、.gdb 或 .dae (Collada) 文件的多面体数据而不是 OBJ 数据来应用类似的工作流。
将 .obj 文件导入 CityEngine
- 通过单击文件>新建> CityEngine > CityEngine 场景打开一个新场景文件。
- 在data/obj/文件夹中找到并选择Building_1.obj文件。
- 右键单击该文件,然后选择“导入”。
该OBJ对话框。
- 在OBJ导入对话框中,取消选中导入为静态模型。
- 单击完成。
一个名为 Building_1 的新形状图层出现在场景编辑器中,数据显示在 3D 视口中。
编写规则文件
建筑体积的名称 Building_1 已经定义了它的开始规则Building。因此,您需要将构建作为起始规则。您需要将导入模型的坐标系与 CityEngine 的 yUp 系统对齐。这是通过alignScopeToAxes() CGA 命令完成的。完成后,您可以使用组件拆分 comp(f) 识别导入体积的不同面。您将对屋顶面使用顶部选择器,对外墙使用侧面选择器。您在此步骤中所做的就是为屋顶形状着色,以查看是否正确识别了面部。
Building -->
alignScopeToAxes(y)
comp(f){top : color("#ff0000") Roof. | side : Facade. }
- 在 3D 视口中选择建筑物形状。
- 在文件导航器中,找到项目规则文件夹中的导入卷_01_markFaces.cga文件,并将其拖到 3D 视口中的选定形状上。
使用简单的规则生成导入的建筑体积以识别面。红色:顶面(屋顶);灰色:侧面(立面):
一旦人脸被正确识别,您就可以继续执行规则集。由于这些面是在 CityEngine 外部建模的,因此它们的方向不一定是您的规则操作需要它们的方式。对于 Facade 规则,从 alignScopeToGeometry(zUp, auto) CGA 命令开始。通过此操作,立面形状的范围与其最低边缘对齐,z 朝外。这可确保您在所有立面上使用相同定向的范围进行操作。
Facade -->
alignScopeToGeometry(zUp, auto)
split(y){3.5 : Groundfloor | {~3 : Floor}* }
该importedVolume_02_facades.cga规则文件都有一组,增加了更多的细节,建筑的外立面规则。有关编写 CGA 规则的帮助,请参阅ShapeGrammar 教程。
使用此规则集再次生成建筑物。
- 在 3D 视口中选择建筑物形状。
- 在文件导航器中,找到项目规则文件夹中的导入卷_02_facades.cga文件,并将其拖到 3D 视口中的选定形状上。
该volume_from_obj.cej场景文件包含已分配的规则文件导入模型。
将地标导入为形状
如果您有要在场景中使用的预建模、带纹理的资产,也可以导入这些资产。
笔记:
支持的格式有 Wavefront .obj、Collada .dae、.kml 和 .kmz。(最后两个基本上是带有地理参考的 Collada 文件。)
将 .dae 文件导入 CityEngine
-
- 通过单击文件 >新建> CityEngine > CityEngine 场景打开一个新场景文件。
- 在data/dae/文件夹中找到并选择building_0.dae文件。
- 右键单击该文件,然后选择“导入”。
该OBJ出现导入对话框。
- 在OBJ导入对话框中,取消选中导入为静态模型。
- 单击完成。
一个名为building_0 的新形状图层出现在场景编辑器中。

将静态模型转换为形状
如果您已导入静态模型并希望继续使用 CGA 代码处理它们,您可以将它们转换为形状。
为此,请右键单击模型,然后单击将模型转换为形状。
您可以对 CGA 生成的模型执行相同操作。
应用 CGA 规则
如果需要,可以使用 CGA 规则进一步处理导入的形状。
- 分配landmark.cga规则文件。
- 生成模型。
在样式管理器对话框显示与CGA规则导入四种样式选项。
- 如果需要,打开地标_as_shape.cej以查看完成的场景。