概括
本文介绍了Nuke基于扫描线的图像架构如何处理和读取图像数据、跨网络读取文件时如何影响性能以及如何利用Nuke的本地化功能来提高性能。
更多信息
Nuke是一种扫描线图像合成系统,这意味着它一次处理和读取图像一行像素,直到到达图像末尾。 (这些扫描线在 NDK 插件开发术语中称为行)。
例如,如果查看器显示 640x480 分辨率的图像,它会将其分成 480 行,并一次请求一行,应用所需的任何处理并显示它。如果您正在显示全孔径超级 4K 图像 (4096x3112),那么您将看到 3112 行请求。
扫描线渲染有两大优点。首先,以行大小的块处理图像意味着整个图像不需要同时驻留在计算机内存中,因此Nuke能够处理几乎无限范围的图像大小。其次,可见像素的处理次数保持在最低限度。此行为旨在提供良好的可扩展性能,以便Nuke能够充分利用机器资源。
有关Nuke架构的更多信息以及查看器如何读取数据的详细说明可以在NDK 开发人员指南中找到。
从Nuke 13.2 开始,该软件现在提供了自上而下方法渲染的能力,它有可能通过首先渲染图中不需要输入数据的所有节点来加速脚本的输出。有关自上而下的更详细方法,请查看以下信息: https: nuke
从网络上阅读
Nuke的扫描线架构读取文件的方式会影响通过网络读取文件时的性能。
通过输入/输出 (I/O) 文件访问请求读取图像,以将数据从源文件传输到请求者应用程序 (Nuke)。如果源映像位于发送请求的计算机本地,那么 I/O 请求将会很快,特别是如果您拥有快速存储的话。但是,如果源映像位于网络存储系统上,则网络读/写速度和带宽可能会增加文件读取性能的额外延迟。例如,从网络读取 4k (4096x3112) 图像到Nuke需要 3112 个网络访问请求。网络文件 I/O 请求的数量会受到网络带宽的影响,每个请求都会受到网络读/写速度的影响。
注意:如果您使用的网络存储系统在处理大量小读取大小以检索图像数据时扩展性不佳,则可能会因大量文件 I/O 请求而出现网络延迟Nuke需要受到网络带宽的限制。
您可以按照本文中概述的步骤测试网络存储系统的读/写速度: Q100296:如何检查网络速度
通过使用本地化功能,您可以在处理网络上的素材时提高Nuke的交互性能。有关此内容的更多信息如下。
读取 EXR 图像和压缩类型
EXR 图像类型是上述规则的例外,其中Nuke将图像类型读取为一次处理一行的扫描线。 EXR 图像的压缩将决定Nuke在将其单独加载到扫描线之前必须一次解包的数据量。 ZIP (1) 是默认情况下读取和写入速度最快的压缩,因为Nuke可以直接在扫描线中解包或解包,而不是在开始读取之前等待更大的数据块解包。不过,未压缩文件的读取速度比 ZIP (1) 更快。
对于 EXR 图像的某些压缩选项, Nuke将读取更大的块,而不是一次读取 1 个扫描线。以下压缩选项将一次以 64 条扫描线为单位进行解释和读取,从而减少对图像的整体访问: ZIP (16)、PIZ、PXR24、B44、B44A。
Nuke 文档中列出了Nuke使用的 EXR 压缩类型列表Nuke
如果您担心检索完整输入图像的网络访问,则使用通过上述压缩之一压缩的 EXR 数据可能会最大程度地减少整体网络访问。然而,这取决于所使用的网络存储系统的读/写速度,在处理大分辨率时仍然可能会出现速度减慢的情况。
本土化
应对通过网络读取文件造成的性能影响的一种方法是使用Nuke的本地化功能来加速Nuke GUI 会话中的文件 I/O,并减少网络交互。
启用本地化后, Nuke将存储脚本读取的图像的本地缓存。创建本地缓存而复制的文件首先从网络位置作为扫描线读取,但之后使用本地版本,而不是原始版本网络文件,同时您在Nuke GUI 中处理脚本。
Nuke在脚本中保留对网络文件的引用,以便在将脚本发送给其他用户或渲染场时可以找到它们,但您可以通过避免重复使用许多小文件 I/O 请求来减少网络压力。当您处理脚本时,通过网络读取图像数据。
有关本地化文件和媒体的更多信息,请访问以下链接的在线帮助:
进一步的帮助
如果您在使用本文中概述的建议后仍然遇到读写文件的性能问题,请打开支持票证并让我们知道您遇到的问题以及您迄今为止采取的故障排除步骤。
有关如何打开支持票证的更多信息,请参阅Q100064:使用支持门户文章。
如果您在实时播放时遇到问题,请查看本文中提供的信息: Q100297:实时播放故障排除
我们很遗憾听到
请告诉我们