Tcl在Nuke作用

Tcl出现的年代,GUI刚起步;在各种当时还是非常封闭的平台上写高效的GUI程序并不容易,Tk图形库一出现就受到了极大欢迎,它让程序员可以非常快速的创建简单GUI应用;时至今日,包括Python在内的很多语言,最早和缺省支持的GUI Toolkit仍然是Tk,虽然界面看起来实在土不堪言。

TclNuke实际应用之中主要是在Gizmo中处理节点之间的属性关联处理,虽然它也可以做更多事情,但别忘了我们还有更方便强大的Python

学习TCL除了Nuke官方文档(基本上初学者看不懂),大家可以到https://www.yiibai.com/tcl/tcl_environment.html查看帮助

value 和 knob 区别

  1. value会解析任何表达式或动画曲线得到最终结果值。
  2. knob当获取的属性没有设置表达式或动画曲线时与value得到的结果一致,当有表达式或动画曲线时后它并不会解析它,而是直接显示原始变量值。
image
image
image

获取属性值

获取当前节点属性值或者其他节点属性值,是Tcl使用最高的应用场景。

1.获取当前节点属性

继续拿Read节点举例,这里可以使用"this.属性名"表达式或者直接使用"属性名"来获取对应属性值。

[value this.last]
[knob this.last]
[value last]
[knob last]
image
image

2.获取其他节点的属性

假设当前Read节点名称为Read1,那么使用"Read1.属性名"来获取对应属性值。

[value Read1.last]
[knob Read1.last]
image
image

3.获取输入端上级关联节点的属性

根据当前节点存在的输入线从左到右下标从0开始为input0、input1,input2……,当只有一个连接线时候可以直接使用input.属性名,其他使用"this.input0.属性名"表达式或者直接使用"input0.属性名"来获取对应属性值。

[value this.input0.label]
[value this.input1.label]
[value input0.label]
[value input1.label]
image
image

4.获取Group打组后父级的属性

Group组上面添加一个test属性,使用"this.parent.属性值"表达式或者直接使用"parent.属性值"来获取对应属性值。

[value this.parent.test]
[value this.test]
image
image

5.获取指定节点当前是否有错误

使用"节点名.error"获取,返回1为有错误,0则没有错误

[value input.error]
image
image

6.获取指定节点在特定的像素坐标(例如:10,10)中的像素值

返回节点Read1的在红色通道指定像素坐标采样像素值,[sample Read1 Red Center.x Center.y]

注意也可以通过[node xxx]方法来获取指定节点对象

[sample this red 10 10]
[sample this.input red 10 10]
[sample [node input] red 10 10]
image
image

设置属性值

设置指定节点属性值使用knob方法

[knob this.first 20]
image
image

更加高级用法,可以把属性值保存到某个变量里面,通过puts方法把它取出来

[set path [value Read1.file]; return]
[value puts $path]
image
image