ArcGIS CityEngine for Houdini 是SideFX Houdini的一个插件。它提供了操作节点,可以执行CityEngine的“规则”。因此,3D 环境艺术家无需离开熟悉的 Houdini 工具集即可使用 CityEngine 的程序化建模功能。它不再需要复杂的导出导入流程,这也意味着程序化建筑模型无需再进行“烘焙”。建筑物在整个建模工作流程中(甚至在渲染时也可以)都保持程序化。因此,3D 环境艺术家可以在制作过程中的任何时间点使用参数化界面轻松更改建筑物的高度、风格和外观。
CityEngine for Houdini 需要所谓的规则包 (RPK) 作为输入,这些规则包是在 CityEngine 中编写的。RPK 包含资源和一个编码建筑风格的 CGA 规则文件。下方提供了完整的 RPK 示例,可“开箱即用”。
CityEngine for Houdini 非常适合管理数字场景中建筑 3D 内容的程序化生成。然而,它仅限于单个建筑/物体的程序化生成。CityEngine for Houdini 不包含 CityEngine 的城市布局和街道网络编辑工具,也就是说,仍然需要 CityEngine 丰富的工具集来从零开始(或基于地理数据)设计城市。
-
从发布页面下载最新的 CityEngine for Houdini 二进制文件。
-
将档案提取到您的
<home>\Documents\houdiniX.Y(Windows) 或<home>/houdiniX.Y(Linux) 目录中,以便文件最终位于相应的config、dso和packages子目录中。 -
启动 Houdini,您将在 下的 OBJ 操作符菜单中找到新的
pldAssign和节点。pldGeneratecustom -
在 Houdini 中,通过设置一个
grid具有 2 列/行的节点来创建四边形作为初始形状。 -
在网络编辑器中打开几何节点并将网格输出连接到新
pldAssign节点。 -
创建一个新
pldGenerate节点并将输入连接到前一个pldAssign节点的输出。 -
使该
pldGenerate节点成为活动渲染节点。 -
下载帕台农神庙规则包。或者,在 CityEngine 中下载教程 9,并将“帕台农神庙” CGA 规则导出到 RPK(请参阅创建规则包)。
-
选中
pldAssign节点,在参数编辑器中将参数设置Rule Package为之前导出的RPK的路径。 -
模型应该生成,并且规则属性现在应该可以在参数编辑器中编辑。
- Windows 10 或 11(64 位)
- RedHat Enterprise Linux 8 或 9 及兼容(CentOS、Alma Linux、Rocky Linux 等)
- 胡迪尼 19.5、20.0、20.5
- 请参阅发行说明以了解兼容的 CityEngine 版本和商业工作的要求。
- 从发布页面下载最新的 CityEngine for Houdini 二进制文件。
- 将档案提取到您的
<home>\Documents\houdiniX.Y(Windows) 或<home>/houdiniX.Y(Linux) 目录中,以便文件最终位于config、dso和packages子目录中。 - 启动 Houdini,您将在 下的 OBJ 操作符菜单中找到新的
pldAssign和节点。pldGeneratecustom
注意:无需修改系统PATH环境变量。
- 建造为 Houdini
- 该
install步骤应自动将所有必需的文件复制到您的<home>\Documents\houdiniX.Y(Windows)或<home>/houdiniX.Y(Linux)目录中,然后 CityEngine for Houdini 即可运行。
CityEngine for Houdini在“自定义”类别中为 Houdini 添加了两个新的几何体 (SOP) 节点。这些节点可以在任何几何体对象中pldAssign创建。pldGenerateNetwork Editor。
该pldAssign节点旨在为输入几何体创建所需的元数据(作为原始属性),以便pldGenerate操作员可以程序化地生成几何体。选中后,可以直接在参数编辑器中设置 RPK(规则包)、种子和相应的 CGA 属性。评估后,pldAssign节点会将所需的元数据(以原始属性的形式)附加到几何体,并相应地更新参数编辑器中的 CGA 属性。原始属性也可以在几何体传递给节点之前被覆盖pldGenerate(例如,使用Attribute Create。
该pldGenerate节点用于生成最终几何体。它以包含元数据的初始形状几何体作为输入(即pldAssign节点的输出),并执行 CityEngine 规则生成 3D 模型。在参数编辑器中,我们可以选择以下选项:
- 重新发出修改后的 CGA 属性(默认关闭)
- 发射材质属性(默认关闭)
- 发出 CGA 报告(默认关闭)
- 对带孔的多边形进行三角剖分(默认启用)。如果禁用,Houdini 的 CityEngine 将创建类似于“孔”几何节点的“带桥的孔”。
-
在 CityEngine 中,创建以下规则文件并将其作为规则包 (RPK) 共享到磁盘的某个位置(或下载提供的示例之一并将其作为 RPK 共享(请参阅创建规则包)):
attr height = 1 @StartRule Init --> extrude(height)(您也可以直接使用此RPK)
-
在 Houdini 中,在新场景中添加一个
grid节点。 -
进入
grid节点,将Rows和Columns参数设置为 2,并添加两个 CityEngine for Houdini 节点pldAssign和pldGenerate。像这样连接它们: -
选择
pldAssign节点,Rule Package在参数编辑器中将参数设置为之前导出的RPK的路径。 -
将该
pldGenerate节点设为活动渲染节点,这将触发分配和生成节点的“烘焙”,并执行 CityEngine 规则。现在您应该看到一个长方体:
在上一节中,我们使用了属性的默认值height。让我们在执行之前使用 Houdini 工具修改规则属性。
-
确保
pldAssign通过连接pldGenerate活动渲染节点来评估 -
通过更改生成的句柄中的值,在参数编辑器中编辑规则属性(可以通过调用
revert to Defaults或按下ctrl + MMB规则名称来重置规则属性)
-
在和之间添加一个
AttributeCreate节点。pldAssignpldGenerate -
将属性名称设置为 ,
height并将Class设置为Primitive。由于默认值为 0,因此挤出消失。 -
增加该值以
height查看实际挤压:
请注意一般情况的步骤:
- 请参阅 CGA 文件(或 CityEngine)了解可用属性及其数据类型(数字、字符串、布尔值)。
- 在
AttributeCreate节点中,设置name为 CGA 属性的名称(确保检查Encode Invalid Attribute Names)。 - 设置
class为Primitive。 - 设置
type为FloatCGA 数字属性、StringCGA 字符串和Integer8 位精度的 CGA 布尔值。
在本节中,我们将展示如何使用pldAssign单个pldGenerate节点来使用多个节点。
-
复制
grid和pldAssign节点。 -
将第二个节点的中心设置
grid为(15,0,0)。 -
Attribute Create在新节点grid和节点之间添加一个新节点pldAssign。 -
将属性名称设置为“primCls”,将类更改为primitive并将其值更改为1。需要设置此值,以便
pldGenerate节点稍后知道哪些初始面应该一起生成或单独生成。 -
将两个分配节点的输出与一个
merge节点合并,并将输出提供给前一个生成节点,如下所示: -
您现在可以更改两个节点的规则文件和属性
pldAssign,并且它应该正确生成它们
在本节中,我们将连接pldGenerate由 Mantra 着色器生成的材质属性(相同的机制也可用于视口材质)。
-
下载现成的 Houdini 数字资产,其中包含适用于 Mantra 的 CityEngine 材质。
-
将 HDA 导入到您当前的项目(
File>>Import)Houdini Digital Asset并单击安装。 -
选择
pldGenerate节点并勾选Emit material attributes复选框。打开电子表格,观察现在发出的多个材质原始属性pldGenerate。 -
创建一个新的 PalladioCityEngineMaterial 节点并将其连接到该
pldGenerate节点。使其成为活动渲染节点。 -
点击 Mantra 渲染,您将在渲染视图中看到一个红色框。
-
使用语句扩展上一节中的规则
color并重新导出它:attr height = 1 @StartRule Init --> color(1,0,0) extrude(height)(您也可以直接使用此RPK)
![图片[10]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://www.cityengine.cn/community/wp-content/themes/zibll/img/thumbnail-lg.svg)
-
在 Houdini 中,选择
pldGenerate节点并勾选Emit material attributes复选框。打开电子表格,观察现在发射的多个材质原始属性pldGenerate。 -
添加一个
Material节点并将其连接到该pldGenerate节点。使其成为活动渲染节点: -
在 中
Material Palette,创建一个新Principled Shader实例(通过将其从导航器拖到\mat窗口)并将其重命名为CityEngineShader: -
输入
CityEngineShader节点并将Parameter节点连接到Surface/basecolor输入: -
将节点名称设置
Parameter为diffuseColor,并将类型设置为Color。此名称将与 发出的原始属性匹配pldGenerate。 -
回到节点的网络中
grid,选择Material节点并选择/mat/CityEngineShader参数Material。 -
点击 Mantra 渲染,您将在渲染视图中看到一个红色框。
这个简短的 CityEngine 指南解释了如何在将输入几何体导出到 Alembic 时包含随机种子和启动规则分配。
-
在场景对象上运行以下 Python 脚本,将随机种子指定为对象属性:
from scripting import * ce = CE() shapes = ce.getObjectsFrom(ce.scene(), ce.isShape) for s in shapes: seed = ce.getAttribute(s, "/ce/rule/randomSeed") ce.setAttribute(s, "seed", seed)
-
将此 CGA 脚本分配给要报告的所需形状
seed并rule(起始规则):version "2019.0" attr seed = 0 Lot --> R LotInner --> R Street --> R Sidewalk --> R Crossing --> R OpenSpace --> R Joint --> R R --> report("seed", seed) report("rule", initialShape.startRule)规则
seed属性应该已经连接到先前分配的seed对象属性。 -
将形状导出到 Alembic,两个报告值现在作为用户属性附加到网格。
rpk将 RPK 放入当前 Houdini 项目的子目录中会很有用。如果您$HIP在 pldAssign 节点中引用 RPK,您的 Houdini 项目将保持可重定位状态。
CITYENGINE_LOG_LEVEL:控制所有分配和生成节点的全局(最低)日志级别。有效值为“debug”、“info”、“warning”、“error”和“fatal”。默认值为“error”。此外,还可以控制每个节点的日志级别pldAssign。pldGenerate。HOUDINI_DSO_ERROR:有助于调试加载问题,请参阅https://www.sidefx.com/docs/houdini/ref/env



![图片[1]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/parthenon01.png)
![图片[2]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/extrude01.png)
![图片[3]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/extrude02.png)
![图片[4]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/attribute03.png)
![图片[5]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/attribute02.png)
![图片[6]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/multiple01.png)
![图片[7]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/multiple02.png)
![图片[8]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/multiple03.png)
![图片[9]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/importHDA01.png)
![图片[10]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials01.png)
![图片[11]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials02.png)
![图片[12]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials03.png)
![图片[13]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials04.png)
![图片[14]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials05.png)
![图片[15]-ArcGIS CityEngine for Houdini-软件论坛-CityEngine城市引擎](https://github.com/Esri/cityengine_for_houdini/raw/main/doc/img/materials06.png)








没有回复内容