gpt4 book ai didi

python - 链接按程序创建的 2 个不同节点中的两个字段

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:04 25 4
gpt4 key购买 nike

我正在创建一个 nuke 节点,以轻松操纵节点中的不同灯光。我想对其进行编码,以便任何给定文件中有多少个灯光都无关紧要,并且代码可以找出它并显示修改它们所需的工具。为了实现这一目标,我首先确定文件中有多少个灯光并存储该值,然后将其输入“for”循环以创建与原始文件上的灯光一样多的节点和工具。 “tempNumber”是分配给文件上原始灯光的编号,它有助于创建和管理所有工具,并进行标记以匹配它们正在修改的灯光。它变得很复杂,因为生成的节点名称如下所示:

globals()['expoParent{}'.format(tempNumber)]

到目前为止,一切都工作正常,但我一直试图链接两个不同的 Exposure 节点以反射(reflect)用户修改它们时的相同值。我为此在单独的脚本中创建了此代码:

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 节点,并将子节点链接到父节点,这样对父节点所做的任何更改都会立即自动传递给子节点。现在,当我尝试将变量 parchi 替换为 globals()['expoParent{}'.format(tempNumber)] 时,问题就出现了> 和 globals()['expoChild{}'.format(tempNumber)] 。此时代码停止工作并且链接不成功。我读过很多人说变量不应该通过 for 循环创建,但我没有看到任何其他方法。

最佳答案

当您只需将节点字段与表达式链接起来时,为什么还要使用 KnobChanged 函数呢?

以下示例链接两个成绩节点(Grade1 和 Grade2),其中 Grade1 作为父节点。在运行代码之前,您需要将这些内容添加到脚本中。尽管您也可以按程序创建它们。

parent = nuke.toNode('Grade1')
child = nuke.toNode('Grade2')

child['multiply'].setExpression('%s.multiply' % parent.name())

这更加清晰,并且也会在节点树中直观地表示。

关于python - 链接按程序创建的 2 个不同节点中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58715297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com