1

nuke.allNodes() は、1 つの特定のノード クラス、つまり nuke.allNodes("Transform") をフィルタリングできます。しかし、もっとフィルタリングしたい場合はどうすればいいですか? いくつかの回避策はありますか?

おそらくそれらを次の場所に配置します: var = []

しかし、例でモーションブラー値にアクセスするにはどうすればよいですか (これは機能しません)。

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

ありがとうございました。

4

1 に答える 1

2

あなたのコードにはi.knob("motionblur"). の文字列.knob()は、ノード タイプの名前ではなく、ノブの名前にする必要があります。

すべてのノードを繰り返し処理し、各ノードのタイプを確認することをお勧めします。次に、そのタイプのノードで必要なことをすべて行います。

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

両方のタイプのノードに対して同じことを行っている場合は、2 つのリストをマージして繰り返し処理することができます。

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

具体的に何を達成しようとしているのかわからないので、これは最も効率的な方法ではないかもしれません。

于 2016-09-27T23:40:13.693 に答える