☰
Natron Write 节点完全指南:将节点树结果渲染输出到磁盘的实战手册
2026/10/13 11:54:57 网站建设 项目流程
  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载

Write 节点是 Natron 合成流程的“终点站”,负责把节点树的计算结果以.mov视频或编号图像序列的形式写入磁盘,是整个渲染输出流程的核心(对应 Engine/WriteNode.h 中WriteNode的实现)。本文基于官方指南 thenodes-image-write.rst,结合仓库源码,完整讲解 Write 节点的创建、参数面板(Filename、Format Type、Color、Interpretation、Encoding)以及渲染启动方式,读完即可独立完成从“节点树”到“磁盘成片”的完整输出流程。

Write 节点的角色与工作方式

从源码结构看,WriteNode并非一个独立的渲染器,而是继承自NodeGroup的“外壳”:它会根据输出文件的扩展名,动态地在内部挂载对应的 OpenFX Writer 插件,并把所有 Writer 统一呈现为一个带动态设置面板的 Write 节点。Engine/WriteNode.h中对类的注释明确写到:这是一个“围绕所有 OpenFX Writer 节点的包装(wrapper)”,其设置面板会随所选格式动态变化,所有调用最终都会转发给内部对应的 OpenFX 插件。

仓库中可用的内置 Writer 插件 ID 定义在 Engine/EffectInstance.h:

插件插件 ID用途
WriteOIIOfr.inria.openfx.WriteOIIO基于 OpenImageIO 的多格式写插件(默认 Writer)
WriteFFmpegfr.inria.openfx.WriteFFmpeg视频类编码(MOV/MP4 等)
WritePFMfr.inria.openfx.WritePFMPFM 浮点图像格式
WritePNGfr.inria.openfx.WritePNGPNG 图像格式

其中WriteNode::isVideoWriter()(Engine/WriteNode.cpp)只对WriteFFmpeg返回true,也就是说只有它被识别为视频类 Writer;而新建 Write 节点时未指定有效扩展名时使用的默认插件是PLUGINID_OFX_WRITEOIIO(见 Engine/WriteNode.cpp 中WRITE_NODE_DEFAULT_WRITER的定义)。这也解释了原文档的现象:一旦你在文件名后面填入.mov、.tga、.tiff等扩展名,Write 节点的参数面板就会立即展开为该格式专属的那一组参数。

快速上手:三步完成渲染输出

原文档给出了最简洁的渲染输出流程,配合 compositing-projects-render.rst 中的说明,完整步骤如下:

  1. 创建 Write 节点:按快捷键w(或在节点图空白处右键新建节点)。创建时若偏好设置中启用了“Prompt with file dialog when creating Write node”(writeUseDialog,默认开启,定义于 Engine/Settings.cpp),会先弹出保存文件对话框让你直接选定输出路径;该对话框的调用链可在 Gui/Gui20.cpp 的Gui::createWriter()中看到——它会先收集getSupportedWriterFileFormats()支持的格式过滤器,再弹出保存对话框。
  2. 连接节点树:把 Write 节点接到你节点树的最后一个节点上,它会把整个上游的计算结果作为输入写出去。
  3. 指定输出位置:点击 “file” 参数旁边的小文件夹图标,浏览并选择结果要渲染到哪个目录。文件浏览器有收藏夹、自动分组编号文件等特性,详见 getstarted-environment-fileselect.rst。

  1. 指定帧范围:设置 “Frame Range / First Frame / Last Frame” 参数,例如官方截图示例中设置了 1 到 665 帧的范围。
  2. 启动渲染,两种方式任选其一:
    • 点击节点属性面板中的Render按钮;
    • 或通过菜单Render → Render Selected Writers(只渲染选中的 Write 节点)。若要渲染全部 Write 节点,菜单项为Render → Render All Writers,具体菜单语义见 getstarted-environment-menus.rst。

Filename:文件名、扩展名与格式识别

点击文件夹图标会打开文件浏览器,用于指定输出文件。这里有一条最关键的约定:输出文件名必须以目标格式的扩展名结尾(如.mov、.tga、.tiff)。扩展名一填好,Write 节点内部就会据此挑选对应的 Writer 插件并展开该格式专属的参数。这正是 Engine/WriteNode.cpp 中initializeKnobs()所建立的“通用参数 + 格式专属参数”动态面板机制的体现:Filename、Format Type、Color、Interpretation等通用参数始终保留(参见文件中genericWriterKnobNames[]列表),而编码器相关参数由挂载的 Writer 提供。

对于图像序列,文件名还可以使用帧占位符语法:

  • ###:按三位数字补零编号,如render_###.tiff会生成render_001.tiff、render_002.tiff…;##则生成两位编号。
  • 多视图项目输出到多个独立文件时,可用%v(展开为l/r)或%V(展开为left/right),详见 compositing-stereo.rst。

Format Type:输出格式与像素尺寸

“Format Type”控制输出图像的像素尺寸(宽高)。需要注意:这个尺寸不受查看器(Viewer)的 proxy 设置影响——Proxy 只影响预览时的显示分辨率,不影响最终写盘的分辨率。对应源码层面,Write 节点保留了一组格式相关参数:kParamOutputFormat(formatChoice格式选择)、kParamFormatType、kParamFormatSize、kParamFormatPar(像素宽高比),它们被列入genericWriterKnobNames通用参数列表(Engine/WriteNode.cpp 与 L116-L148),切换 Writer 时这些参数会被保留,不会在用户不知情时被重置。

Color:色彩空间转换

Write 节点可以对输出图像做色彩空间转换。文件会从“Input colorspace”(输入色彩空间)被转换到“File Colorspace”(文件色彩空间)。

原文档给出的三条实操建议:

  • 建议将 “Input” 保持为linear(线性),这是 Natron 推荐的基础工作流;
  • 当文件色彩空间与输入色彩空间相同时,不会发生任何转换;
  • “File Colorspace” 通常设置为与主 Read 节点相同的色彩空间,这样输出的图像在色彩上与原素材保持一致(未修改状态)。

从源码看,色彩空间相关参数在通用参数表中占据一整组 OCIO 参数:ocioConfigFile(配置文件)、ocioInputSpace/ocioOutputSpace(输入输出空间)、ocioInputSpaceIndex/ocioOutputSpaceIndex(选择索引)等(Engine/WriteNode.cpp),且File Colorspace本身就是 Write 节点的通用参数kParamOutputSpaceLabel的显示名(Engine/WriteNode.cpp)。

Interpretation:预乘与输出通道

Write 节点的 Interpretation 部分控制图像“如何被解释后导出到磁盘”,主要包含两项:

Premultiplication(预乘)

  • 当处理后的图像包含透明区域,且你的节点树中 “premultiplied”(预乘)标志已被正确处理时,Natron 会自动猜测“Input Premult”的取值;
  • 若自动猜测结果不正确,你可以手动强制指定 “Input Premult” 为你想要的预乘状态;
  • 特别值得注意的行为变更:从 Natron v2.4 起,当把 RGBA 写入不支持 alpha 通道的文件格式时,Write 节点会直接丢弃 alpha 通道而不再做预乘,这样写出的文件不会与 Nuke 中查看器看到的结果产生差异。

Output Components(输出通道)

  • 该选项告诉 Natron 是否要丢弃 Alpha 通道;
  • 当所选图像格式本身不支持 alpha 通道时,“A” 选项会被自动禁用;
  • 对于 Quicktime(.mov)文件,alpha 支持位于编码器选项中,且要注意:大多数编码器实际上并不支持 alpha 通道(支持 alpha 的典型如 DNxHD、ProRes)。

对应源码中,Write 节点保留了inputPremult参数(预乘状态)以及NatronOfxParamProcessR/G/B/A四个通道开关参数(Engine/WriteNode.cpp),这四个开关正是 “Output Components” 面板背后控制 RGB / Alpha 各通道是否写入的机制。

Encoding:编码器、帧率与视频格式参数

原文档此处明确指出:“Encoding(编码)”部分的选项会随所读取文件类型的不同而变化。对于 QuickTime 视频文件,关键参数是Frame rate(帧率):

  • 默认取项目设置中的帧率值;
  • 对于视频类文件格式可以单独覆盖;
  • 图像序列没有帧率概念(帧率只存在于视频容器中)。

此外,Write 节点面板中还提供了一个Encoder(编码插件)选择参数(encodingPluginChoice),允许你在同一扩展名下显式选择具体的内部编码插件;其工具提示说明:默认使用偏好设置中为该文件扩展名指定的插件(Engine/WriteNode.cpp)。切换编码插件时,节点会按新的插件重新创建内部 Writer(见knobChanged()中对pluginSelectorKnob的处理,Engine/WriteNode.cpp)。

原文档给出了一条非常实用的工程建议(Tip):Natron 对编号图像序列(numbered image sequence)的支持远好于视频文件(quicktime、mp4 等),主要原因是图像序列更可靠、访问更快,并且允许在(重新)渲染时只覆盖序列中的部分帧。这与 getstarted-troubleshooting.rst 的提示一致——渲染图像序列中途崩溃后,重启 Natron 并取消勾选 Write 节点的 “Overwrite”,就只会补渲染缺失的帧。关于渲染的完整流程,可进一步参考 compositing-projects-render.rst。

进阶:Frame Increment、Read Back File 等原生控制参数

除格式相关参数外,Write 节点还自带一组由 Natron 本身管理的原生参数(定义于 Engine/WriteNode.h,创建于 Engine/WriteNode.cpp):

  • Frame Increment(frameIncr):时间线渲染新一帧前需要跳过的帧数。取 1 时渲染所有帧,取 2 时每两帧渲染一帧,以此类推。该值不能小于 1,默认值为 1,且不支持动画。渲染调度器在计算下一帧时同样会应用该步进(见 Engine/OutputSchedulerThread.cpp 中frameStep的处理逻辑)。
  • Read Back File(readBack):勾选后,Write 节点的输出将改为读取已写好的文件,而不是来自输入节点的上游结果。源码中的行为是:勾选时创建内部 Read 节点并接入图(createReadNodeAndConnectGraph),同时禁用 Render 按钮;渲染开始时临时切回输入,渲染结束后再切回读文件结果(Engine/WriteNode.cpp 与 Engine/WriteNode.cpp)。该参数默认关闭。
  • PluginID(encodingPluginID):隐藏的字符串参数,记录当前内部 Writer 的插件 ID,用于项目序列化与加载时重建正确的 Writer(Engine/WriteNode.cpp)。

输出格式实操建议:图像序列参数速查

针对常用输出格式,tutorials-imagesequence.rst 给出了可直接套用的参数组合:

TIFF(合成帧输出的首选格式)

  • Output Components 可选 RGB(无透明)或 RGBA(带透明);
  • 文件名用###占位编号;
  • Bit depth(位深)可选auto/8i/16i(不建议使用 float);
  • Compression(压缩)可选none/lzw(HD 建议),4K 用deflate亦可。

PNG(另一个不错的选择)

  • Output Components 同样可选 RGB 或 RGBA;
  • 文件名用###占位编号;
  • 位深支持 8/16 bit;
  • 压缩级别 HD 建议 0,4K 建议 6 即可。

多视图与 EXR 输出补充

如果项目涉及多视图(如立体左右眼),Write 节点面板在输出 EXR 时会额外出现Views(选择要导出的视图)、Layer(选择要导出的图层,EXR/TIFF 可写多图层时才有 “All” 选项)以及Parts参数——Single Part保证与不支持 OpenEXR 2 的应用兼容,Split Views/Split Views,Layers则按视图/图层分 part 写入以提升解码速度;非 EXR 格式若需多视图独立成文件,则在文件名中使用%v/%V占位符。详见 compositing-stereo.rst。

小结

Write 节点是 Natron 输出链路的收口:以w快捷键创建、连接到节点树末端、通过带扩展名的文件名确定输出格式,再配合帧范围、色彩空间、预乘与通道选择、编码器参数即可完成渲染。理解其“动态挂载 OpenFX Writer”的架构(Engine/WriteNode.cpp)后,你就能预判为何更换扩展名会导致面板参数变化,也能更合理地选择图像序列或视频作为交付格式——多数情况下,图像序列是更稳妥的选择。

  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】Natron

Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.

项目地址:https://gitcode.com/gh_mirrors/na/Natron
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询