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

如何使用Python完成此操作?

任何帮助表示赞赏。

最佳答案

我已经找到了一种非常简单有效的方法来在Nuke中全局控制MotionBlur -仅使用通常的NoOp节点(用作控制器)和LinkerScript。这是实际的工作方式。为了测试,创建三个Transform节点(每个“变换”节点都包含motionblurshuttershutter offset旋钮)。

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

这是我的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图标文件。

python - 如何创建全局运动模糊参数并对其进行全局控制?-LMLPHP
python - 如何创建全局运动模糊参数并对其进行全局控制?-LMLPHP

附言不要忘记将PNG图标文件放到隐藏的.nuke目录中(如果您使用Mac,如您所说,其路径为– /Users/<userName>/.nuke),并相应地调整menu.py文件(粘贴必要的Python码)。

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

希望这可以帮助。

关于python - 如何创建全局运动模糊参数并对其进行全局控制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54173364/

10-12 15:08