如何创建全局运动模糊参数并全局控制它们?

How to create global Motion Blur parameters and control them globally?

我想在 The Foundry Nuke 中创建一个全局参数 UI 来控制运动模糊值和快门角度。

如何使用 Python 完成此操作?

感谢任何帮助。

我发现了在 Nuke 中全局控制 MotionBlur 的非常简单有效的方法——只需使用通常的 NoOp 节点作为控制器,以及 LinkerScript 。这是它在实践中的工作原理。创建,用于测试,三个 Transform 节点(每个变换节点包含 motionblurshuttershutter offset 旋钮)。

运行 LinkerScript 在 NUKE 的脚本编辑器内部或外部通过 menu.py 文件。然后 select 所有 Transform 节点并从 NUKE 的工具栏中选择:GizmosNoOp Controls Linker。就这样。现在您可以通过 NoOp 控制器全局控制所有 Transform 节点的 MotionBlurmotionblurshutter 属性现在通过表达式链接)。

这是我的 LinkerScript:

import nuke

controller = nuke.nodes.NoOp() 
# There are two identical parameters in parentheses : 
# the 1st one is a real property's name, and the 2nd one is a label for GUI.
knobMB = nuke.Double_Knob('motionblur', 'motionblur')
knobSH = nuke.Double_Knob('shutter', 'shutter')
controller.addKnob(knobMB)
controller.addKnob(knobSH)

def linkNoOpControls():
    for everyNode in nuke.selectedNodes():
        everyNode['motionblur'].setExpression('NoOp1.motionblur')
        everyNode['shutter'].setExpression('NoOp1.shutter')

toolbar = nuke.menu("Nodes")
gizmos = toolbar.addMenu("Gizmos", icon='LinkerIcon.png')
gizmos.addCommand("NoOp Controls Linker", 'linkNoOpControls()')

您应该为工具栏中的新命令加载 24x24 pixels PNG 图标文件。

P.S。不要忘记将您的 PNG 图标文件放入隐藏的 .nuke 目录(如果您使用 Mac,正如您所说,它的路径是 – /Users/<userName>/.nuke),并相应地调整您的 menu.py 文件(粘贴必要的 Python 代码)。

有关详细信息,请阅读 Nuke Directory Locations 文章。