まとめ
この記事では、 Nukeメニュー システムからコマンドを Python でアクティブ化する方法について説明します。
詳しくは
Nukeのグラフィカル ユーザー インターフェイス (GUI) は非常にカスタマイズ可能であり、その一環としてメニュー システムでさまざまな項目を追加、移動、またはアクティブ化できるため、ユーザーはNukeに完全に統合されたカスタム パイプラインをセットアップできます。
Nukeのメニュー システムは、Menus と MenuItems という 2 つの主要なクラスで構成されており、その定義は以下に示されています。
- Menu クラス:他の Menu または MenuItem のコンテナー
- MenuItem クラス: Nukeでアクションを実行する QAction のコンテナー
Menu クラスと MenuItem クラスは、 Nuke内でメニュー構造を作成するために使用されます。これらを使用して独自のメニュー構造を作成し、カスタム メニューを作成することもできます。 2 つのクラスの詳細については、以下を参照してください。
QAction は QT/PySide クラスであり、コマンドの実行に使用できる抽象アクションです。 QAction の詳細については、次の QT ドキュメントを参照してください: http://doc.qt.io/qt-5/qaction.html
GUI でNukeメニューからコマンドを実行すると、実際には、MenuItem コンテナに、関連付けられた QAction を呼び出すように指示することになります。たとえば、[編集] メニューで [QAction の複製] を選択すると、その QAction に割り当てられたコマンドであるため、ノードが複製されます。
方法
Nukeのメニュー構造でコマンドを Python 的にアクティブにするには、特定の MenuItem コンテナを「検索」し、それに関連付けられた QAction を呼び出す必要があります。これは、以下のコードを使用して実行できます。
mainMenu = nuke .menu("Nuke")
mainMenu.findItem("Edit/Clone").invoke()
コードの最初の行mainMenu = nuke .menu("Nuke")
、メインのNukeメニュー ツールバーの Menu クラスを返します。
注:代わりにノード ツールバーにアクセスしたい場合は、「Nuke」を「Nodes」に置き換えることにより、同じコマンドで実行できます。
2 行目のmainMenu.findItem("Edit/Clone").invoke()
、 findItem()
関数を使用して、「Edit」メニュー内の「Clone」MenuItem コンテナを検索します。次に、その MenuItem の QAction がinvoke()
関数を介してアクティブ化されます。この場合の結果は、選択したノードのクローンを作成することになります。
注:メニュー システムで特定の QAction を見つけるためのパスを作成するには、サブメニューに入るたびに区切り文字として「/」を使用する必要があります。例: 編集/クローン、ビューア/表示/次へなど。
nuke .menu()
で使用できる現在有効なメニューは次のとおりです。
「Nuke」 : アプリケーションメニュー
'Pane' : UI ペインとパネル メニュー
'ノード' : ノード ツールバー (およびノードグラフの右マウス メニュー)
'プロパティ' : プロパティ パネルの右マウス メニュー
'アニメーション': アニメーション メニューとカーブ エディタの右マウス メニューのノブ
'Viewer' : ビューアの右マウス メニュー
「ノード グラフ」 : ノード グラフの右マウス メニュー
'Axis' : すべての Axis_Knobs のメニューに表示される機能。
私たちはそれを聞いて申し訳ございません
理由をお聞かせください