CityEngine 的主要概念是实现高效建模的程序式方法。 此方法为计算机提供了基于代码的程序,该程序表示将执行的一系列命令(在这种情况下为几何建模命令)。 代替了需要用户手动与模型交互并为 3D 几何建模的传统干预,此方法在规则文件中以“抽象方式”描述任务。
CityEngine 功能
程序式建模核心
CityEngine CGA 形状语法中提供的命令(例如拉伸、分割或纹理)在大多数 3D 应用程序中是众所周知的命令,您可以对其进行修改以创建复杂的建筑形式。
要了解程序式建模的详细信息,请参阅基于语法的建模。
动态城市布局
您可通过动态城市布局创建可以自动实时更新的交互式街道网络。 构成特定城市环境的街道、人行道和整个街区可以高效地适应您的输入,使您能够设计完整的城市布局。
依赖于基础动态城市布局的所有几何也会动态更新。 您在编辑周围街道的宽度时,建筑物会重建。
可自定义 UI
CityEngine 中的用户界面 (UI) 可以适应各种任务,包括创建规则、处理街道网络、使用实时反馈编辑属性或研究当前城市发展的统计报告。
要控制重复性任务、以文件格式创建格式化报告或自动执行其他特定操作,请使用 Python 脚本进一步简化 CityEngine 中的工作流。
Data Interoperability
CityEngine 的导入和导出操作支持行业中最常见的格式。 您可以将线数据、形状数据(轮廓线)和 3D 几何传输至 CityEngine 或从中传出。 无论您从事的是城市规划、建筑、娱乐还是模拟领域的工作,CityEngine 都可以提供一种传输数据的方式。
CityEngine 建模管线
使用 CityEngine 对城市环境进行建模通常包含下图中给出的管线的各个阶段。 该管线包括用于生成大规模城市布局以及应用 CGA 规则创建详细建筑物模型的多个程序式建模工具。
CityEngine 场景将存储为表示不同阶段的数据类型的图层。 管线十分灵活,且可以在不同阶段进入。 例如,可以导入街区或建筑群并进行进一步处理。
生成大规模城市布局
CityEngine 由多个程序式工具和交互式工具组成,用于布置街道网络以及对齐和细分形状。 可以根据模式发展街道,并以交互方式进行编辑。 例如,可以移动十字路口,可以删除或选择街道,并且可以在所选内容上再次应用街道发展向导。 此外,还提供了地块形状编辑工具,例如将建筑地块对齐至地形。 此工具通常作用于 3D 视图窗口或视窗中的所选内容,或作用于整个图层。
CityEngine 场景的分层组织提供了对大量数据集的实用且有序的处理方法。 例如,建议在编辑之前复制图层,从而在每个图层中创建变体。 您可以打开或关闭每个图层的可见性。
基于语法的建模
基于语法的建模或程序式建模具有广泛的应用范围,但是当必须创建遵守某些标准化规则的大量设计迭代或大量对象时,通常会应用该语法。 建模自动化是目标,并且基于语法的描述的整体质量反映在所生成模型的细节质量和数量上。 唯一对象(例如地标性建筑物)最好通过手动方式建模,并且通常不需要程序式方法,因为通常无法自动执行该对象上的任何建模任务。
当然,准备规则集在开始时需要一定的时间,但另一方面,与传统的手动建模相比,生成模型过程本身仅需要一小部分时间。 下图比较了两种技术,显示基于语法建模的应用程序在具有一定数量的待建模型时变得非常有用。
计算机生成建筑
CityEngine 的计算机生成建筑 (CGA) 形状语法是用于生成建筑 3D 内容的唯一指定编程语言。 基于语法的建模想法是在 CityEngine 中定义规则或 CGA 规则,这通过创建更多细节来迭代定义设计。 这些规则作用于形状,这些形状由局部定位的边界框(范围)中的几何组成。 以下规则派生说明了此过程:左侧显示初始形状,右侧显示生成的结果模型。
使用 CGA 形状语法生成建筑几何的工作原理如下:
- 这些建筑地块由 CityEngine 使用上述工具创建或导入。 除了面之外,也可从质量模型(建筑包络)开始入手。
- 您选择要应用于这些形状的规则文件 (.cga)。 您可以将一个规则分配给所有建筑物,或按建筑物分配规则集。
- 您可以触发操作,以将规则应用于所选形状。 因此,规则文件中必须存在形状的初始规则。 否则,不能调用任何规则。 然后,您可以在 CityEngine 的 3D 查看器中探索生成的模型。 对于非常大的模型,由于内存限制,不建议在 CityEngine 中生成所有建筑物。
- 要编辑生成的 3D 模型,您可以编辑规则或按建筑物覆盖规则集的规则参数,如果使用了随机规则(使用随机参数的规则),则可以更改所有建筑物或单个建筑物的随机种子。
- 完成设计后,您可以将所选建筑物或街道导出到硬盘(包括纹理)。
注:
导出模式没有内存限制。