Q100354: Pythonを使用して Nuke メニューコマンドをアクティブにする方法

まとめ

この記事では、Python を使用してNukeメニュー システムからコマンドをアクティブ化する方法について説明します。

詳細情報

Nukeのグラフィカル ユーザー インターフェイス (GUI) は非常にカスタマイズ性が高く、その一部としてメニュー システム内のさまざまな項目を追加、移動、またはアクティブ化できるため、ユーザーはNukeに完全に統合されたカスタム パイプラインを設定できます。

Nukeのメニュー システムは、Menus と MenuItems という 2 つのメイン クラスで構成されており、その定義は次のとおりです。

  • メニュークラス:他のメニューまたはメニュー項目のコンテナ
  • MenuItemクラス: Nukeでアクションを実行するQActionのコンテナ

MenuクラスとMenuItemクラスは、 Nuke内のメニュー構造を作成するために使用されます。また、これらのクラスを使用して独自のメニュー構造を作成し、カスタムメニューを作成することもできます。これらの2つのクラスの詳細については、以下をご覧ください。

QActionはQT/PySideクラスであり、コマンドを実行するために使用できる抽象アクションです。QActionの詳細については、QTドキュメントをご覧ください。
https://doc.qt.io/qt-6/qaction.html

GUIのNukeメニューからコマンドを実行すると、実際にはMenuItemコンテナに関連付けられたQActionを呼び出すように指示していることになります。例えば、「編集」メニューで「クローンQAction」を選択すると、そのQActionに割り当てられたコマンドであるノードがクローンされます。

方法

Pythonを使ってNukeのメニュー構造内のコマンドをアクティブにするには、特定の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」メニュー項目コンテナを検索します。次に、そのメニュー項目のQActionがinvoke()関数によって実行されます。この場合、結果として選択されたノードが複製されます。

注:メニューシステム内で特定のQActionを見つけるためのパスを作成するには、サブメニューに入るたびに「/」を区切り文字として使用する必要があります。例: Edit/Clone、Viewer/View/Next など。


nuke .menu()で使用できる現在の有効なメニューは次のとおりです。

「Nuke」 :アプリケーションメニュー

「ペイン」 : UI ペインとパネル メニュー

「ノード」 : ノード ツールバー (および Nodegraph の右マウス メニュー)

「プロパティ」 : プロパティパネルの右マウスメニュー

「アニメーション」:ノブアニメーションメニューとカーブエディタの右マウスメニュー

「ビューア」 : ビューアの右マウスメニュー

「ノードグラフ」 : ノードグラフの右マウスメニュー

「Axis」 : すべてのクラシック 3D Axis_Knobs のメニューに表示される機能。

「シーングラフ」 : シーングラフパネルの右マウスメニュー

「スナップ」 : ベータ3Dノードのスナップメニューにカスタムオプションを追加します。詳細については、 新しいスナップメニューの拡張をご覧ください。

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

    理由をお聞かせください