Nuke Gizmo制作
发表于更新于
字数总计:414阅读时长:1分钟阅读量: 长沙
LearnnukeNuke Gizmo制作
lingyungizmo制作
在nuke中选中一些节点,按ctrl+g打包组,一个gizmo节点就做好了。
ctrl+回车键,进入组。
两种方法进行组和组内节点的关联:
1.在gizmo组节点上右键Manage User Knobs,再点击pick
找到组内节点的属性添加进来。
2.在gizmo组上添加一个knob (例: Floating Point Slider),real_name名为size
再进入组内,在比如Blur节点上,给size属性右键添加表达式
parent.size
关联组内的switch节点,添加一个下拉框的knob名为switch:
在switch节点上添加表达式 parent.switch
关联组内一个节点的激活状态,添加一个checkbox knob,名为premulut
在组内找到节点的disable属性,添加表达式:
1-parent.premulut
两个例子
给这个gizmo节点添加knobChangedScript,
实现激活名为test勾选框的时候,test_value属性变为可控。
Add - Python Custom
1 2 3 4 5 6 7 8 9 10
| nuke.thisNode()["knobChanged"].setValue(''' tn = nuke.thisNode() tk = nuke.thisKnob() if tk.name() == "test": if tk.value() == 1: tn.knob("test_value").setenabled(True) else: tn.knob("test_value").setenabled(False) ''')
|
让gizmo节点实现一个功能,每添加一个输入端,则添加一个额外的输入端。
同样写在Python Custom
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| nuke.thisNode().knob("knobChanged").setValue(''' tn = nuke.thisNode() tk = nuke.thisKnob() curInputs = tn.inputs()
# 进入这个节点 tn.begin() pos1x = nuke.toNode("Input1")["xpos"].value() pos1y = nuke.toNode("Input1")["ypos"].value() existInputs = len(nuke.allNodes("Input")) if existInputs == curInputs: nuke.nodes.Input(name="Input%s" % str(existInputs + 1), xpos=pos1x + 100*existInputs, ypos=pos1y) extraInputs = existInputs - curInputs if extraInputs > 1: inputNodes = nuke.allNodes("Input") for node in inputNodes: if int(node.knob("name").value().split("Input")[1]) > curInputs + 1: nuke.delete(node) tn.end() ''')
|