渲染期间绕过节点

作为一个Nuke脚本变大并开始包含许多节点,脚本的处理可能需要更长的时间才能响应。对于需要更多处理能力来进行计算的节点(例如GPU加速节点),尤其是这种情况,在脚本中工作时可能会导致滞后。大量处理节点的一些示例在使用时可能会导致速度降低Nuke包括:BlinkScript,卷积,降噪,散焦,Kronos,MotionBlur,OFlow,VectorGenerator和ZDefocus。

对于这样的脚本,其中的工作变得困难且出现滞后,这很方便$gui表达式运算符,可用于禁用用户界面(GUI)处理。的$gui表达式中的运算符返回1或0作为结果:

通过GUI计算节点时返回1。

GUI不在处理节点时,在渲染时返回0。

将其添加到节点的标准方法是通过表达式。在功能方面,它的行为类似于Switch节点,但由是否使用GUI驱动,这使其具有自主性。

注意:  这些节点是GPU加速节点,如果您有快速图形卡,则$gui表达式中可能不需要运算符。但是,如果遇到滞后,请使用$gui与GPU加速结合使用的表达式可能会有所帮助。

最常见的用途 $gui运算符Nuke是: 切换方式禁用方法选择性变异法

切换方式

Switch方法是最常用的使用方法$gui在表达式中。与其他方法不同,它允许您禁用Switch节点并在不需要时关闭表达式。

1.   在处理器较重的节点之后创建一个Switch节点。
2.   右键单击“切换”节点的which控制,然后选择Add expression...

3.   在表达式框中键入$gui
您应该会看到结果显示为1,因为在Nuke GUI。
4.   连接0输入到处理器重节点(在此示例中为具有20个样本的MotionBlur节点)。
5.   连接1输入到处理器重节点(在此示例中为Transform节点)之前的节点树。
6.   通过GUI播放Viewer帧,您将看到处理更快,因为它绕过了MotionBlur节点并且不显示应用于最终图像的模糊结果。

7.   要处理MotionBlur并查看最终结果,请使用渲染到磁盘Render in background或者Frame Server。这使用了外部程序Nuke GUI,同时不应减慢脚本操作。

注意:  如果您不在后台渲染或使用Frame Server,则渲染使用与Nuke GUI,将无法按预期工作。

8.   渲染后,将处理并显示运动模糊的结果。

禁用方法

禁用方法使用disable选项,而不是使用“切换”节点。节点较少,这会更干净一些,但更难于关闭表达式。

注意:  使用Disable方法意味着您必须删除表达式才能在GUI中查看节点处理结果,它会完全绕过该节点。

1.   右键单击MotionBlur的disable控制选择Add expression...
2.   类型$gui在表达式控件中,然后单击OK

3.   播放查看器,以查看MotionBlur节点处理被绕过并且不显示任何模糊效果。

4.   渲染的结果与切换方式,但是,您必须完全删除该表达式才能重新启用模糊效果。

选择性变异法

选择性变化方法使用$gui运算符表达式,结合其他两个值。这允许设置两个独立的数值,这些数值可以根据哪种模式分配给参数Nuke位于(在GUI中或在非GUI中渲染期间),仅适用于开/关值结果。表达式如下所示:

$gui?0:20

0是要使用的值Nuke GUI模式和20渲染期间在GUI模式之外使用的值。

注意:  使用Selective Variation方法意味着您必须删除表达式才能在GUI中查看节点处理结果,它会完全绕过该节点。

1.   在节点(在本示例中为MotionBlur节点)中,表达式$gui?0:20已添加并分配给Shutter Samples控制。这将在GUI中渲染0个样本,在后台渲染期间渲染20个样本。

2.   如果通过GUI进行播放,您将看到它访问了MotionBlur节点,但是值保持为0,直到使用渲染为止。 Render in background,届时将使用20个样本。

3.   渲染的结果与切换方式