Q100273:如何在 Nuke 终端会话中设置路径替换

症状

您已在Nuke “编辑”>“首选项...”中设置了路径替换,但在命令行渲染或 Python 终端模式下,文件路径并未正确替换。您的路径替换应如下所示:

原因

在命令行渲染或 Python 终端模式下,文件路径可能无法正确替换,因为当Nuke在 GUI 模式之外运行时,首选项不会加载。

终端模式(无图形用户界面)允许您在不启动图形用户界面的情况下输入 Python 命令。
此模式下会显示>>>命令提示符。命令行模式(批处理模式)允许您在终端中运行命令来渲染您的Nuke脚本(无需图形用户界面)。

有关更多信息,请参阅Nuke在线文档的命令行操作部分

解决

为了解决这个问题,你可以使用命令行参数--remap ,它会接受一个路径替换对列表,并且只对当前活动的Nuke会话有效;或者在你的init.py文件中设置filenameFilter回调,使其在所有Nuke会话中持久有效。


当前Nuke会议

以下是在终端模式下运行Nuke时如何使用该标志的示例:

nuke -t --remap "X:/path,Y:,A:,B:/anotherpath"

在哪里:

  • nuke指的是Nuke可执行文件的正确安装位置:

    Windows :C:\Program Files\Nuke16.0v4\Nuke16.0.exe
    OSX :/Applications/ Nuke 16.0v4/ Nuke 16.0v4.app/Contents/MacOS/Nuke Nuke
    Linux :/usr/local/ Nuke 16.0v4/ Nuke 16.0

  • 任何以X:/path开头的路径都会转换为以Y:开头。
  • 任何以A:开头的路径都会转换为以B:/anotherpath

要在不同操作系统之间替换路径,您的命令例如可以写成:

nuke -t --remap "/home/project/shot/,C:/project/shot"

注意:路径映射仅应用于当前的Nuke会话,不会影响运行Nuke GUI 时使用的 Preferences.nk 文件。


多次Nuke会话

为了使路径替换在多个Nuke会话中保持不变,您可以使用filenameFilter回调函数。以下示例展示了如何进行设置,其场景与前面的示例类似:

import nuke 

def myFilenameFilter(filename):
filename = filename.replace( 'X:/path', 'Y:/' )
filename = filename.replace( 'A:/', 'B:/anotherpath' )

return filename

nuke .addFilenameFilter(myFilenameFilter)

要在所有终端会话中执行此代码,您需要将代码添加到init.py 文件中。

有关filenameFilter回调的更多信息,请参阅Nuke Python 开发人员指南

    我们很遗憾听到

    请告诉我们