Я нашел довольно простой и эффективный метод глобального управления MotionBlur
в Nuke - просто используя обычный узел NoOp
, служащий в качестве контроллера, и LinkerScript . Вот как это работает на практике. Создайте для тестирования три узла Transform
(каждый узел Transform содержит ручки motionblur
, shutter
и shutter offset
).
Запустите LinkerScript изнутри в редакторе сценариев NUKE или извне через файл menu.py
. Затем выберите все узлы Transform
и на панели инструментов NUKE выберите: Gizmos
- NoOp Controls Linker
. Это все. Теперь вы можете глобально управлять MotionBlur
для всех узлов Transform
через контроллер NoOp
(свойства motionblur
и shutter
теперь связаны через выражения).
Вот мой 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 для вашей новой команды на панели инструментов.
![enter image description here](https://i.stack.imgur.com/YsM3q.png)
P.S. Не забудьте поместить файл значков PNG в скрытый каталог .nuke
(если вы используете Mac, как вы сказали, его путь - /Users/<userName>/.nuke
), и настройте menu.py
файл соответственно (вставьте необходимый код Python).
Подробнее см. Расположение каталогов Nuke Статья.
Надеюсь, это поможет.