Nuke学习笔记

Nuke 脚本编辑窗口相关快捷键和操作

tab键 自动代码补全 输入部分脚本后,可获取相关的方法

Edit > Preferences > ScriptEditor > echo python commands to output window 将输出常用操作的 Nuke Python API 代码显示在代码执行结果显示区。

输出操作Python代码到脚本编辑器 png

搭建 Pycharm IDE 开发环境

在 Pycharm 中新建一个项目,用于开发Nuke插件,必须使用Nuke本身的Python编译器 "C:\Program Files\Nuke版本\python.exe",该python编译器拥有完整的Nuke开发环境。

关于 nukescripts 模块的使用,需要将“C:\Program Files\Nuke版本号\plugins”加入搜索路径

关于 Pyside2 模块的使用,需要将“C:\Program Files\Nuke版本号\pythonextensions\site-packages”加入搜索路径

配置好上面的环境后执行代码会发现报错:缺少一个“_nuke” 模块。这个模块在这里 "C:\Program Files\Nuke12.2v2\lib\site-packages\nuke.pyd" 中,由于这个文件和上面的 nukescripts 模块同级目录的nuke模块重名,导致不能加载这个nuke.pyd,因此会报这个错,如何解决呢?

  • 方法一.从搜索路径中去掉 “C:\Program Files\Nuke版本号\plugins”,但nukescripts模块的会缺少代码补全(加载完nuke.pyd后,会自动加载nuke和nukescripts模块,因此在执行代码时不会报这两个模块的错).
  • 方法二.在pycharm中将编辑nuke代码的Python解释器和运行nuke代码的python解释器分开,在编写的nuke代码的时候,将项目中python interpreter中设置的python解释器设置为普通的python解释器,可以在其搜索路径中加入我们想要的搜索路径,然后在运行nuke代码的时候,在Run/Debug configuration中设置的python解释器设置为带有nuke环境的python解释器即可。

切换执行时的Python解释器 png

此环境可能无法正常运行Pyside2相关的代码,需要在nuke中执行(详情见下一节)。

Pycharm中使用Pyside2报错 png

Nuke 命令行模式

"C:\Program Files\Nuke12.2v2\python.exe" "D:\test.py"

运行脚本需使用Nuke的Python解释器,若后台调用脚本,可使用subprocess方法切换至Nuke本身的Python解释器。

若要使用 Pyside2 模块,需要在通过nuke主程序 nuke.exe 使用参数 -t 就可以运行Pyside2模块。

"C:\Program Files\Nuke12.2v2\nuke.exe" -t "D:\test.py"

但 -t 参数不能获取到 QApplication 类,只能获取到 QCoreApplication 类(QApplication是QCoreApplication的子类),所以要通过 --tg 参数来获取 Pyside2 模块创建窗口所需要的 QApplication 类。

"C:\Program Files\Nuke12.2v2\nuke.exe" --tg "D:\test.py"

nuke命令行语法:

nuke.exe <\option> [<\argv>] <\script> [<\range>]

使用不同类别的主程序常用参数:
  • --nukex
  • --studio
  • --nc
  • --nukeassist

可以在Windows环境下使用doskey创建快捷键(只在当前窗口有效),可以使用PATH环境变量,并写在一个bat脚本中:

doskey nukex = "C:\Program Files\Nuke12.2v2\nuke.exe" --nukex $*

效果等于:
“C:\Program Files\Nuke12.2v2\nuke.exe” -- nukex <\option> [<\argv>] <\script> [<\range>] = nukex <\option> [<\argv>] <\script> [<\range>]

一些常用的参数:

  • -t 适用于纯命令行脚本
  • –tg 会产生一个 QApplication 实例,用于执行 Pyside2 的Gui相关脚本
  • -x <\scriptname> 渲染名为 \scriptname 的nuke工程中所有激活的write节点
  • -X<\nodename> 仅渲染指定名的\nodename的write节点
  • -F 指定帧范围
  • –cont 出错后继续渲染
  • –sro 按顺序依次渲染节点
  • -f 以全尺(full resolution)的方式打开nuk工程
  • -p 和-f相对,以 proxy 的方式打开nuke工程
  • -v 打开指定的图像文件,如果是视频,还需要跟上帧范围(文件路径使用正斜杠,不能使用反斜杠)
  • –pause 打开nuke工程时暂停 Viewer 初始化
  • -P 显示每个节点的资源占用情况
  • -Pf<\filename> 将每个节点的资源占用情况写入名为 \filename 的xml文件中
  • –multigpu 启用多gpu支持
  • –gpulist 列出当前系统可用的GPU及其索引号
  • –gpu ARG 使用由索引号ARG指定的GPU,在终端模式下启动GPU加速
  • –safe 安全模式,启动nuke不加载 .nuke、NUKE_PATH及OFX插件
  • -m # 指定线程数
  • -n 关闭节点postage stamps的预览显示
  • -q 关闭终端输出
  • -i 使用nuke_i授权,可与 -x 和 -t 连用,写成 -ti 或 -xi,默认情况下使用nuke_r授权,但有些操作需要使用nuke_i授权。
  • –remap<\pathPair> 仅能在命令行模式下使用,在当前会话中设置路径映射,要求参数为一对或多对路径拼成的字符串,用逗号分隔