Q100487:如何在活动的 Nuke Studio / Hiero 会话中刷新任务预设

关注

概括

本文将概述如何在活动的Nuke Studio / Hiero会话中刷新任务预设。

更多信息

默认情况下, Nuke StudioHiero仅在应用程序重新启动后才会刷新其任务预设。但是,通过使用 Python,您可以重新加载保存在共享位置的预先存在的任务预设,或者动态地将新任务预设添加到您的任务预设目录中。以下是如何实现这一目标的简单示例:

 #remove all presets that are currently loaded as this prevents them being duplicated
R = hiero .exporters.registry
presetNamesToRemove = hiero .exporters.registry.processorPresetNames()

for presetName in presetNamesToRemove:
R.removeProcessorPreset(presetName)

#reload the presets in again
#where ~/.nuke/TaskPresets/14.0/ is the path to your Export Presets
R.loadPresets("~/.nuke/TaskPresets/14.0")

 上面的代码的工作原理是简单地查找当前加载的任务预设列表并将其删除,这将在使用hiero .exporters.registry.loadPresets()再次加载它们时阻止它们被重复

为了使上述代码按原样工作,每次您希望刷新任务预设时都需要在脚本编辑器中运行它。但是,您可以通过将代码包装到按钮或小部件中来构建此基础。例如,以下代码会将其添加到右键菜单中:

 import hiero .core, hiero .ui, nuke 
from PySide2 import QtWidgets
from PySide2.QtWidgets import QMessageBox
from hiero .core import events
import glob

class refreshTaskPresets(QtWidgets.QAction):
def __init__(self, event):
QtWidgets.QAction.__init__(self, "", None)
self.event = event
self.triggered.connect(self.doit)

def doit(self):

presetPath = "~/.nuke/TaskPresets/14.0" #change this path to your Export Presets directory

#checking if the path given path contains xml files
if len(glob.glob(presetPath+"/*/*/*.xml")) > 1:

#remove all presets that are currently loaded as this prevents them being duplicated
R = hiero .exporters.registry

presetNamesToRemove = hiero .exporters.registry.processorPresetNames()

for presetName in presetNamesToRemove:
R.removeProcessorPreset(presetName)

#reload the presets in again
R.loadPresets(presetPath)

#if the path is invalid, a warning error will appear
else:
msgBox = QMessageBox()
msgBox.setText("Task Presets could not be refreshed. Please check if the path set in refreshTaskPresets.py is valid: "+presetPath)
msgBox.exec_()


def AddActionToMenu(event):
menu = event.menu
menu.addAction("Refresh Task Presets", lambda: refreshTaskPresets(event).trigger())

events.registerInterest((events.EventType.kShowContextMenu), AddActionToMenu)

该脚本的工作原理是将第一个示例代码作为 QAction 添加到 QWidget。然后,它检查用户在脚本中设置的路径 ( presetPath ) 是否包含 xml 文件,如果包含,则刷新任务预设,但如果不包含,则显示错误消息以警告用户。

您可以将此脚本添加到 ~/.nuke/Python/Startup 目录中,现在您应该能够在右键菜单上看到“刷新任务预设”选项。例如,如果右键单击时间轴:

延伸阅读

以下文章包含有关在何处查找任务预设 XML 文件的更多信息: Q100294: Nuke StudioHiero导出预设的目录位置

您可以在以下文章中找到有关在Nuke StudioHiero中使用 Python 启动脚本的更多信息: Q100142:如何在启动时在NukeStudio中执行Hiero Python 代码

有关glob模块的更多信息可以在Python 的文档中找到

您可以在此处找到有关在Nuke中使用 PySide2 的一些信息,但是,您需要参阅Qt for Python 文档以获取更多信息。

    我们很遗憾听到

    请告诉我们