2

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

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

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

vv = nuke.activeViewer().node()
vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('5-40')

分开它的工作。但在一起 - 不是。一开始我有全局帧范围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')

这是打印:

# Result: 1-10

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

如何强制 nuke 刷新查看器?

或者可能有命令等待完成之前命令的更新?

或者可能需要在查看器中指定帧范围?

4

1 回答 1

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)
于 2017-04-01T01:28:36.140 回答