【NUKE教程】Nuke Python 线程

14 九月, 2016
22
0

nukepythonxian
线程很重要,你可以在后台干事,而不让nuke假死。这样背后运行系统命令,程序啥的就很方便。
根据你想干啥,可以很方便地调用python的Threading借口来实现:

	
threading.Thread( target=, args= ).start()

也可以用threading.Thread创建自己的线程类:

class MyClass( threading.Thread ):
    def __init__( self ):
    threading.Thread.__init__( self )
```    
当想从子线程和主线程通信(nuke session),下面的方法就可用:
```python
executeInMainThread(call, args=(), kwargs={})

args是可选参数,kwargs是有名字的参数,在nuke主线程执行完立马返回

executeInMainThreadWithResult(call, args=(), kwargs={})

参数同上,执行后等待结果可用才返回。

注意: 不要在nuke 主线程运行上述函数,nuke会挂起

Examples–MirrorNodes

Node graph里面的mirrors小工具,在组织复杂节点数的时候很有帮助。这段脚本利用线程来慢慢将节点移动到新位置(而不是瞬间),显式的过程,疑惑更少,也更有趣。先来看下基础,下面的代码片段显示了如何平行移动所选节点 。

nodes = nuke.selectedNodes()
positions = [ n.xpos()+n.screenWidth()/2 for n in nodes]
axis = float( sum( positions ) ) / len( positions )