2016-09-23 17 views
0

nuke.allNodes()は特定のノードクラス、つまりnuke.allNodes( "Transform")をフィルタリングできます。しかし、それをもっとフィルタにしたいのであれば、どうすればいいですか?いくつかは回避できますか? = []forループでnuke.allNodes()を使用して複数のノードノードクラスを反復処理する方法はありますか?

VARしかし、どのように私は(この用量が動作しない)の例ではmotionblur値言うことができますアクセスできます::

多分に置く

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

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

+0

Nukeノードタイプのリストを繰り返し、各タイプで関数を呼び出しますか?私はNukeのAPIを見ていないが、これを既にサポートしている方法があるかもしれない。 – ospahiu

+0

私はちょうどpythonを学び始めましたが、私はインターネットで数日間、そしてNukeのヘルプドキュメントで検索しました。何も見つかりませんでした。おそらく私は何を探しているのかわからない、あるいはいくつかの回避策がありますか? – masky007

答えて

0

あなたのコードには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 

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

関連する問題