既存ショートカットの 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"がショートカットとなる。