Blender 视频特效:程序化扭曲与几何节点像素化

Blender 视频特效:程序化扭曲与几何节点像素化

在本教程中,我们将探索如何使用 Blender 来处理和操纵现有视频素材,创造出类似 After Effects 或 Photoshop 中的视觉特效。我们将学习两种主要技术:首先,使用 Blender 的着色器节点和程序化纹理来扭曲视频画面;其次,利用几何节点,让视频内容驱动几何图形的生成和变化,实现一种独特的像素化或粒子化效果。最终,我们会将这两种效果叠加,打造出引人注目的动态视觉。

0:00
/0:07

本教程适合对 Blender 有一定基础,希望探索其在视频后期特效方面应用的读者。

通过本教程,你将学到:

  • 如何在 Blender 中将视频作为纹理应用到平面上。
  • 使用沃罗诺伊纹理 (Voronoi Texture) 和噪点纹理 (Noise Texture) 来程序化地扭曲视频向量。
  • 通过混合颜色 (Mix Color) 节点控制纹理效果的强度。
  • 利用几何节点 (Geometry Nodes) 根据视频的亮度信息实例化和缩放物体。
  • 在几何节点中正确映射视频纹理坐标。
  • 使用 Blender 的合成器 (Compositor) 添加辉光 (Glare) 等后期效果。
  • 组合不同的特效层,创造复杂的视觉成果。

准备工作

  • Blender: 建议使用 Blender 4.0 或更高版本 (教程中使用 Blender 4.0.1)。
  • Node Wrangler 插件: 这是一个非常方便的节点操作插件,Blender 自带,请确保在 编辑 (Edit) > 偏好设置 (Preferences) > 插件 (Add-ons) 中已启用它。
  • 视频素材: 准备一段你想要处理的视频。教程中演示的视频有不同的帧长度,你需要知道你所使用视频的总帧数。

步骤一:创建基础视频扭曲效果(着色器节点)

我们将首先创建一个平面,并将视频应用为该平面的材质,然后使用程序化纹理来扭曲视频的显示。

  1. 打开 Blender,在3D视图中,按 Shift + A,选择 网格 (Mesh) > 平面 (Plane) 来创建一个新的平面。
  2. 选中该平面。通常视频是16:9的宽高比。在右侧的属性面板中找到 物体属性 (Object Properties) (橙色方块图标),展开 变换 (Transform) 面板。将 缩放 (Scale) 的X值设为 16,Y值设为 9
    • 如果你想从顶部正交视图查看,可以按数字键盘的 7
    • 如果你的视频是其他宽高比(如方形1:1),则相应调整缩放值。
  3. 切换到顶部菜单栏的 着色 (Shading) 工作区。
  4. 确保平面仍处于选中状态。在底部的着色器节点编辑器中,点击 + 新建 (New) 按钮,为平面创建一个新材质。
  5. 你应该会看到一个 原理化BSDF (Principled BSDF) 节点连接到 材质输出 (Material Output) 节点。确保已启用 Node Wrangler 插件。选中 原理化BSDF 节点,然后按 Ctrl + T。这会自动添加一个 图像纹理 (Image Texture) 节点、一个 映射 (Mapping) 节点和一个 纹理坐标 (Texture Coordinate) 节点。
  6. 图像纹理 节点上,点击 打开 (Open) 按钮,浏览并选择你的视频文件。
  7. 图像纹理 节点的 颜色 (Color) 输出直接连接到 材质输出 (Material Output) 节点的 表面 (Surface) 输入,从而绕过 原理化BSDF 节点。这样视频将作为无光照的发射材质显示。
  8. 配置视频播放:
    • 图像纹理 节点上,找到视频文件名下方的设置。
    • 勾选 循环 (Cyclic)自动刷新 (Auto Refresh)
    • 将其中的 帧数 (Frames) 设置为你视频的总帧数。
    • 在 Blender 主界面底部的时间轴编辑器中,将 结束 (End) 帧也设置为相同的帧数。
    • 现在,当你在时间轴上播放动画时(按空格键),你应该能看到视频在平面上播放。
  9. 现在我们来添加扭曲效果。在 纹理坐标 (Texture Coordinate) 节点和 映射 (Mapping) 节点之间(即 矢量 (Vector) 连线上)添加程序化纹理:
    • Shift + A,搜索并添加一个 沃罗诺伊纹理 (Voronoi Texture) 节点。
    • Shift + A,搜索并添加一个 混合颜色 (Mix Color) 节点 (在 Blender 4.1+ 中为 Mix Node,类型设为 Color)。
  10. 连接节点以实现扭曲:
    • 纹理坐标 (Texture Coordinate) 节点的 生成 (Generated) 输出连接到 混合颜色 (Mix Color) 节点的 A 输入口。
    • 沃罗诺伊纹理 (Voronoi Texture) 节点的 颜色 (Color) 输出连接到 混合颜色 (Mix Color) 节点的 B 输入口。
    • 混合颜色 (Mix Color) 节点的 结果 (Result) 输出连接到 映射 (Mapping) 节点的 矢量 (Vector) 输入口。
    • 混合颜色 节点的 系数 (Factor) 控制扭曲的强度。值为 1.0 时,使用A输入,视频无扭曲。值越接近 0.0,则B输入(沃罗诺伊纹理)对向量的影响越大,扭曲越明显。
    • 沃罗诺伊纹理 节点中,你可以尝试以下设置:
      • 将维度从 3D 改为 4D。这样会出现一个 W 输入值,你可以通过给 W 值设置关键帧(鼠标悬停在W值上按 I 键)来制作扭曲的动画效果。
      • 尝试将特征输出从 F1 改为 平滑F1 (Smooth F1)。然后调整下方的 平滑度 (Smoothness) 值(例如 0.0780.085 之间),可以获得更柔和、更液态的扭曲边缘。
      • 调整 比例 (Scale) 值可以改变扭曲图案的大小。
    • 你也可以使用 映射 (Mapping) 节点中的 位置 (Location) 值来平移扭曲效果。
  11. (可选) 你也可以尝试使用 噪点纹理 (Noise Texture) 替换 沃罗诺伊纹理 来获得不同的扭曲效果,例如波浪状的扭曲。同样可以将其设置为 4D 并动画化 W 值。可以添加一个 色彩渐变 (ColorRamp) 节点在噪点纹理和混合颜色节点之间,以调整噪点的对比度。
  12. 完成此步骤后,你可以设置摄像机正对平面 (选中摄像机,按 Alt + GAlt + R 清除变换,然后手动调整或使用 Ctrl + Alt + Numpad 0 对齐到当前视图),然后将此效果渲染为视频序列(如 PNG 序列或 MP4 文件)。这个渲染出的视频我们称之为 “扭曲视频”,将在后续步骤中作为背景。

步骤二:创建视频驱动的几何粒子效果(几何节点)

接下来,我们将使用视频的亮度信息来控制几何实例(如小加号)的缩放,形成一种视频内容被像素点重现的效果。

  1. 返回 布局 (Layout) 工作区。你可以隐藏或删除上一步创建的平面和摄像机。
  2. 创建一个新的平面:按 Shift + A,选择 网格 (Mesh) > 平面 (Plane)。在属性检查器 (按 N 键打开侧边栏) 的 条目 (Item) 标签下,将其命名为 video_base (或者你选择的其他名字,用于承载背景视频)。
  3. 再创建一个新的平面:按 Shift + A,选择 网格 (Mesh) > 平面 (Plane)。将其命名为 geo。将这个 geo 平面在Z轴上稍微向上移动一点点(例如 0.01m),使其位于 video_base 平面的正上方。
  4. video_base 平面应用与步骤一类似的材质设置,使其播放原始的、未扭曲的视频(或你在步骤一中渲染出来的“扭曲视频”,取决于你最终想要的效果)。确保视频纹理的帧数、循环和自动刷新设置正确。
  5. 创建用于实例化的物体 (教程中是一个加号 "+"):
    • Shift + A,选择 网格 (Mesh) > 平面 (Plane)。将其命名为 plus_sign
    • 进入编辑模式 (按 Tab 键)。确保处于面选择模式。
    • 选择并删除 (按 X > 仅面 (Only Faces)) 中心四个面形成一个加号形状,或者按你的喜好创建其他简单形状。
    • 返回物体模式 (按 Tab 键)。
    • 为这个 plus_sign 物体创建一个新材质。将材质类型改为 自发光 (Emission)。选择一个显眼的颜色(教程中使用亮红色/橙色,例如 #FF2800),并将 强度 (Strength) 设为一个较高的值,如 5 或更高,以便后续辉光效果明显。
  6. 选中 geo 平面,切换到顶部菜单栏的 几何节点 (Geometry Nodes) 工作区。点击 + 新建 (New) 创建一个新的几何节点树。
  7. 删除默认的 组输入 (Group Input) 节点。
  8. 添加节点并连接:
    • Shift + A,添加 网格 (Mesh) > 基本体 (Primitives) > 网格栅格 (Grid) 节点。将其 尺寸X (Size X) 设为 1.6m (或16,取决于之后缩放),尺寸Y (Size Y) 设为 0.9m (或9)。X轴顶点数 (Vertices X) 设为 16Y轴顶点数 (Vertices Y) 设为 9 (或者根据你的视频宽高比调整,保持比例一致)。
    • 添加 网格 (Mesh) > 操作 (Operations) > 細分网格 (Subdivide Mesh) 节点。将其连接在 网格栅格 (Grid) 之后。将 层级 (Level) 设置为 34 (层级越高,粒子越密集,但性能开销越大)。
    • 添加 实例 (Instances) > 在点上实例化 (Instance on Points) 节点。将 細分网格 (Subdivide Mesh) 的输出连接到此节点的 点 (Points) 输入。
    • 从场景集合中将我们之前创建的 plus_sign 物体拖拽到几何节点编辑器中,这会创建一个 物体信息 (Object Info) 节点。勾选 作为实例 (As Instance)。将其 几何数据 (Geometry) 输出连接到 在点上实例化 (Instance on Points) 节点的 实例 (Instance) 输入。
  9. 现在我们需要让视频驱动实例的缩放。为此,我们需要正确地将视频纹理映射到栅格的顶点上:
    • 添加 输入 (Input) > 位置 (Position) 节点。
    • 添加 几何体 (Geometry) > 读取 (Read) > 边界框 (Bounding Box) 节点。将 网格栅格 (Grid) 节点的 网格 (Mesh) 输出连接到 边界框 (Bounding Box) 节点的 几何数据 (Geometry) 输入。
    • 添加两个 矢量 (Vector) > 矢量数学 (Vector Math) 节点。
      • 第一个设置为 相减 (Subtract)。将 位置 (Position) 节点的输出连接到其第一个 矢量 (Vector) 输入,将 边界框 (Bounding Box) 节点的 最小 (Min) 输出连接到其第二个 矢量 (Vector) 输入。
      • 第二个也设置为 相减 (Subtract)。将 边界框 (Bounding Box) 节点的 最大 (Max) 输出连接到其第一个 矢量 (Vector) 输入,将 边界框 (Bounding Box) 节点的 最小 (Min) 输出连接到其第二个 矢量 (Vector) 输入。
    • 添加一个新的 矢量数学 (Vector Math) 节点,设置为 相除 (Divide)。将第一个 相减 (Subtract) 节点的输出连接到其第一个 矢量 (Vector) 输入。将第二个 相减 (Subtract) 节点的输出(即Max - Min的结果)连接到其第二个 矢量 (Vector) 输入。
    • 添加 矢量 (Vector) > 矢量旋转 (Vector Rotate) 节点。将上一步 相除 (Divide) 节点的输出连接到此节点的 矢量 (Vector) 输入。确保类型为 轴-角度 (Axis Angle),将 角度 (Angle) 设置为 180 度 (或 3.14159 弧度)。轴向 (Axis) 应该默认为Z轴 (0,0,1),如果不是,请设置。
    • 添加 纹理 (Texture) > 图像纹理 (Image Texture) 节点。点击 打开 (Open) 并选择你希望驱动粒子效果的视频文件(教程中使用的是450帧的视频)。将其 矢量 (Vector) 输入连接到上一步 矢量旋转 (Vector Rotate) 节点的输出。
      • 同样,在此 图像纹理 节点上设置正确的 帧数 (Frames),并勾选 循环 (Cyclic)自动刷新 (Auto Refresh)
    • 添加 输入 (Input) > 场景时间 (Scene Time) 节点。将其 帧 (Frame) 输出连接到 图像纹理 节点的 帧 (Frame) 输入。
    • 添加 工具 (Utilities) > 映射范围 (Map Range) 节点。将其类型改为 浮点数 (Float) (虽然视频的颜色是矢量,但通常亮度信息会被正确转换)。将 图像纹理 节点的 颜色 (Color) 输出连接到 映射范围 (Map Range) 节点的 值 (Value) 输入。将 映射范围 (Map Range) 节点的 结果 (Result) 输出连接到 在点上实例化 (Instance on Points) 节点的 缩放 (Scale) 输入。
  10. 调整 映射范围 (Map Range) 节点的参数来控制视频亮度如何影响实例大小:
    • From Min: 视频中最暗部分的亮度值,通常为 0
    • From Max: 视频中最亮部分的亮度值,通常为 1
    • To Min: 对应最暗像素的实例缩放值 (例如 0 或一个很小的值如 0.01)。
    • To Max: 对应最亮像素的实例缩放值 (例如 0.10.2)。
    • 教程中使用的参考值:From Min: 0.13, From Max: 1.0, To Min: 0.0, To Max: 0.17。你可以根据视频内容和期望效果调整这些值。
    • 在点上实例化 (Instance on Points) 节点和最终的 组输出 (Group Output) 节点之间添加 几何体 (Geometry) > 操作 (Operations) > 删除几何体 (Delete Geometry) 节点。
    • 将其模式设置为 实例 (Instance)
    • 添加 工具 (Utilities) > 随机值 (Random Value) 节点。将其数据类型改为 布尔型 (Boolean)
    • 随机值 (Random Value) 节点的 随机 (Random) 输出连接到 删除几何体 (Delete Geometry) 节点的 选择 (Selection) 输入。
    • 调整 随机值 (Random Value) 节点的 概率 (Probability) 值(例如 0.50.8),这个值越高,删除的实例越多。

(可选) 如果希望粒子效果更稀疏,可以随机删除一些实例:节点树概览 (几何节点粒子):

步骤三:添加辉光效果(合成器)

  1. 渲染一帧当前几何节点的效果:在3D视图中,确保摄像机已设置好,然后点击顶部菜单 渲染 (Render) > 渲染图像 (Render Image) (或按 F12)。
  2. 渲染完成后,关闭渲染窗口,切换到顶部菜单栏的 合成 (Compositing) 工作区。
  3. 勾选顶部的 使用节点 (Use Nodes)。你会看到一个 渲染层 (Render Layers) 节点和一个 合成 (Composite) 节点。
  4. 为了能在背景中预览效果,按 Shift + A,搜索并添加一个 输出 (Output) > 查看器 (Viewer) 节点。将 渲染层 (Render Layers) 节点的 图像 (Image) 输出同时连接到 合成 (Composite)查看器 (Viewer) 节点的 图像 (Image) 输入。
  5. 渲染层 (Render Layers) 和输出节点之间添加辉光效果:
    • Shift + A,搜索并添加 滤镜 (Filter) > 辉光 (Glare) 节点。
    • 辉光 (Glare) 节点的类型从默认的 条纹 (Streaks) 改为 泛光 (Bloom)
    • 调整 阈值 (Threshold), 大小 (Size) 等参数,直到获得满意的基础辉光。
    • (可选) 你可以再添加一个 辉光 (Glare) 节点,保持其类型为 条纹 (Streaks),并调整 色彩混合 (Color Modulation), 混合 (Mix), 阈值 (Threshold), 条纹数量 (Streaks), 角度偏移 (Angle Offset)渐变 (Fade) 等参数,来添加一些发散的条纹光效。
  6. 如果你在几何节点预览时(视口右上角渲染选项),将合成器预览设置为 始终 (Always),你应该能在3D视口中实时看到辉光效果

步骤四:组合两种效果

现在我们将步骤一的视频扭曲效果作为背景,步骤二和三的几何粒子加辉光效果叠加在前景。

  1. 确保你的场景中有三个主要物体:
    • video_base 平面:应用了步骤一中创建的视频扭曲材质(或普通视频材质)。
    • geo 平面:应用了步骤二中创建的几何节点修改器,其实例由视频驱动。
    • plus_sign 物体:被 geo 平面上的几何节点实例化,并带有自发光材质。
  2. geo 平面放置在 video_base 平面的正前方(Z轴上略高一点),plus_sign 物体可以放在场景中的任何位置,因为它只是一个被引用的源物体。
  3. 调整 geo 平面上的几何节点设置(如 映射范围To MinTo Max 值,删除几何体 的概率等)和 plus_sign 物体的自发光材质强度,以及合成器中的辉光设置,直到前景的粒子效果和背景视频完美融合。
  4. 确保两个视频(背景扭曲视频和驱动几何节点的视频)的帧数、起始帧等时间设置是同步的。如果驱动几何节点的视频与背景视频是同一个,则 图像纹理 节点中的视频文件路径和帧设置应保持一致。

最终效果应该是扭曲的背景视频上,叠加着由视频内容驱动、并带有辉光效果的几何粒子。

总结

通过本教程,我们学习了如何在 Blender 中运用着色器节点和几何节点对视频素材进行富有创意的处理。我们实现了视频的程序化扭曲,以及一种基于视频内容的几何粒子生成和辉光效果。这些技术为视频后期制作和动态图形设计提供了强大的可能性。

你可以进一步尝试:

  • 使用不同的程序化纹理组合来创造更多样的扭曲效果。
  • 替换几何节点中的实例化对象为更复杂的模型。
  • 探索更多几何节点的功能来控制实例的旋转、颜色等属性。
  • 在合成器中尝试更多的滤镜和色彩校正技术。

希望本教程能为你打开在 Blender 中进行视频特效创作的新大门!