Nuke Viewer设置framerange麻烦

Max*_*xKu 2 python api viewer nuke

我正在Nuke10中编写时间轴同步脚本。我应该更改全局框架设置。例:

nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(100)
Run Code Online (Sandbox Code Playgroud)

之后,我应该更改查看器的播放范围。例:

vv = nuke.activeViewer().node()
vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('5-40')
Run Code Online (Sandbox Code Playgroud)

另外,它起作用了。但是在一起-不是。开始时,我的全局帧范围是1-10。当我运行所有这些行时-帧范围设置为1-100,但是播放范围设置为5-10。

我在脚本中间添加命令以检查播放范围:

nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(100)

x = vv.playbackRange()
print(x)

vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('5-40')
Run Code Online (Sandbox Code Playgroud)

它是打印的:

# Result: 1-10
Run Code Online (Sandbox Code Playgroud)

我认为问题在于,在脚本完成运行之前,查看器中的数据不会更新。

如何强制核对刷新查看器?

还是可能有一条命令正在等待完成以前命令的更新?

还是有必要在查看器中指定帧范围?

Ach*_*yan 5

您只需要说查看者节点重绘即可,它将正确更新范围。

这是一个有效的例子

vv = nuke.activeViewer().node()
nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(100)

vv.redraw()
vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('25-40')
x = vv.playbackRange()
print(x)
Run Code Online (Sandbox Code Playgroud)