解算闭包

解算闭包节点

解算闭包 节点执行连接的闭包区。它充当闭包的 调用点,运行其内部节点图并返回结果值。

闭包通过允许用户将过程逻辑传递到另一个节点树中,实现了动态且可定制的节点组。当 解算闭包 节点运行时,连接的闭包将在当前上下文中进行评估,并通过名称匹配其输入和输出接口。

解算闭包 节点的常见用途包括:

  • 允许在程序化系统中定义用户自定义行为(例如自定义散布、放置规则或着色逻辑)。

  • 为可复用节点组注入逻辑以实现高级效果。

  • 为高级节点式工具提供可选的定制化输入选项。

输入

闭包

要解算的闭包。该输入接口需连接来自闭包区的闭包。若未连接闭包,节点将进入 直通模式(详见下文)。

界面

节点可手动定义额外输入,这些输入将通过名称与所连接闭包的对应输入进行匹配。当闭包连接后,这些接口会自动同步以反映到闭包的定义界面。

属性

解算闭包 节点本身不具备功能属性,但其输入输出接口可通过侧栏的 节点 选项卡进行管理。

同步接口

更新当前节点以匹配已连接节点的接口签名。在重命名、添加或移除接口后使用此操作。

限定签名

将该节点标记为定义闭包签名,供其他闭包节点使用。确保相关闭包之间输入与输出的定义保持一致。

输入项目

输入接口的列表

显示闭包中定义的每个接口对应的条目。双击可重命名。

添加项目

在闭包界面中添加一个新的输入接口。

移除项目

删除所选输入接口。

类型

所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认数值场,在接口未连接时使用该场。

形状

定义输入接口支持的数据结构类型,包括 单一值栅格。该形状参数决定数据的评估方式及在节点网络中的传递路径。详见接口形状获取详细说明。

输出项目

输出接口的列表

显示每个输出接口对应的条目。双击可重命名。

添加项目

向节点添加一个新的输出接口。

移除项目

删除所选输出接口。

类型

所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认数值场,在接口未连接时使用该场。

输出

解算闭包 节点的输出取决于其当前配置:

  • 当连接了闭包时 -- 每个输出接口对应 闭包区 中同名的输出接口。

  • 当未连接闭包时 -- 输出端需通过侧栏的 输出项目 部分手动设置。

行为

执行后,该节点会解算闭包内部的节点图。所有输入值均按名称传递至闭包,所有计算结果则通过对应的输出端返回。

若无闭包连接或节点处于屏蔽状态,解算闭包 将自动按名称传递所有匹配的输入和输出。这种 直通模式 使闭包成为可选配置,即使缺少闭包,节点组仍能正常运行。

解算过程将在节点树的本地上下文中进行,解算闭包 会继承相关场、属性和几何数据。

用法

解算闭包 节点通常用于使节点组部分可定制,同时保持稳定、可复用的框架。

例如,地形生成器可能使用 解算闭包 来定义树木在景观中的分布方式:

  1. 在生成器组内部,将固定的树木布局逻辑替换为 解算闭包 节点。

  2. 在组的接口上暴露闭包输入。

  3. 在主节点树中,连接一个 闭包区,以定义所需的树木分布行为。

每次解算闭包时,连接的节点图都会在地形生成器的上下文中运行,从而生成定制化结果。

../../../../_images/nodes_closure_example.png

示例:使用 解算闭包 自定义树木分布。

接口同步

闭包通过匹配接口名称来正确连接输入和输出。如果连接的 闭包区解算闭包 节点的签名不匹配,Blender 可以自动同步它们。

  • 当接口布局不同时,会显示同步图标。

  • 点击图标将更新接口以匹配已连接的闭包。

  • 首次连接闭包时会自动同步。

  • 此后,已有接口不会自动更新,以防止数据丢失。

局限

  • 当在多个上下文中解算闭包时,预览器和检视节点可能无法显示准确的数值。

  • 捕获的外部值为只读值,无法在解算过程中进行修改。

  • 目前,闭包无法访问其解算的上下文之外的属性或数据。