ArcGIS CityEngine for Rhino 是Rhino3D 和 Grasshopper的一个插件。它提供了 Rhino 命令和 Grasshopper 组件,允许在 Rhino 场景中执行CityEngine “规则”。因此,Rhino 艺术家或设计师无需离开他们熟悉的 Rhino 环境即可使用 CityEngine 的程序化建模功能。不再需要复杂的导出-导入步骤,这也意味着程序化模型不再需要“烘焙”。建筑物或街道模型在整个设计或规划工作流程中保持程序化。因此,用户可以通过将建筑物或街道模型连接到其他 Grasshopper 组件来轻松更改建筑物或街道模型的任何属性。
CityEngine for Rhino 需要所谓的规则包 (RPK) 作为输入,这些规则包是在 CityEngine 中编写的。RPK 包括资产和编码建筑风格的 CGA 规则文件。下面提供了全面的 RPK 示例。
CityEngine for Rhino 可免费用于个人、教育和非商业用途。商业用途要求组织中安装最新版本的 CityEngine 的至少一个商业许可证。除非明确允许,否则不允许重新分发或提供网络服务。
快速入门
下载并打开“街道段”示例或从头开始创建场景:
- 在 CityEngine 中,下载例如教程 9,并将“帕台农神庙”CGA 规则导出到 RPK(参见创建规则包)。
- 从food4rhino 市场安装适用于 Rhino 的 CityEngine 。
- 启动 Rhino 并打开 Grasshopper。
- 在 Grasshopper 中,转到“Esri”选项卡并找到“ArcGIS CityEngine”部分,将“CityEngine”组件拖入文档。
- 右键单击 RPK 输入参数以选择上面创建的“Parthenon”RPK。CityEngine for Rhino 将要求您保存文档,以便它可以存储相对于文档的 RPK 路径。最佳做法是将 RPK 放在 Grasshopper 文档旁边或子目录中。
- 创建一个“表面”组件,然后使用“设置一个表面”上下文菜单项,使用“从 3 个或 4 个角点绘制表面”工具在 Rhino 中绘制一个表面。
- 将“表面”连接到“形状”输入。现在 CityEngine for Rhino 将在 Rhino 视口中生成模型。
目录
用户手册
从技术上讲,Rhino 版 CityEngine 由两个插件组成:(1) Rhino 命令和 (2) Grasshopper 组件。我们预计 Rhino 版 CityEngine 主要通过 Grasshopper 使用,因为只有通过将其连接到其他 Grasshopper 组件,才能充分发挥其潜力。较低级别的 Rhino 命令ApplyRulePackage
可用于一次性测试 CityEngine 规则包。
安装
系统要求
- Windows 10 或 11(Intel/AMD 64 位)。
- Rhino 7.17(或更高版本)或 Rhino 8.8(或更高版本)。
- 要编写规则包 (RPK),需要 CityEngine 许可证。
推荐安装方法:Food4Rhino 市场
前往市场并点击下载,这将下载并安装适用于 Rhino 的 CityEngine。
从本地文件安装
请参阅下面的开发人员文档。
使用 CityEngine Grasshopper 组件
启动 Grasshopper 后,CityEngine for Rhino Grasshopper 组件位于选项CityEngine
卡中。
主要CityEngine for Grasshopper
组件用于根据 CityEngine 规则包 (RPK) 和输入形状(多边形、表面、网格)生成模型、材料和报告。“批量”变体的功能相同,只是提供了一种指定大量参数的替代方法(见下文)。两个辅助组件CityEngine CGA Reports Unpacker
和CityEngine CGA Reports Display
帮助检查和显示由 CGA 规则生成的报告值。
连接主 CityEngine 和 Rhino 输入
该CityEngine for Grasshopper
组件有两个固定输入。第一个RPK
输入从 CityEngine 规则包文件 (.rpk) 中获取文件路径。第二个输入Shape(s)
获取一个或多个输入几何图形(网格、矩形、Brep、表面)。
任何提供此类对象的 Grasshopper 组件都可以连接到Shape(s)
输入,例如Rectangle
组件。定义Rectangle
输入的步骤如下:
- 创建
Rectangle
组件 - 右键单击
Rectangle
组件并选择Set one Rectangle
或Set Multiple Rectangles
。 - 使用 Rhino 工具在 Rhino 视口中绘制矩形
Rectangle
。 - 选择矩形。
如果建筑模型指向“下方”:Rhino 版 CityEngine 会考虑输入多边形的缠绕顺序。Rhino 命令Flip
可用于校正输入多边形的方向。
为 CityEngine for Rhino 准备输入形状
由于 CGA 语言需要多边形网格作为输入,CityEngine for Rhino 默认使用“快速渲染网格”设置将所有非网格输入形状转换为网格。
将边界、曲线、折线和曲面转换为网格时,有多种方法可以控制多边形的创建:
- 将原始转换后的网格直接传入 CityEngine for Rhino,并使用 CGA
cleanupGeometry
操作删除规则中的内部边缘。 - 使用 Rhino 命令
AddNgonsToMesh
来DeleteMeshNgons
控制如何将多边形在网格内组合成 Ngon。 - 使用“Ngon”插件对转换进行详细控制。
CityEngine for Rhino 将在输入网格中识别通过上述方法创建的 Ngon,并使用它们为模型生成创建实际的输入多边形面。在下面的示例中,我们首先使用原始 Rhino 三角形和四边形来运行简单的偏移和挤压规则。然后我们使用 Rhino 的AddNgonsToMesh
命令将一些四边形/三角形组合成 Ngon。CityEngine for Rhino 会将与 Ngon 不相关的三角形/四边形视为单独的输入面。
为了说明“Ngon”插件的用法,我们使用“From Mesh”工具将封闭的 Rhino Curve 转换为单个 Ngon,然后应用相同的简单偏移和挤压规则:
使用规则属性输入
当 RPK 和 Shapes 的两个主要输入都连接起来时,组件开始生成几何图形。最初,使用 CGA 规则属性的默认值。可以通过向 CityEngine for Rhino 组件添加输入参数来覆盖它们。为此,放大组件直到+
出现一个小按钮。请注意,+
只有当 CGA 规则定义任何属性时,按钮才会出现。将打开“选择规则属性”对话框窗口,在该窗口中可以从当前使用的规则包中定义的可用规则属性列表中选择新输入。该对话框有主规则文件选项卡和可选导入选项卡。每个选项卡都有名称、数据类型和默认值列。
然后可以将这些参数输入连接到其他 Grasshopper 组件。上下文菜单还提供了一种直接分配值的简便方法。CityEngine for Rhino 将使用规则中定义的未连接输入的默认值,并且通常还取决于输入形状。
规则属性和相应的 CityEngine for Rhino 组件输入使用四种基本数据类型:(1) 数字、(2) 字符串、(3) 布尔值(切换)和 (4) 颜色。这些可以是单个值或值列表。如果列表和长度不匹配,CityEngine for Rhino 将截断列表或重复列表的最后一个值,直到输入的长度shape(s)
匹配。
请注意,表示资产(如.obj
或纹理文件)的字符串属性只能引用当前规则包 (RPK) 内的文件。 CityEngine for Rhino 会将字符串解释为相对于 RPK 根的文件路径(以正斜杠作为分隔符),例如。 如果出现意外行为,使用类似工具检查相关 RPK以确认资产文件的存在assets/my_asset.obj
会很有用。7zip
输入通常由这些内置的 Grasshopper 组件创建:
- 數量:
Number
和Number Slider
- 字符串:
Panel
和Text
- 布尔值:
Bool
和Toggle
- 颜色:
Colour
,Colour Picker
和Swatch
要获取有关每个规则属性输入的更多信息,用户可以将鼠标悬停在每个规则属性输入上。将显示一个工具提示,其中包含有关预期数据的信息。CityEngine for Rhino 将读取规则属性上的 CGA 注释并显示元数据,例如数字的允许范围。
如果 CGA 规则属性被注释为枚举,则工具提示将列出值的范围。
提取参数
可以使用此Extract Parameter
功能自动创建连接的输入组件。右键单击要提取的输入参数并选择Extract parameter
。新组件将显示与输入参数相同的名称和描述,并为其分配属性的默认值。
使用 CityEngine 进行 Rhino 输出
该CityEngine for Rhino
组件有五个输出:
- 模型:生成的网格。
- 材料:生成的材料
- 报告:生成的 cga 报告。
- 打印:cga 规则中定义的消息。
- 错误:生成过程中遇到的错误。
输出Models
将包含每个输入形状的网格列表(每个材料一个网格)。生成的材料可以通过连接内置组件应用于网格Custom Preview
。报告以自定义数据类型输出,可以使用 CityEngine for Rhino 报告辅助组件显示和转换。
切换材质生成
每个 Grasshopper 组件都有一个选项菜单,可以通过右键单击组件名称来打开。CityEngine for Rhino 菜单包含一个额外的菜单项,用于切换材质生成。这对于在处理复杂场景时加快模型生成速度很有用。
使用 CityEngine CGA 报告辅助组件
旨在CityEngine CGA Reports Display
帮助在 Rhino 视口中显示 CGA 报告值,并接受 5 个输入。前两个通常连接到主组件的相应输出CityEngine for Rhino
。接下来的三个输入是可选过滤器:
Shape ID Filter
:用于按初始形状 ID 过滤报告。接受域组件。Report Key Filter
:按关键字名称筛选报告。接受一个Panel
或Text
组件,或它们的列表。报告关键字可以写在多行上。Report Value Filter
:此输入允许为输入中选择的每个键选择特定的值Report Key Filter
。
该组件有三个输出,前两个可以连接到一个Text Tag 3D
组件以在 Rhino 视口中显示所选报告。Reports Location
输出提供在每个生成的模型上方定位和对齐报告文本的位置。输出Reports Display
提供格式化的报告文本。
Rhino
这是使用该组件在视口中显示的报告的示例Text Tag 3D
。
将Reports
通过所选报告进行进一步处理。例如,使用 来解压它们CityEngine CGA Reports Unpacker
。
该CityEngine CGA Reports Unpacker
组件将报告数据解压到CityEngine for Rhino
形状索引、报告名称和报告值列表中。这通常用于使用内置 Grasshopper 组件进一步处理报告,例如将报告写入文本文件。
使用 CityEngine Bulk Grasshopper 组件
该CityEngine Bulk
组件的工作方式与标准CityEngine
组件类似,不同之处在于所有 CGA 属性都使用单个(树)参数输入。以下示例使用禁用“多行数据”的面板,每行代表表单中的一个 CGA 属性<name>:<value>
。
典型用例是使用组件从文本文件读取 CGA 属性File
(设置为“每行”)。请注意,空行将被忽略。
使用 CityEngine for Rhino 命令 (ApplyRulePackage)
在 Rhino 中,选择一个形状并在命令行中输入命令ApplyRulePackage
。这将打开一个文件对话框来选择一个 RPK 文件。确认后,模型将在所选形状上生成。
请注意,此命令仅用于提供一种在形状上测试 RPK 的快速方法。目前无法更改规则属性,也不会应用材料。
开发人员手册
软件要求
- Windows 10 或 11(Intel/AMD 64 位)
- Rhino 7 或 8 包括 Rhino SDK(https://www.rhino3d.com/download)
- Microsoft Visual Studio 2022 或更高版本,带有 MSVC 14.37、适用于 MSVC 14.37 的 MFC 和 C#(.NET Framework 4.8 和 .NET Core 7.0)
- 可选:Python 3.9 或更高版本
构建说明
- 从软件要求部分安装工具。
- 按照Rhino 文档中的说明安装 Rhino SDK 和相关工具。
- 按照Rhino 文档中的说明安装 Grasshopper SDK。
- 检出这个 Git 存储库。
- 打开 Visual Studio 解决方案。
- 确保配置设置为
Release
和x64
(唯一支持的配置)。 - 构建解决方案。结果存储在
build
目录中,首先是CityEngineRhino.rhp
和CityEngineGrasshopper.gha
。
安装本地构建的插件
构建插件后,必须分别在 Rhino 和 Grasshopper 中安装它们。
- 启动 Rhino。在菜单栏中,转到工具 -> 选项 -> Rhino 选项 -> 插件。
- 单击
install
并选择CityEngineRhino.rhp
位于的文件path-to-solution/build
。 GrasshopperDeveloperSettings
要安装 Grasshopper 插件,请在 Rhino 中运行命令。- 在打开的窗口中,添加
path-to-solution/build
包含的文件夹CityEngineGrasshopper.gha
。确保Memory load .gha assemblies...
未勾选该框。 - 确认,然后重新启动 Rhino 和 Grasshopper。
创建安装包(rhi、yak)
一旦构建了两个插件(rhp
用于 Rhino,gha
用于 Grasshopper),就可以创建一个rhi
(Rhino 安装程序)包和/或一个yak
使用create_package.py
Python 脚本的包。rhi
包只是一个 zip 存档,其中包含运行插件所需的所有文件。如果安装了 Rhino,则可以通过双击包来安装插件。它将提取文件,Rhino/Grasshopper 将在启动时加载它们。包yak
是可以上传到 Rhino 市场以发布插件的存档。
- 打开控制台,导航到 CityEngine for Rhino 解决方案目录并运行命令
python create_package.py <option>
。 的有效值为<option>
(both
默认)、rhi
或yak
选择要构建的包类型。 - 结果
rhi
和包将在解决方案根目录中yak
名为的文件夹中创建。packages
安装本地构建的包
- 如果 Rhino 已打开,请将其关闭。
rhi
双击运行该包。- 软件包安装程序将打开。按照说明操作。
- 该插件将在下次启动 Rhino/Grasshopper 时加载。
注意:如遇问题,请尝试启用位于 Rhino 的工具 -> 选项 -> 插件中的“请求加载已禁用的插件”框。
调试本机代码
对于调试,请保留Release
配置(我们始终生成 PDB)并关闭RinoCodecs
和CityEngineRhino
C++ 项目属性中的 C++ 优化。重建并将调试器附加到 Rhino 并设置断点。
发行说明
版本 1.2.0 (2024-10-28)
- 从“Puma”更名为“ArcGIS CityEngine for Rhino and Grasshopper”。我们将继续在源代码中使用简洁名称“Puma”。
- 对 Grasshopper 组件工具栏进行小规模重构,以便新用户更容易找到。
- 将构建输出重命名为
CityEngineRhino.rhp
,CityEngineGrasshopper.gha
以及CityEngineRhino.rhi/yak
。