定义自定义菜单和工具栏
您可以将自定义菜单和菜单选项以及工具栏和工具栏选项自由添加到Nuke接口。然后,艺术家可以使用这些选项来触发存储在插件路径目录中的小控件和插件。
例如,要在默认工具栏中添加一个带有触发MyGizmo的Gizmo选项的新菜单,您可以执行以下操作:
1. | 在您的主目录中,创建一个名为.nuke (如果尚不存在)。有关此目录的更多信息,请参见加载Gizmos,NDK插件以及Python和Tcl脚本。 |
2. | 在里面.nuke目录,创建一个名为menu.py如果还不存在。 |
3. | 在文本编辑器中,修改文件menu.py,添加以下行: |
toolbar = nuke.toolbar("Nodes")
toolbar.addCommand( "Test/MyGizmo", "nuke.createNode('MyGizmo')")
这会向默认的节点工具栏添加一个标有“测试”的菜单,并带有一个标有“ MyGizmo”的项目,该菜单创建节点MyGizmo的实例。
注意: 节点Class()名称在主要版本之间有时会发生变化,例如Nuke 7至Nuke 8。尽管这些更改不会影响旧脚本,但是如果修改了节点类,则可能无法获得预期的结果。的toolbars.py文件,用于创建Nuke的节点工具栏,包含所有当前节点类名称,位于<install_directory>/plugins/nukescripts/以供参考。
例如, Nuke 7和Nuke 8,Text节点Class()从“文本”更改为“文本2”。在里面toolbars.py对于两个发行版的文件,“文本”节点的条目如下所示:
m.addCommand(“ Text”,“ nuke.createNode(\” Text \“)”,icon =“ Text.png”)
m.addCommand(“ Text”,“ nuke.createNode(\” Text2 \“)”,icon =“ Text.png”)
也可以在其他菜单中添加项目Nuke甚至创建自己的工具栏。以下各节详细介绍了这些可能性。
添加工具栏
要添加工具栏:
1. | 创建一个名为menu.py在您的插件路径目录中(如果尚不存在)。 |
有关插件路径目录的更多信息,请参见加载Gizmos,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),并在必要时使用您希望菜单选项调用的Gizmo,通用Python脚本或插件文件的名称。为了易于使用,请将所有这些引用的文件放在插件路径目录中。
如果您愿意,也可以更换PythonCode通过Python可调用。
• 更换Shortcut 例如键盘快捷键Alt+A, Ctrl/Cmd+A , 要么Shift+A。信a单独代表小写a。F1代表功能键1。您可以结合Shift, Ctrl/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
以下条目创建一个名为的新工具栏Extras。工具栏包含一个名为Create VectorBlur创建一个VectorBlur节点。该条目还定义v作为VectorBlur节点的键盘快捷键。
t=nuke.toolbar("Extras")
t.addCommand("Create VectorBlur", "nuke.createNode ('VectorBlur')", "v")
例子2
在此示例中,我们向示例1中创建的工具栏添加了一个名为“自动放置”的选项。此选项将选定的节点整齐地放置,如下图所示:
|
|
使用自动放置之前 |
使用自动放置后 |
以下条目添加了“自动放置”选项。它还定义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在您的插件路径目录中。有关插件路径目录的更多信息,请参见加载Gizmos,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),并在必要时使用您希望菜单选项调用的Gizmo,通用Python脚本或插件文件的名称。为了易于使用,请将所有这些引用的文件放在插件路径目录中。
有关插件路径目录的更多信息,请参见加载Gizmos,NDK插件以及Python和Tcl脚本。
如果您愿意,也可以更换PythonCode通过Python可调用。这样的好处是,您可以在启动时(而不是在调用菜单项时)获悉脚本中的错误。有关使用lambda函数的示例,请参见例子3。
• 更换Shortcut 例如键盘快捷键Alt+A, Ctrl/Cmd+A , 要么Shift+A。信a单独代表小写a。F1代表功能键1。您可以结合Shift, Ctrl/Cmd和Alt必要的键。如果您愿意,也可以使用#A代表Alt+A, ^A代表Ctrl/Cmd+A, 和 +A代表Shift+A。
注意: 通过分配键盘快捷键,您可以覆盖现有的快捷键。例如,如果您分配快捷方式Ctrl/Cmd+O到新菜单项,它不再用于默认目的,即打开文件。但是,快捷方式仅在主菜单栏,工具栏,任何用户创建的工具栏以及要将新菜单项添加到的菜单中被覆盖。这意味着您可以在例如“节点图”中添加快捷方式,而无需在查看器中重置相同的快捷方式。但是,如果不在主菜单栏或工具栏中重置相同的快捷方式,则无法将快捷方式添加到“节点图”中。
• 更换IconName以及要用作菜单图标的.png(或.xpm)图像的名称。此图片必须存储在您的Nuke插件路径目录。尺寸应为24 x 24像素。
• 更换#带有代表项目在菜单或工具栏中位置的数字。如果不使用index关键字,则该项目将添加到菜单或工具栏的末尾。
小费: 您还可以将菜单名称放入addCommand调用中,如下所示:
nuke.menu(“ MenuType”)。addCommand(“ NewMenu / NewItem”,“ PythonCode(” name“)”)
例子1
以下条目创建一个新菜单和一个名为Custom > Cue Render在菜单栏中。它会插入名为“ cue_render”的Gizmo。该条目还定义Ctrl+R作为Gizmo的键盘快捷键。
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\")" )
您也可以使用lambda函数执行相同的操作:
menubar=nuke.menu("Nuke")
m=menubar.addMenu("&Custom")
m.addCommand("Filters/Blur", lambda: nuke.createNode("Blur") )
这样,您不必使用反斜杠。