Nuke Python 线程

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

threading.Thread( target=<function_name>, args=<tuple_of_arguments> ).start()

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

class MyClass( threading.Thread ):

    def __init__( self ):
    threading.Thread.__init__( self )

当想从子线程和主线程通信(nuke session),下面的方法就可用:

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 )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用下文描述的nuke.add...()函数,当有变量事件(比如,创建节点,加载脚本)时就自动调用python函数...
    N景波阅读 2,794评论 0 1
  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    chen_000阅读 521评论 0 0
  • 线程 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0....
    不浪漫的浪漫_ea03阅读 374评论 0 0
  • 情绪一下子哗啦啦的来了,好久好久了。第一次这样做一些发火的事情。因为那个人的无知,干扰,我要让ta抓狂,我其实是无...
    天真的繁荣阅读 312评论 1 0
  • 中国,有太多的东西需要传承,文化,道德,人文,生态.
    游戏人生如戏如人生阅读 247评论 0 0