解算闭包¶
解算闭包 节点执行连接的闭包区。它充当闭包的 调用点,运行其内部节点图并返回结果值。
闭包通过允许用户将过程逻辑传递到另一个节点树中,实现了动态且可定制的节点组。当 解算闭包 节点运行时,连接的闭包将在当前上下文中进行评估,并通过名称匹配其输入和输出接口。
解算闭包 节点的常见用途包括:
允许在程序化系统中定义用户自定义行为(例如自定义散布、放置规则或着色逻辑)。
为可复用节点组注入逻辑以实现高级效果。
为高级节点式工具提供可选的定制化输入选项。
输入¶
- 闭包
要解算的闭包。该输入接口需连接来自闭包区的闭包。若未连接闭包,节点将进入 直通模式(详见下文)。
界面¶
节点可手动定义额外输入,这些输入将通过名称与所连接闭包的对应输入进行匹配。当闭包连接后,这些接口会自动同步以反映到闭包的定义界面。
属性¶
解算闭包 节点本身不具备功能属性,但其输入输出接口可通过侧栏的 节点 选项卡进行管理。
- 同步接口
更新当前节点以匹配已连接节点的接口签名。在重命名、添加或移除接口后使用此操作。
- 限定签名
将该节点标记为定义闭包签名,供其他闭包节点使用。确保相关闭包之间输入与输出的定义保持一致。
输入项目¶
- 输入接口的列表
显示闭包中定义的每个接口对应的条目。双击可重命名。
- 添加项目
在闭包界面中添加一个新的输入接口。
- 移除项目
删除所选输入接口。
- 类型
所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认数值场,在接口未连接时使用该场。
- 形状
定义输入接口支持的数据结构类型,包括 单一值、场 或 栅格。该形状参数决定数据的评估方式及在节点网络中的传递路径。详见接口形状获取详细说明。
输出项目¶
- 输出接口的列表
显示每个输出接口对应的条目。双击可重命名。
- 添加项目
向节点添加一个新的输出接口。
- 移除项目
删除所选输出接口。
- 类型
所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认数值场,在接口未连接时使用该场。
输出¶
解算闭包 节点的输出取决于其当前配置:
当连接了闭包时 -- 每个输出接口对应 闭包区 中同名的输出接口。
当未连接闭包时 -- 输出端需通过侧栏的 输出项目 部分手动设置。
行为¶
执行后,该节点会解算闭包内部的节点图。所有输入值均按名称传递至闭包,所有计算结果则通过对应的输出端返回。
若无闭包连接或节点处于屏蔽状态,解算闭包 将自动按名称传递所有匹配的输入和输出。这种 直通模式 使闭包成为可选配置,即使缺少闭包,节点组仍能正常运行。
解算过程将在节点树的本地上下文中进行,解算闭包 会继承相关场、属性和几何数据。
用法¶
解算闭包 节点通常用于使节点组部分可定制,同时保持稳定、可复用的框架。
例如,地形生成器可能使用 解算闭包 来定义树木在景观中的分布方式:
在生成器组内部,将固定的树木布局逻辑替换为 解算闭包 节点。
在组的接口上暴露闭包输入。
在主节点树中,连接一个 闭包区,以定义所需的树木分布行为。
每次解算闭包时,连接的节点图都会在地形生成器的上下文中运行,从而生成定制化结果。
示例:使用 解算闭包 自定义树木分布。¶
接口同步¶
闭包通过匹配接口名称来正确连接输入和输出。如果连接的 闭包区 与 解算闭包 节点的签名不匹配,Blender 可以自动同步它们。
当接口布局不同时,会显示同步图标。
点击图标将更新接口以匹配已连接的闭包。
首次连接闭包时会自动同步。
此后,已有接口不会自动更新,以防止数据丢失。
局限¶
当在多个上下文中解算闭包时,预览器和检视节点可能无法显示准确的数值。
捕获的外部值为只读值,无法在解算过程中进行修改。
目前,闭包无法访问其解算的上下文之外的属性或数据。