Nuke插件安装完整指南:Gizmo与Python脚本配置详解

一、认识Nuke插件体系

Nuke通过插件系统扩展功能,主要支持两种类型:

  • Gizmos:可视化节点(扩展名.gizmo),用于图像处理流程
  • Python脚本:自动化工具(扩展名.py),可添加菜单命令或界面面板

核心机制:Nuke启动时会扫描特定目录(默认~/.nuke),自动加载其中的插件。用户可通过自定义路径实现灵活配置。

尤其随着AI的普及,更方便编写自己的插件包了,如果你也喜欢开发插件,那就跟着我的文章看一看吧。


二、准备工作:定位核心目录

  1. Windows用户
    C:\Users\[用户名]\.nuke
  2. macOS/Linux用户
    ~/.nuke

首次启动Nuke后自动生成该目录,内含关键文件:

  • menu.py:自定义菜单配置文件
  • init.py:初始化脚本(优先执行)

三、Gizmo插件安装全流程

1. 单个Gizmo快速安装

步骤说明

  1. .gizmo文件复制到.nuke根目录
  2. 编辑menu.py,添加菜单项:
# 创建节点菜单分类
gizmo_menu = nuke.menu('Nodes').addMenu('MyGizmos')
# 添加具体Gizmo
gizmo_menu.addCommand('SuperBlur', 'nuke.createNode("SuperBlur")')
  1. 重启Nuke后,在节点面板的MyGizmos分类中找到新插件

2. 批量安装与分类管理

使用子目录

  1. .nuke下新建Gizmos文件夹
  2. 按功能分类存储Gizmo(如/Gizmos/Keyer//Gizmos/Transform/
  3. menu.py中声明路径:
nuke.pluginAddPath('./Gizmos')  # 自动识别子目录结构

动态加载技巧

# 自动扫描所有.gizmo文件 
import os
filename=os.path.dirname(__file__)
file_path=os.path.basename(filename)

for path, dirs, files in os.walk(filename):
    for file1 in files:
        if file1.endswith('.gizmo'):
            file1name=file1.split(".")[0]
            nodesMenu=nodeMenu.addMenu("{}/Gizmos".format(file_path),icon="Group.png")
            nodesMenu.addCommand(file1name, "nuke.createNode('{}')".format(file1))

四、Python脚本深度配置

1. 基础脚本安装

单文件方式

  1. hello_world.py放入.nuke
  2. menu.py中绑定功能:
import hello_world
nuke.menu('Nuke').addCommand('Script/hello world', 'hello_world()')

2. 模块化开发规范

推荐项目结构

.nuke/
├─ myPlugins/
   ├─ Script/          # 脚本模块
   │  ├─ hello_world.py
      ├─ init.py     # 添加 import hello_world   
   ├─ menu.py   # 主入口
   ├─ init.py # 添加 nuke.pluginAddPath("Script")
├─ init.py   # 添加 nuke.pluginAddPath("myPlugins")

初始化配置

# -*- coding:utf-8 -*-
#弹窗 hello world

import nuke

def firstScript():
	
	nuke.message("我的第一个代码:\nhello world")
# 在menu.py中添加
# -*- coding:utf-8 -*-

import nuke

tools_menu = nuke.menu('Nuke').addMenu('MyTools')
tools_menu.addCommand('Script/hello world', 'hello_world.firstScript()')
nuke.pluginAddPath("Script")

五、高级部署方案

1. 多平台路径配置

Windows环境变量

  1. 新建系统变量NUKE_PATH,值为D:nuke_plugins
  2. init.py中添加:
import os
for path in os.environ['NUKE_PATH'].split(';'):
    nuke.pluginAddPath(path)

Linux/macOS配置

# 在~/.bashrc或~/.zshrc中
export NUKE_PATH="$HOME/custom_plugins:/mnt/server/plugins"

六.图标设置

  • 可以自己设计图标
  • 调用nuke本身的图标
  • 以Grade为例

    20250702131309920-image

    然后创建一个节点,我这里用BackdropNode

    20250702131600322-image

    <img src= "Grade.png">

    在label测试,可以正确显示图片的,就可以作为你的插件图标

七.示例文件

  • 在menu.py 自己加载插件,设置图标快捷键
  • 示例代码(清楚写了注释)
    # -*- coding:utf-8 -*-
    """
    
    """
    import nuke
    import os
    
    nkType=[".nk",".gizmo"]
    
    filename=os.path.dirname(__file__)# 获取当前文件夹完整路径
    forderName=os.path.basename(filename)#获取当前文件夹名称
    PluginGroup = forderName #插件包的名称继承文件夹名称,也可自定义改成字符串例如:PluginGroup = "MyPlugins"
    # tools_menu = nuke.menu('Nuke')#在上面菜单栏添加
    nodeMenu = nuke.menu("Nodes")#在节点工具栏添加
    nodeMenu.addMenu(PluginGroup, icon = "CurveTool.png")#插件包图标也可自定义 ,放在icon文件夹中
    # 自动扫描所有.gizmo文件 
    
    for path, dirs, files in os.walk(filename):
        for file1 in files:
            if os.path.splitext(file1)[-1] in nkType:
                file1name=os.path.splitext(file1)[0]
                #根据含有nk、gizmo的文件夹名作为分类
                dirFolder = os.path.basename(path)
                nodes=nodeMenu.addMenu("{}/{}".format(PluginGroup,dirFolder),icon="Grade.png")
                #如果icons文件夹里有同名png文件,就当作图标,没有就不设置图标
                if os.path.exists(filename+"/icons/"+file1name+".png"):
                	gizmoIcon = file1name+".png"
                else:
                	gizmoIcon = ""
                nodes.addCommand(file1name, "nuke.createNode('{}')".format(file1),icon=gizmoIcon)
    
    
    s = nodeMenu.addMenu("{}/Script".format(PluginGroup),icon="SmartVector.png")
    #这里可以定义快捷键和图标 例如:s.addCommand('hello world', 'hello_world.firstScript()',shortcut='F2',icon='Expression.png')
    s.addCommand('hello world', 'hello_world.firstScript()',shortcut='',icon='')
  • 20250702132135546-image

 
示例插件包
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容