【NUKE教程】Nuke Python 作为包使用

14 九月, 2016
18
0

nukepythonlib
从8.0开始Nuke能作为python的一个模块用了。
意味着在VFX流程中可以用python做很多以前做不了的复杂事情,可以用产品级库替换python中大部分2D,3D和视频编辑模块。

使用Nuke自带的Python,可以通过Python解释器来完成合成工作,并能访问Nuke的Python API,不再需要Nuke了。
这就是说,咱可以用很Pythonic的方式来 re-grade 2000个镜头或者根据已选的表格更改淡入淡出效果,仅仅需要5-6行代码。
更厉害的是能很容易地把Nuke连接到后端设备,集成到自有pipeline,甚至嵌入到其他程序中

使用Nuke发行的Python解释器才能使用Nuke库(其他解释器也能用此包,Nuke自带的是唯一官方支持库)

和标准Python一样,交互式和执行脚本都能玩得转。

例如,下面是交互式的例子

$ python.exe
>>> import nuke
>>> r = nuke.nodes.Read(file='shot-90123-a.exr')
>>> g = nuke.nodes.Grade( inputs=[r] )
>>> g['black'].setValue( 0.05 )
>>> w = nuke.nodes.Write(file='shot-90123-a-graded-up.exr', inputs=[g])
>>> nuke.execute( w, 1, 1 )

IDE中的python代码。

#gradeShots.py
import nuke
shot = sys.argv[0]
r = nuke.nodes.Read(file=sys.argv[0])
g = nuke.nodes.Grade( inputs=[r] )
g['black'].setValue( 0.05 )
outName = '%s-a-grade-up.mov'%(os.path.split(shot)[0])
w = nuke.nodes.Write(file=outName, inputs=[g])
nuke.execute( w, 1, 1 )

运行代码如下:

/python.exe gradeShots.py shot-90123-a.exr
授权

想使用Nuke的交互式授权,就得把环境变量NUKE_INTERACTIVE设置成非零的整数。
比如:

	
$ python.exe >>> import os >>> os.environ[ “NUKE_INTERACTIVE” ] = “1” >>> import nuke >>> ... >>> ...

你能用Nuke的python模块干很多事情,有啥好消息请告诉我们。
作者: Frank Harrison