概括
在设置具有多个输入的节点(例如合并节点、切换节点或可变切换节点)时,重命名每个输入端口以指示其上游连接的节点类型会很有用。但是,手动重命名端口可能会很繁琐。
本文旨在以Q100372 中给出的示例为基础:如何使用 Python 重命名输入和输出端口以实现更清晰的连接,并提供通过用户定义的类别将输入端口重命名为合并节点的功能。
更多信息
在构建Katana模板时,如果输入端口显示它们所连接的上游节点的类别,则更容易理解模板的流程。
当使用合并节点的默认行为时,创建的输入被命名为 i0、i1、i2 等。这种命名约定不提供有关上游连接节点的任何信息。
您可以创建一个自定义的 Python 设置,而不是使用 Merge 节点的默认端口名称,该设置会根据连接节点的类别重命名 Merge 节点的输入端口(例如,当连接到 CameraCreate 节点时,Merge 节点的输入端口将为“Camera”;当连接到 NetworkMaterial 节点时,输入端口将为“Material”)。
例如,向合并节点添加该功能时,可以使用以下输入端口名称,这样可以更轻松地理解上游设置:
如上图所示,合并节点的输入端口根据连接到每个输入的节点的类别进行重命名。
示例脚本
本文附带一个 Python 示例脚本,您可以下载并根据工作室的需要进行修改。
要使脚本正常运行,您需要将附件文件添加到您的.katana/Shelves文件夹位置,例如:
Windows: C:\Users\USERNAME\.katana\Shelves\RenameShelf\Type_Merge.py
Linux: /mnt/nethome/users/USERNAME/.katana/Shelves/RenameShelf/Type_Merge.py
有关 Shelf 剧本的更多信息,请参阅以下文章:
Q100401:如何在Katana中创建货架项以提供易于访问的自定义 Python 脚本?
Q100402:如何在Katana中编辑和删除书架项目以修改现有的自定义 Python 脚本?
使用脚本
要在Katana中测试此自定义脚本,您需要创建一系列节点(例如 CameraCreate、PonyCreate 和 Material 节点)。
节点创建完成后,选中所有节点,然后使用快捷键Ctrl+M通过自定义工具架项目脚本合并节点。或者,也可以通过点击“帮助”旁边的齿轮图标,在“工具架”下选择“重命名工具架”工具架操作和“类型_合并”工具架项目来访问该脚本。
如上图所示,合并节点输入端口将根据其所连接的节点类别命名,该类别在货架项目脚本中定义。
该工具还可以添加多个类别。例如,“PrmanCameraSettings”节点的合并端口将被命名为“Prman_Camera_Settings”。
有关设置连接、创建货架项目和超级工具的更多信息,请使用以下链接查看Katana用户指南和Katana开发人员指南:
Python 连接节点: Katana开发者指南 - 使用节点 - 连接节点
书架脚本: Katana用户指南 - Katana中的脚本编写和编程 - 书架项目脚本
SuperTools: Katana用户指南 - 组、宏和 SuperTools - SuperTools
剧本解释
脚本首先在设置好定义和库变量后,收集选定的节点(第 80 行)。收集完这些数据后,创建新的合并节点。
紧随Q100372:如何使用 Python 重命名输入和输出端口以实现更清晰的连接脚本示例之后,从第 87 行开始,通过在 for 循环中遍历每个选定的节点,将选定的节点连接到新创建的合并节点,从而获取选定节点的所有输出端口。
该脚本与Q100372:如何使用 Python 重命名输入和输出端口以实现更清晰的连接文章中的示例不同,它调用了一个新函数checkDictionary()来检查特定节点的用户定义字典,然后再添加输入端口。
自定义字典(第 18 行至第 44 行)使用字典值来匹配现有节点名称(例如 PrimitiveCreate)或节点名称中的潜在部分(例如 Camera),节点类别键用于输入端口重命名。
以下是第 24 行的 MergeType 自定义字典:
例如,根据上面的字典键,PrimitiveCreate 节点的输出将根据其节点类别映射命名为“Geometry”:
checkDictionary()函数遍历这些字典,尝试查找是否有键与所选节点的类型匹配。一旦节点的类型与某个键匹配,该键就会被添加到名为“mergeLabel”的变量中,该变量用作输入端口的名称。
例如, ArnoldCameraSettings节点会捕获 3 个键,并将它们一个接一个地附加在一起,如下所示:
名称组件附加到最终输入端口名称的顺序,由使用checkDictionary()检查类别字典的顺序决定:
如果将上面显示的对checkDictionary()的调用互换,则输入端口将命名为“Camera_Settings_Arnold”而不是“Arnold_Camera_Settings”。
按照字典格式,您可以添加自己的自定义字典,并调用checkDictionary()向输入端口名称添加更多组件。
添加完所有输入端口后,新的合并节点将被设置为选定节点,并通过Q100402 中讨论的功能在节点图选项卡中浮动显示:如何在Katana中编辑和删除书架项目以修改现有的自定义 Python 脚本
将合并节点设置为浮动节点,其行为与创建新节点相同。
注意:有关脚本的更多说明,请查看脚本中的帮助注释。
附件
我们很遗憾听到
请告诉我们