☰
Natron 中的 G‘MIC Polar Transform 节点:极坐标图像变换的参数详解与实战
2026/10/14 16:05:37 网站建设 项目流程
  • 音视频
  • 视频处理
  • 图形学
  • 桌面应用

【免费下载链接】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
点击查看免费下载

eu.gmic.PolarTransform是 Natron 随附的 G'MIC 插件包中用于极坐标坐标变换的特效节点,它通过可编辑的 Radius/Angle 字符串表达式把图像在直角坐标与极坐标之间任意重映射,是制作万花筒、涟漪拉伸、螺旋纹理等效果的核心工具。本文基于仓库内自带的节点参考文档,完整覆盖该节点的全部输入与参数(含默认值与取值选项),并结合源码仓库中的构建脚本、更新日志与相关节点文档,解释每个参数在渲染流程中的实际作用,帮助你在节点图中正确配置、动画化并集成这一节点。

节点来源与版本信息

该节点的参考文档由 Natron 自身自动生成(文档头部注释标明 "Do not edit this file! It is generated automatically by Natron itself"),对应插件版本为1.0 of G'MIC Polar Transform (eu.gmic.PolarTransform),原文档见 eu.gmic.PolarTransform.rst。

文档 Description 部分给出的事实信息如下:

  • 作者:David Tschumperle(G'MIC 框架作者)。
  • 实现方式:这是 G'MIC 框架的一个 OpenFX Wrapper,由 Tobias Fleischer 和 Frederic Devernay 编写,把 G'MIC 的滤镜能力封装为 OpenFX 插件供 Natron 这类宿主调用。
  • 从仓库更新日志 CHANGELOG.md 可以看到 GMIC 插件包的演进脉络:
    • "G'MIC plugins by Tobias Fleischer are now bundled with the binary distributions (beta)",即 GMIC 插件以 beta 状态随官方二进制发行版打包分发;
    • "Update CImg and G'MIC to 2.8.4 and fix several issues in GMIC plugins (which are still beta)",当前文档对应的插件基于 G'MIC 2.8.4 版本;
    • "Fix many G'MIC plugins. Changes are not backward compatible and existing graphs may need to be reworked",提醒老项目中的 GMIC 节点图在升级后可能需要重新调整。

构建层面,发行版打包脚本 common-buildmaster.sh 中定义了GMICPLUG_PKG=fr.inria.openfx.gmic以及插件仓库openfx-gmic,并在 Windows 安装脚本 Natron.iss 中以GMIC.ofx.bundle的目录形式安装到Plugins/OFX/Natron/下。也就是说,Polar Transform 节点属于独立的GMIC.ofx.bundle插件包,而非 Natron 主程序内置的 Transform 组节点。

在官方文档站点中,该节点归属于GMIC nodes分组(见 _groupGMIC.rst 的 toctree,PolarTransform 列于其中)。文档同时说明:各节点分组可通过点击左侧工具栏按钮或在 Node Graph 区域右键菜单创建。

输入(Inputs)

该节点只有一个输入,且为必选项:

InputDescriptionOptional
Source(无描述)No

Source提供待变换的图像。由于是必选项,节点图中必须连接一个上游节点(如 Read、Generate 或上游特效节点)才能产生输出。

参数总览(Controls)

以下参数表完整继承自原节点文档,Preset至Log_Verbosity全部列出,类型(Type)与默认值(Default)均以文档为准:

Parameter / script nameTypeDefaultFunction(选项)
Preset /PresetChoiceCustom TransformCustom Transform/Inverse Radius/Swap Radius / Angle
Center /CenterDoublex: 0.5 y: 0.5变换中心
Radius /RadiusStringr + R/10*cos(a*5)极坐标半径表达式
Angle /AngleStringa极坐标角度表达式
Boundary /BoundaryChoiceMirrorTransparent/Nearest/Periodic/Mirror
Output Layer /Output_LayerChoiceLayer 0Merged/Layer 0/Layer -1~Layer -9
Resize Mode /Resize_ModeChoiceDynamicFixed (Inplace)/Dynamic/Downsample 1/2/1/4/1/8/1/16
Ignore Alpha /Ignore_AlphaBooleanOff是否忽略 alpha 通道
Global Random Seed /Global_Random_SeedInteger0全局随机种子
Animate Random Seed /Animate_Random_SeedBooleanOff随机种子是否随帧变化
Log Verbosity /Log_VerbosityChoiceOffOff/Level 1/Level 2/Level 3

其中"Parameter / script name"一列给出了两个名字:斜杠前是属性面板(Properties panel)中显示的参数名,斜杠后是脚本/项目文件中序列化的参数名,例如Center在 .ntp 项目与 Python 脚本里以Center作为 knob 标识使用。

极坐标变换原理与 Radius/Angle 表达式

Polar Transform 的核心数学模型是:以Center为极点,对源图像中的每个像素计算其极坐标(r, a)——r为到中心的距离,a为角度;然后节点在输出图像的每个像素处反向求解该像素的极坐标,代入Radius与Angle两个表达式得到一个新的(r', a'),再映射回源图像取样。两个表达式都支持字符串形式的公式,这就是它比固定算法的变换节点灵活得多的原因:

  • 默认 Radius 表达式r + R/10*cos(a*5):在半径方向叠加一个随角度变化、幅值为R/10的 5 瓣余弦调制,产生"花瓣"式的拉伸——这是该节点默认打开时即可看到的效果,R从表达式语义上推断是变换所覆盖的最大参考半径(与 Center 到图像边缘的距离相关)。
  • 默认 Angle 表达式a:角度保持不变,即纯径向调制。若把 Angle 改成随半径变化的表达式(例如让a与r相乘),即可获得螺旋/漩涡类效果。

由于表达式是自由字符串,可以写任意依赖r、a等极坐标变量以及图像尺寸、中心坐标的公式;配合 Natron 的曲线编辑器,还能为这些 knob 打上关键帧随时间动画化(仓库文档 CHANGELOG.md 记载了参数级表达式与关键帧动画机制)。与它同属极坐标家族的节点可作对照参考:

  • Cartesian Transform(eu.gmic.CartesianTransform.rst):在直角坐标下直接写 XWarping/YWarping 表达式(默认(w+h)/20 * cos(y*20/h)与(w+h)/20 * sin(x*20/w)),并提供Interpolation(Nearest Neighbor/Linear)选项;
  • Euclidean Polar(eu.gmic.EuclideanPolar.rst):固定算法的正交/极坐标互换,带Stretch_Factor与Inverse_Transform,不需要写表达式,适合标准坐标互换需求。

如果只想做标准的"直角↔极坐标"互换而没有自定义公式需求,Euclidean Polar 更省事;Polar Transform 的价值在于可任意组合的Radius/Angle表达式。

Preset 预设

Preset下拉框提供三个内置预设,用于一键切换典型的变换形态:

  1. Custom Transform(默认):忽略预设逻辑,完全使用你在Radius和Angle中编写的表达式;
  2. Inverse Radius:对半径取反的典型预设,产生类似"反向径向拉伸/鱼眼"的效果,此时 Radius/Angle 输入框中的表达式会被预设逻辑接管;
  3. Swap Radius / Angle:交换半径与角度的角色,即把径向信息映射到角度方向、角度信息映射到径向方向,是制作"极坐标展开成条带"类效果(如把圆形图案拉平为矩形条带)的常用模式。

从参数排布看(Preset 列在 Radius/Angle 之前),选择预设后节点会按预设语义解释后续表达式;选择 Custom Transform 时则以你手写的两个表达式为准。

Center:变换中心

Center是 Double 类型参数,默认值x: 0.5 y: 0.5,即图像中心点(归一化坐标)。它定义了极坐标系的原点:所有r、a的计算都以此为基准。把 Center 移到图像一侧,可以让涟漪/螺旋从该位置"发出"。由于是 Double(双分量)参数,在曲线编辑器中可以对 x、y 分量分别打关键帧,动画化极点位置。

Boundary:越界取样策略

当表达式把某像素映射到源图像之外时,Boundary决定如何填充,四个选项含义:

  • Transparent:越界区域输出透明;
  • Nearest:使用最近边界像素的颜色填充;
  • Periodic:把源图像当作周期边界,越界后回绕到对面取样;
  • Mirror(默认):以镜像方式重复源图像来填充越界区域,通常能获得最自然的连续外观。

对照同族的 Euclidean Polar 节点,其 Boundary 默认值为Nearest,说明各 GMIC 节点的边界默认值并不统一,配置时应以本节点(默认 Mirror)的文档为准。

Output Layer:输出层选择

GMIC 系节点支持多图层(multi-layer)工作流,Output_Layer决定变换结果写进哪个输出层:

  • Merged:把结果与源图像合并输出(单层结果);
  • Layer 0(默认):输出到第 0 层;
  • Layer -1 ~ Layer -9:输出到负索引层(从后往前数的第 1 到第 10 层)。

该选项与 Natron 通用的"Channels to process / Output Layer"层属性机制一致,通用说明见 thenodes-common-properties.rst 的 Layers Properties 一节。如果你的工程是单层合成,保持默认的 Layer 0(或按需求选 Merged)即可;只有在需要把多个 GMIC 效果叠放在不同图层、再交给下游 Merge/Output 节点合成时才需要显式切换。

Resize Mode:输出尺寸模式

Resize_Mode控制输出相对输入的尺度,默认Dynamic:

  • Fixed (Inplace):输出与输入尺寸完全一致,变换"原地"进行;
  • Dynamic(默认):由节点根据变换需求动态决定输出格式;
  • Downsample 1/2 / 1/4 / 1/8 / 1/16:强制以输入尺寸的 1/2、1/4、1/8、1/16 输出。

降采样选项主要服务于预览加速与代理渲染(proxy rendering)场景——仓库功能文档 getstarted-about-features.rst 指出 Natron 的渲染管线支持以较低分辨率计算以加速反馈。对于像 Polar Transform 这类每个像素都要做表达式求值与反查取样的重映射特效,把 Resize Mode 临时设为 Downsample 1/4 再检查构图、确认效果后切回 Dynamic/Fixed,是常用的调试节奏。

Ignore Alpha 与随机种子

  • Ignore Alpha(Boolean,默认 Off):开启后 alpha 通道不参与处理,适用于源素材的 alpha 不是有效遮罩、或希望只处理 RGB 的场景。
  • Global Random Seed(Integer,默认 0):G'MIC 框架为滤镜提供的随机数种子。对 Polar Transform 而言,默认表达式本身不含随机性,该种子主要影响内部可能用到随机操作的环节;固定种子可保证多机渲染结果一致(网络渲染/渲染农场场景下尤为重要)。
  • Animate Random Seed(Boolean,默认 Off):开启后种子随帧号变化,让含随机成分的效果逐帧变化(动画化噪点、闪烁类效果)。

Log Verbosity:日志输出级别

Log_Verbosity有Off / Level 1 / Level 2 / Level 3四档,默认 Off。当表达式报错、图像格式异常或节点行为不符合预期时,把级别调高可以在 Natron 的日志窗口中看到 G'MIC 侧的调试信息,便于定位是表达式书写问题还是输入数据问题。排查完毕建议调回 Off,避免渲染时产生大量日志 I/O。

典型配置组合

结合上述参数,几种常见起步配置供参考(均可复制进项目后微调):

  1. 花瓣涟漪(默认值):Preset = Custom Transform,Center = 0.5/0.5,Radius =r + R/10*cos(a*5),Angle =a,Boundary = Mirror——打开节点即可见效果;
  2. 反向径向(鱼眼式收缩):Preset = Inverse Radius,其余保持默认,观察图像中心被"推近";
  3. 极坐标展开成条带:Preset = Swap Radius / Angle,适合把圆形图案(如徽章、雷达图)拉平为矩形条带,便于在条带上做线性处理后反向映射回去;
  4. 自写螺旋:Preset = Custom Transform,把 Angle 表达式改写为角度与半径耦合的公式(保持r、a变量名不变),Boundary 选 Mirror 或 Periodic 以避免透明缺口。

文档位置与相关索引

  • 本文主体文档:Documentation/source/plugins/eu.gmic.PolarTransform.rst
  • GMIC 节点分组索引(含全部 eu.gmic.* 节点 toctree):Documentation/source/_groupGMIC.rst
  • 参考指南(Reference Guide)入口,节点分组从左侧工具栏或 Node Graph 右键菜单进入:Documentation/source/_group.rst
  • 同类极坐标/坐标变换节点:EuclideanPolar、CartesianTransform、AboutGMIC(含 G'MIC 插件背景、外部数据下载与自定义 .gmic 滤镜说明)
  • 通用参数面板与层属性说明:Documentation/source/guide/thenodes-common-properties.rst

需要提醒:官方日志多次强调 G'MIC 插件处于beta状态,且 2.3.14 版本曾做向后不兼容的修复——如果你的 .ntp 工程从旧版 Natron 迁移,出现 GMIC 节点行为变化时,应先对照上表核对参数默认值是否被重置,再检查表达式是否仍有效。

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

【免费下载链接】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),仅供参考

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

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

立即咨询