闭包¶
闭包 节点定义了一个区域,该区域封装了可重用的节点段,其行为类似于函数。它指定了输入、输出和内部逻辑,这些逻辑可通过解算闭包节点在节点树的其他位置执行。
闭包允许用户将自定义过程逻辑传递至节点组,从而使工具更具模块化和适应性。相较于复制或编辑现有组,闭包能在保留主系统结构的同时,暴露用户定义的行为。
一个空白闭包区。¶
输入¶
闭包定义了其自身的输入,作为内部节点逻辑的参数。这些输入可通过将空白输入接口拖拽至其他接口,或在节点属性中手动添加接口来创建。每个输入定义一个参数,当闭包在其他位置被解算时即可接收该参数。
属性¶
闭包 节点本身不具备功能属性,但其接口可通过侧栏中的 节点 选项卡进行配置。可添加、移除和重命名输入与输出,以定义闭包的签名。
- 同步接口
更新当前节点以匹配已连接节点的接口签名。在重命名、添加或移除接口后使用此操作。
- 限定签名
将当前区域标记为闭包签名源,其他节点引用该签名。这确保了多个闭包实例输入与输出定义的一致性。
输入项目¶
- 输入接口的列表
显示闭包中定义的每个接口对应的条目。双击可重命名。
- 添加项目
向闭包中添加一个新接口。
- 移除项目
删除所选输入接口。
- 类型
定义所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认值控件,在接口未连接时使用该控件。
- 形状
定义输入接口支持的数据结构类型,包括 单一值、场 或 栅格。该形状参数决定数据的评估方式及在节点网络中的传递路径。详见接口形状获取详细说明。
输出项目¶
当闭包的输出区被选中时可用。
- 输出接口的列表
显示闭包输出中定义的每个接口对应的条目。双击可重命名。
- 添加项目
向闭包中添加一个新的输出接口。
- 移除项目
删除所选输出接口。
- 类型
定义所选接口的数据类型(例如浮点数、矢量、几何体、物体、捆包)。对于值类型,将显示默认值控件,在接口未连接时使用该控件。
- 形状
定义输入接口支持的数据结构类型,包括 单一值、场 或 栅格。该形状参数决定数据的评估方式及在节点网络中的传递路径。详见接口形状获取详细说明。
输出¶
闭包定义了输出,这些输出将值返回至其被解算的节点树中。可通过将区内的接口拖拽至闭包输出端的空白接口处来创建输出,亦可在节点属性中手动添加。
用法¶
闭包定义了可复用的逻辑,可将其注入到另一个节点树中。它们通常用于程序化系统中,其中部分行为应保持用户定义。
典型用例包括:
为地形生成器定义散布规则。
描述如何通过程序化方式分布或修改实例。
提供可调整的映射、场评估或变换逻辑。
使用外部数值¶
闭包能够 捕获 其作用域外的值。被捕获的值作为闭包定义的一部分存储,即使在不同上下文中评估该闭包时,该值仍可被访问。
捕获值使得无需创建显式输入接口即可保存外部参数(如比例、密度或颜色)。这使得闭包更简洁,并能更轻松地在不同节点树中复用。
在闭包内部捕获外部输入值。¶
例子¶
在地形生成器节点组中,用解算闭包节点替换树木分布逻辑。
在组的接口上暴露闭包输入。
在主节点树中创建一个 闭包区,并将其连接至该输入端口。
在闭包区内,定义所需的树木布局逻辑。
当生成器评估闭包时,将执行区域中定义的自定义分布,而非默认行为。
一个定义树木散布自定义分布模式的 闭包区。¶