Q100484: Nuke でのパネル ID の検索と追加

フォローする

まとめ

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


詳しくは

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

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

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

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


パネルID

以下は、 Nuke 14.0v5 で作成できる標準パネルのパネル 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

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

 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 を使用できる 1 つの方法は、 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 のリストが返されます。

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()

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

    理由をお聞かせください