カスタムメニューとツールバーの定義

カスタムメニューとメニューオプション、およびツールバーとツールバーオプションを自由に追加できます。 Nukeインターフェース。アーティストは、これらのオプションを使用して、プラグインパスディレクトリに保存されているギズモとプラグインをトリガーできます。

たとえば、MyGizmoと呼ばれるギズモをトリガーするオプションを備えたデフォルトのツールバーに新しいメニューを追加するには、次の操作を実行できます。

1.   ホームディレクトリに、というディレクトリを作成します.nuke (まだ存在しない場合)。このディレクトリの詳細については、 ギズモ、NDKプラグイン、PythonおよびTclスクリプトの読み込み
2.   の中に.nukeディレクトリ、というファイルを作成しますmenu.pyまだ存在しない場合。
3.   テキストエディターで、ファイルを変更しますmenu.py、行を追加します:

toolbar = nuke.toolbar("Nodes")

toolbar.addCommand( "Test/MyGizmo", "nuke.createNode('MyGizmo')")

これにより、ノードMyGizmoのインスタンスを作成する「MyGizmo」というラベルの付いたアイテムとともに、「Test」というラベルの付いたメニューがデフォルトのノードツールバーに追加されます。

注意:  ノードClass()次のように、メジャーリリース間で名前が時々変更されるNuke 7〜 Nuke 8。これらの変更はレガシースクリプトには影響しませんが、ノードクラスが変更された場合、期待した結果が得られない場合があります。のtoolbars.pyファイル、作成に使用Nukeのノードツールバーには、現在のすべてのノードクラス名が含まれており、 <install_directory>/plugins/nukescripts/参考のために。

例として、 Nuke 7およびNuke 8、テキストノードClass() TextからText2に変更されました。の中にtoolbars.py 2つのリリースのファイルでは、テキストノードのエントリは次のように表示されます。

m.addCommand( "Text"、 "nuke.createNode(\" Text \ ")"、icon = "Text.png")
m.addCommand( "Text"、 "nuke.createNode(\" Text2 \ ")"、icon = "Text.png")

他のメニューにアイテムを追加することも可能ですNuke独自のツールバーを作成することもできます。次のセクションでは、これらの可能性について詳しく説明します。

ツールバーを追加するには

ツールバーを追加するには:

1.   というファイルを作成しますmenu.pyまだ存在しない場合は、プラグインパスディレクトリに。

プラグインパスディレクトリの詳細については、 ギズモ、NDKプラグイン、PythonおよびTclスクリプトの読み込み

2.   を開くmenu.pyテキストエディタでファイルを作成し、次の形式でエントリを追加します。

t=nuke.toolbar("ToolbarName")

t.addCommand("NewMenu", "PythonCode", "Shortcut", icon="IconName")

交換ToolbarNameツールバーに付けたい名前を付けます。この名前は、以下のコンテンツメニューに表示されますWindows > Customタイトルタブのツールバーの上。

交換NewMenuツールバーに追加するメニューの名前。

交換PythonCode関連するPythonコード(通常はnuke.createNode)、必要に応じて、メニューオプションで呼び出すギズモ、汎用Pythonスクリプト、またはプラグインファイルの名前を使用します。使いやすくするために、このような参照ファイルはすべてプラグインパスディレクトリ内に配置してください。

必要に応じて、交換することもできますPythonCode Python呼び出し可能。

交換Shortcut たとえば、キーボードショートカット付きAlt+ACtrl/Cmd+A 、またはShift+A。手紙a単独で小文字を表しますaF1機能キー1を表します。あなたは組み合わせることができますShiftCtrl/Cmd 、そしてAlt必要に応じてキー。必要に応じて、使用することもできます#A表現しますAlt+A, ^A表現しますCtrl/Cmd+A そして +A表現しますShift+A

交換IconNameの名前で.png (または.xpm)メニューアイコンとして使用する画像。この画像はNukeプラグインパスディレクトリ。サイズは24 x 24ピクセルでなければなりません。

3.   上記のエントリでは、次のオプションの引数をかっこ内に追加することもできます。 "ToolbarName"

True. これがデフォルトです。Trueの場合、nuke.toolbar()は指定された名前でツールバーを呼び出すか、存在しない場合は作成します。例えば、 t=nuke.toolbar("Extras", True) Extrasという既存のツールバーを呼び出すか、まだ存在しない場合は作成します。

False. Falseの場合、ツールバーはまだ存在していなければ作成されず、nuke.toolbar()は戻りますNone。これを使用して、指定された名前のツールバーがすでに存在するかどうかを確認できます。例えば、 t=nuke.toolbar("Extras", False) Extrasという既存のツールバーを呼び出すか、そのようなツールバーが存在しない場合はNoneを返します。

新しいツールバーはデフォルトでは表示されませんが、下にリストされますCustomコンテンツメニューで。そこから、任意のペインに挿入できます。新しいツールバーとその位置に満足したら、レイアウトを保存します(選択しますWorkspace > Save Workspace)。その後、ツールバーは常に表示されますNuke保存されたワークスペースで起動されます。

さまざまなタスク用に複数のツールバーを作成し、コンテキストを簡単に切り替えるために、1つまたは別の存在するレイアウトを保存できます。

例1

次のエントリは、という新しいツールバーを作成しますExtras。ツールバーには次のオプションがありますCreate VectorBlur VectorBlurノードを作成します。エントリも定義しますv VectorBlurノードのキーボードショートカットとして。

t=nuke.toolbar("Extras")

t.addCommand("Create VectorBlur", "nuke.createNode ('VectorBlur')", "v")

例2

この例では、例1で作成したツールバーにAutoplaceというオプションを追加します。このオプションは、次の画像に示すように、選択したノードを次々にきれいに配置します。

Autoplaceを使用する前に
ノードグラフを整理します。

Autoplaceを使用した後
ノードグラフを整理します。

次のエントリは、自動配置オプションを追加します。また、定義しますAlt+Aこのオプションのキーボードショートカットとして。

def _autoplace():

n = nuke.selectedNodes()

for i in n:

nuke.autoplace(i)

t=nuke.toolbar("Extras")

t.addCommand("Auto&place", "_autoplace()", "Alt+a")

メニューまたはツールバーオプションを定義するには

メニューまたはツールバーオプションを定義するには:

1.   まだ行っていない場合は、というファイルを作成しますmenu.pyプラグインパスディレクトリ内。プラグインパスディレクトリの詳細については、 ギズモ、NDKプラグイン、PythonおよびTclスクリプトの読み込み
2.   を開くmenu.pyテキストエディタでファイルを作成し、次の形式でエントリを追加します。

menubar=nuke.menu("MenuType")

m=menubar.addMenu("&NewMenu")

m.addCommand("&NewItem", "PythonCode", "Shortcut", icon="IconName", index=#)

交換MenuType アイテムを追加するメニューまたはツールバーのタイプ:

Nukeアプリケーションのメインメニューバーに項目を追加します。

Animation アニメーションボタンのメニューにアイテムを追加しますすべてのパネル、およびカーブエディタの右クリックメニューに移動します。

Propertiesプロパティパネルの右クリックメニューにアイテムを追加します。

Node Graphノードグラフの右クリックメニューに項目を追加します。

Nodesデフォルトのツールバーにアイテムを追加します。

Viewerビューアーの右クリックメニューにアイテムを追加します。

Pane表示されるコンテンツメニューにアイテムを追加しますCustom

交換NewMenuメニュー名付き。既存のメニュー名を使用すると、既存のメニューに新しいオプションが追加されます。デフォルトのメニューバーとツールバーにオプションを追加することもできます。

交換 NewItem メニューに追加する基になるアイテムを使用します。任意の文字の前に &キーボードショートカットトリガーとしてフラグを立てるため。

交換PythonCode関連するPythonコード(通常はnuke.createNode)、および必要に応じて、メニューオプションで呼び出すギズモ、汎用Pythonスクリプト、またはプラグインファイルの名前を使用します。使いやすくするために、このような参照ファイルはすべてプラグインパスディレクトリ内に配置してください。

プラグインパスディレクトリの詳細については、 ギズモ、NDKプラグイン、PythonおよびTclスクリプトの読み込み

必要に応じて、交換することもできますPythonCode Python呼び出し可能。これには、メニュー項目が呼び出されるときではなく、起動時にスクリプトのエラーについて通知されるという利点があります。ラムダ関数の使用例については、を参照してください例3

交換Shortcut たとえば、キーボードショートカット付きAlt+ACtrl/Cmd+A 、またはShift+A。手紙a単独で小文字を表しますaF1機能キー1を表します。あなたは組み合わせることができますShiftCtrl/Cmd 、そしてAlt必要に応じてキー。必要に応じて、使用することもできます#A表現しますAlt+A, ^A表現しますCtrl/Cmd+A そして +A表現しますShift+A

注意:  キーボードショートカットを割り当てることにより、既存のショートカットを上書きできます。たとえば、ショートカットを割り当てた場合Ctrl/Cmd+O新しいメニュー項目に対しては、ファイルを開くというデフォルトの目的には使用されなくなりました。ただし、ショートカットは、メインメニューバー、ツールバー、ユーザーが作成したツールバー、および新しいメニュー項目を追加するメニューでのみ上書きされます。これは、たとえばビューアで同じショートカットをリセットせずに、ノードグラフにショートカットを追加できることを意味します。ただし、メインメニューバーまたはツールバーで同じショートカットをリセットしないと、ノードグラフにショートカットを追加できません。

交換IconNameメニューアイコンとして使用する.png(または.xpm)画像の名前を使用します。この画像はNukeプラグインパスディレクトリ。サイズは24 x 24ピクセルでなければなりません。

交換#メニューまたはツールバー内のアイテムの位置を表す数字を使用します。インデックスキーワードを使用しない場合、アイテムはメニューまたはツールバーの最後に追加されます。

ヒント:  次のように、メニュー名をaddCommand呼び出しに含めることもできます。
nuke.menu( "MenuType")。addCommand( "NewMenu / NewItem"、 "PythonCode(" name ")")

例1

次のエントリは、という新しいメニューとオプションを作成しますCustom > Cue Renderメニューバーで。「cue_render」というギズモを挿入します。エントリも定義しますCtrl+Rギズモのキーボードショートカットとして。

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("&Cue Render", "nuke.createNode('cue_render')", "Ctrl+R")

例2

ギズモをトリガーするメニュー項目を使用してデフォルトのツールバーに新しいメニューを作成する方法については、下の例を参照してくださいカスタムメニューとツールバーの定義

例3

次のエントリは、というメニューとオプションを作成しますCustom > Filters > Blurメニューバーで。選ぶBlurぼかしノードを挿入します。

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("Filters/Blur", "nuke.createNode(\"Blur\")" )

ラムダ関数でも同じことができます。

menubar=nuke.menu("Nuke")

m=menubar.addMenu("&Custom")

m.addCommand("Filters/Blur", lambda: nuke.createNode("Blur") )

このように、バックスラッシュを使用する必要はありません。