如何在for循环中使用nuke.allNodes()遍历多个nuke节点类?

时间:2016-09-23 22:39:24

标签: python nuke

nuke.allNodes()可以过滤一个特定的节点类,即nuke.allNodes(“Transform”)。但如果我想让它过滤更多怎么办呢?有些可以解决吗?

也许把它们放在:var = []

但我如何访问让我们说一个例子中的motionblur值(这个剂量不起作用):

for i in var:
    print i.knob("motionblur").value() #Transform nuke node class
    print i.knob("samples").value() #ScanlineRender nuke node class

谢谢。

1 个答案:

答案 0 :(得分:2)

我有点困惑,因为在你的代码中你有i.knob("motionblur").knob()中的字符串应该是旋钮的名称,而不是节点类型的名称。

我建议迭代所有节点并检查每个节点的类型。然后在这种类型的节点上做你需要的任何事情。

for i in nuke.allNodes():
    if i.Class() == "MotionBlur":
        #DO SOMETHING
    elif i.Class() == "Transform":
        #DO SOMETHING

如果你对两种类型的节点做同样的事情,你可以合并两个列表并迭代它。

n = nuke.allNodes("MotionBlur")
n.extend(nuke.allNodes("Transform"))
for i in n:
    #DO SOMETHING TO BOTH TYPES

我不知道你特意想要达到的目标,所以这可能不是最有效的方法。