Как создать глобальные параметры Motion Blur и управлять ими глобально? - PullRequest
0 голосов
/ 14 января 2019

Я хотел бы создать глобальные параметры в пользовательском интерфейсе Foundry Nuke для управления значением размытия при движении и углом затвора.

Как это сделать с помощью Python?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 января 2019

Я нашел довольно простой и эффективный метод глобального управления 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 enter image description here

P.S. Не забудьте поместить файл значков PNG в скрытый каталог .nuke (если вы используете Mac, как вы сказали, его путь - /Users/<userName>/.nuke), и настройте menu.py файл соответственно (вставьте необходимый код Python).

Подробнее см. Расположение каталогов Nuke Статья.

Надеюсь, это поможет.

...