Q100484: Nuke でパネルIDを見つけて追加する

まとめ

この記事には、 Nukeに登録されているパネルのデフォルトのパネル ID のリストが含まれており、これらの使用方法について説明しています。


詳細情報

Nuke GUI は、ノード グラフやプロパティ パネルなどのパネルで構成されています。これらのパネルは、さまざまなパネルをドッキングできる GUI のセクションであるさまざまなペイン内にあります。

Nukeで作成されたすべてのパネルは登録されるため、別のパネルに移動したり、場合によっては同じパネル タイプの複数のバージョンを開いたりすることができます。

カスタムパネルを登録して、 Nuke内の要素を制御するための追加のGUIを作成することもできます。例えば、頻繁に作成されるノードをパネルにまとめて簡単に再作成できるようにしたり、レンダーファームなどのパイプラインツールにアクセスするためのパネルを作成したりすることは、便利なカスタム設定です。

これらのパネルは、 nuke scripts.registerPanel()コマンドを使用してNukeに登録されます。このコマンドの詳細については、こちらのドキュメントをご覧ください: カスタムパネル


パネルID

以下は、 Nuke 16.0v4 で作成できる標準パネルのパネル ID のリストです。

 uk.co.thefoundry.backgroundrenderview.1
Curve Editor.1
DopeSheet.1
Error Console.1
uk.co.thefoundry.monitorController.1

Pixel Analyzer.1
Profile.1
Progress.1
Properties.1
Scenegraph.1
Toolbar.1
Variables.1

----------------------------------------------------------------------------------------------------------------

 DAG.1
DAG.2
uk.co.thefoundry.histogram.1
uk.co.thefoundry.histogram.2
uk.co.thefoundry.scripteditor.1
uk.co.thefoundry.scripteditor.2
uk.co.thefoundry.vectorscope.1
uk.co.thefoundry.vectorscope.2
Viewer.1
Viewer.2
uk.co.thefoundry.waveformscope.1
uk.co.thefoundry.waveformscope.2

注:上記の最初のセクションではパネルのインスタンスを1つしか作成できませんが、2番目のセクションでは同じパネルのインスタンスを複数作成できます。同じパネルの各インスタンスには異なる番号が割り当てられます。

パネルIDの用途

パネルIDの活用方法の一つは、 Nuke GUIにパネルを追加する際の制御性を向上させることです。パネルIDとコマンドnuke .getPaneFor()およびnuke .addToPane()使用することで、カスタムパネルを目的のパネルと同じパネルに追加できます。

以下は、ノード グラフと同じペインに単純な Python パネルを追加する方法の例です。

class TestPanel(nukescripts.PythonPanel): ### Create a PythonPanel with an enumeration knob
def __init__(self):
nuke scripts.PythonPanel.__init__(self, 'Test Elements')
self.typeKnob = nuke .Enumeration_Knob('element1', 'element1', ['Test1', 'Test2'])
self.addKnob(self.typeKnob)

pane = nuke .getPaneFor('DAG.1') ### Get the pane for the Node Graph, using it’s ID, ‘DAG.1’
p = TestPanel()
p.addToPane(pane)

現在のNukeセッションから、カスタム パネルの ID を含む、開いているパネルの ID を取得する場合は、以下のコードをスクリプト エディタで実行すると、パネルのタイトルとその ID のリストが返されます。

try:
from PySide6 import QtCore, QtGui, QtWidgets
except ImportError:
from PySide2 import QtCore, QtGui, QtWidgets

def findPanelIDs():
stack = QtWidgets.QApplication.topLevelWidgets()
while stack:
widget = stack.pop()
if widget.windowTitle():
print ("\nTitle: " + widget.windowTitle())
print ("Panel ID: " + widget.objectName())

stack.extend(c for c in widget.children() if c.isWidgetType())

findPanelIDs()



さらに詳しく

nuke .getPaneFor()およびnuke .addToPane()関数の詳細については、以下のリンク先のドキュメントを参照してください。

nuke .getPaneFor()
PythonPanel().addToPane()

    私たちはそれを聞いて申し訳ございません

    理由をお聞かせください