python - 链接程序创建的 2 个不同节点中的两个字段
问题描述
我正在创建一个 nuke 节点来轻松操纵节点中的不同灯光。我想对其进行编码,这样任何给定文件中有多少灯都无关紧要,代码可以弄清楚并显示修改它们的必要工具。为了实现这一点,我首先确定文件中有多少灯光并存储该值,然后将其馈送到“for”循环以创建与原始文件上的灯光一样多的节点和工具。“tempNumber”是分配给文件中原始灯光的编号,它有助于创建和管理所有工具,并标记为与他们正在修改的灯光相匹配。它变得复杂,因为生成的节点名称如下所示:
globals()['expoParent{}'.format(tempNumber)]
到目前为止,一切都运行良好,但我一直在尝试链接两个不同的 Exposure 节点以反映用户修改它们时的相同值。为此,我在单独的脚本中创建了此代码:
par = nuke.nodes.EXPTool(mode = 'Stops', name = 'Parent')
chi = nuke.nodes.EXPTool(mode = 'Stops', name = 'Child')
par.knob('knobChanged').setValue('chi["red"].setValue(par["red"].value())\nchi["green"].setValue(par["green"].value())\nchi["blue"].setValue(par["blue"].value())')
前面这段代码完美运行,它创建了 2 个 Exposure 节点,并将 Child 链接到 Parent,以便对 Parent 所做的任何更改都会立即自动传递给 Child。现在,当我尝试用par
and替换变量时,问题就来了。此时代码停止工作,链接不成功。我读过很多人说不应该通过 for 循环创建变量,但我没有看到任何其他方法。chi
globals()['expoParent{}'.format(tempNumber)]
globals()['expoChild{}'.format(tempNumber)]
解决方案
当您可以将节点字段与表达式链接时,为什么要使用knapChanged 函数呢?
这是一个链接两个成绩节点(Grade1 和 Grade2)的示例,其中 Grade1 作为父级。在运行代码之前,您需要在脚本中包含这些。尽管您也可以按程序创建它们。
parent = nuke.toNode('Grade1')
child = nuke.toNode('Grade2')
child['multiply'].setExpression('%s.multiply' % parent.name())
这更简洁,并且也可以在节点树中直观地表示。
推荐阅读
- sql-server - INSERT 语句在使用前端时与 FOREIGN KEY 约束冲突,但在使用 Postman 时有效?
- kotlin - mutableMap.setValue(...) 函数不再存在?
- python - 在等待 python 输入时打印到控制台
- sdk - 在 PC 启动时运行 Google Cloud SDK Shell 命令
- tsql - 将 X 列中具有相同值但 Y 列中具有不同值的行分组(不重复)
- python - 如何制作一个数组,其中每个元素都是python中的一个数组?
- swift - TableView中的图像在出现时动画
- android - 您好,我正在尝试为 Flutter 设置我的 Android 设备。梯度错误
- angular - Angular 9新项目-ng服务时未加载应用程序根
- javascript - 刷新后的角度重定向并阻止通过直接 url 访问