2012-11-28

現在アクティブなviewerに選択している複数のnodeをすべてコネクトする(ただし10個まで?

需要があったから作ってみました。

既存ショートカットの ctrl + i を複数のノードを選択している状態で発動させると、新規にviewerノードを作成してそれに選択していたノードがすべてコネクトされる。これを新規のviewerノードではなく、現在のアクティブなviewerでやりたいというリクエスト。



現在のアクティブなviewerはpythonで、

nuke.activeViewer()

で表すことができる。ただし、これはノードを表しているのではないので、後ろに.node()をつけて、

nuke.activeViewer().node()

で現在アクティブなviewerノードとなる。
あとはこれに、選択したノードすべてを繋ぎたい。「繋ぐ(親ノードを指定)」は、

setInput(番号, ノード)

となる。たとえば、Merge1を3番のパイプに繋ぎたい場合は

nuke.activeViewer().node().setInput(2, nuke.toNode('Merge1'))

となる。3番だけど0起点だから数字は「2」だ。
ともあれ、実際のスクリプトとしては、


selN = nuke.selectedNodes()
curV = nuke.activeViewer().node()
a = 0
for n in selN:
    curV.setInput(a, n)
    a = a + 1

見たいな感じで表現できる。
実行してみると・・・

複数あるノードを

選んで実行すると、
カレントビューのviewerノードに繋がる!


あとは、関数化してショートカットへ。


import nuke
def main():
    selN = nuke.selectedNodes()
    curV = nuke.activeViewer().node()
    a = 0
    for n in selN:
        curV.setInput(a, n)
        a = a + 1


として、viewMultiConnect.py って名前で「.nuke」に保存。同じ階層にmenu.pyをつくり、


import viewMultiConnect
m = nuke.menu("Nodes")
m.addCommand("viewMultiConnect", "viewMultiConnect.main()", "ctrl+shift+i")

として保存。(※menu.pyが既存の場合は上記コードを付け加える
この場合最後の"ctrl+shift+i"がショートカットとなる。




3 comments:

  1. Viewer選んでノード選んでYでも同じにできますね。選択の順番が逆ですけど・・・。

    ReplyDelete
  2. コメントありがとうございます!

    最初にviewerノードを選んで、あと繋ぎたい元となるノードを選んで ショートカット「y」ですね。

    リクエストした方の意図だと、恐らくこれだとviewerを選ばないといけないのが面倒なんだろうなって思っていました。viewerってたいてい変なところにあったりするので・・・(笑

    ReplyDelete
  3. Stainless Steel Poker Playing Cards for Poker - iTanium-arts
    Stainless Steel Poker Playing Cards for titanium iphone case Poker Chips for Poker Chips for Poker Chips gold titanium alloy for raw titanium Poker Chips titanium flat iron for Poker Chips for revlon hair dryer brush titanium Chips for Poker Chips for $14.00 · ‎In stock

    ReplyDelete