Nuke学习笔记

Nuke API 文档

回调函数

部分回调函数的使用

  • 添加回调函数
    • nuke.toNode(“节点名”)[“knobChanged”].setValue(回调函数) 仅对选择的节点生效,此处回调函数是字符串格式
    • nuke.addOnCreate(callable,args=(),kwargs={},nodeClass=”*”)
    • callable 可调用对象
    • args 不定长位置参数列表
    • kwargs 不定长关键字参数字典
    • nodeClass 默认值是星号,指无论当前节点是什么,在事件发生时都会执行这个回调函数,需自定义
  • 删除回调函数
  • 事件函数
    • knobChanged 用户在打开的面版中改变knob后执行事件,可实现联动事件

      • nuke.thisNode() 该控件在打开、关闭面板或输入端改变时,分别指向showPanel、hidePanel、inputChange事件,这三个控件使用代码获取不到,但可以在knobChange中使用控件名
        def testevent():
            """如果打开面板,打印内容"""
            k=nuke.thisKnob()
            if k.name() == "showPanel":
                print("show")
        nuke.addKnobChanged(testevent, nodeClass="NoOp")
    • updateUI 任意UI发生变化后触发,比knobChange优先级低,不应在其中添加任何和回调结构有关的操作

    • autolabel 在updateUI之后执行,用于为节点设置在Node Grape中显示的文本 ,按照函数添加的顺序,从后往前执行,只要那个函数的返回值不是None,那么这个返回值就用于该节点的显示文本,若没有返回值或返回值为None,则使用节点名显示,该显示的文本和label标签不同。

回调函数执行顺序:
可以通过控件设置的回调函数 > 使用注册回调函数添加的回调函数
使用注册回调函数添加的回调函数的优先级依赖注册的先后顺序,并先执行指定了nodeClass参数的回调,再执行满足所有类型的回调。addAutolabel()和addFilenameFilter()是特里,它们恰恰与之相反。
onCreate 对于Group节点,会先执行其中的内部节点,然后再在Group节点上执行一遍回调
onDestory事件和onCreate事件相反
onUserCreate执行优先级 > onCreate执行优先级

部分回调函数