我正在创建一个核武器节点,以轻松操纵节点中的不同灯光。我想对其进行编码,以便在任何给定的文件中有多少灯都无所谓,并且代码可以找出来并显示修改它们的必要工具。为此,我首先确定文件中有多少灯并存储该值,然后将其馈入“ 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
和chi
替换变量globals()['expoParent{}'.format(tempNumber)]
和globals()['expoChild{}'.format(tempNumber)]
时,问题就来了。此时,代码停止工作,链接不成功。我读过很多人说,不应通过for循环来创建变量,但是我看不到任何其他方法。