Nuke学习笔记
Nuke API 文档
- 本地文档:C:\Program Files\Nuke12.2v2\Documentation
- 在线文档:https://learn.foundry.com/nuke/12.2/content/misc/nuke_devs.html
- Nuke Python Developers Guide: 案例教程
- Python Scripting Reference: API 参考文档
- TCL Scripting Reference: TCL 表达式参考文档
回调函数
部分回调函数的使用
- 添加回调函数
- 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")
- nuke.thisNode() 该控件在打开、关闭面板或输入端改变时,分别指向showPanel、hidePanel、inputChange事件,这三个控件使用代码获取不到,但可以在knobChange中使用控件名
updateUI 任意UI发生变化后触发,比knobChange优先级低,不应在其中添加任何和回调结构有关的操作
autolabel 在updateUI之后执行,用于为节点设置在Node Grape中显示的文本 ,按照函数添加的顺序,从后往前执行,只要那个函数的返回值不是None,那么这个返回值就用于该节点的显示文本,若没有返回值或返回值为None,则使用节点名显示,该显示的文本和label标签不同。
回调函数执行顺序:
可以通过控件设置的回调函数 > 使用注册回调函数添加的回调函数
使用注册回调函数添加的回调函数的优先级依赖注册的先后顺序,并先执行指定了nodeClass参数的回调,再执行满足所有类型的回调。addAutolabel()和addFilenameFilter()是特里,它们恰恰与之相反。
onCreate 对于Group节点,会先执行其中的内部节点,然后再在Group节点上执行一遍回调
onDestory事件和onCreate事件相反
onUserCreate执行优先级 > onCreate执行优先级