Blender 教程:使用几何节点创建程序化缝合生长动画

Blender 教程:使用几何节点创建程序化缝合生长动画

在本教程中,你将学习如何使用 Blender 的几何节点(Geometry Nodes)来创建一个引人注目的程序化缝合生长动画。最终效果就像有无数根线头凭空出现,并沿着一个物体的表面“缝合”出纹理,同时原始的物体表面会逐渐消失。这个过程完全由程序生成,可以通过一个简单的控制器对象来驱动动画。

0:00
/0:04

本教程适合对 Blender 界面有基本了解,并希望深入学习几何节点和着色器节点的中级用户。

通过本教程,你将学到:

  • 使用贝塞尔曲线(Bezier Curve)创建基础模型。
  • 通过几何节点为曲线添加随机的、持续摆动的动画。
  • 使用 Instance on Points 在物体表面分布实例。
  • 利用 Geometry Proximity 节点根据一个物体的位置来动态控制实例的缩放。
  • 设置材质着色器,实现物体跟随动画控制器逐渐消失的透明效果。

准备工作

  • Blender 3.6 或更高版本。 本教程在类似 3.6 版本的界面中进行。
  • 启用 Node Wrangler 插件。 这是 Blender 的一个内置插件,能极大地提升节点编辑效率。请在 编辑 > 偏好设置 > 插件 中搜索 Node Wrangler 并勾选启用它。

步骤一: 创建基础线圈

首先,我们需要创建组成“线头”的基本单位——一个弯曲的线圈。

  1. 在 Blender 场景中,删除所有默认物体(立方体、灯光、摄像机)。
  2. 按下 Shift + A,在菜单中选择 曲线 > 贝塞尔,创建一个贝塞尔曲线。
  3. 选中该曲线,按 Tab 键进入 编辑模式
  4. A 键全选所有控制点。
  5. 右键单击,在弹出的菜单中选择 细分。这会在曲线中间增加一个控制点。
  6. 选中中间新增的控制点,按 G 然后按 Z,将其向上移动,形成一个拱形。
  7. S 然后按 X,将其水平拉伸,使拱形更宽。
  8. 选中底部的两个端点,切换到前视图(按数字键盘 1),调整它们的控制手柄(Handle),将它们向中心收拢,形成一个类似水滴或线圈的闭环形状。
  9. 再次按 A 全选所有点,右键单击并选择 细分,为曲线增加更多细节,使其更平滑。

步骤二: 为线圈添加随机摆动动画

现在,我们将使用几何节点让这个静态的线圈动起来。

  1. 选中线圈对象,切换到 几何节点 (Geometry Nodes) 工作区。
  2. 点击 新建 按钮,创建一个新的几何节点树。
  3. 组输入组输出 节点之间,添加一个 设置位置 (Set Position) 节点。
  4. 添加一个 噪波纹理 (Noise Texture) 节点。为了让噪波产生动画效果,将其模式从 3D 改为 4D
  5. 为了让动画随时间播放,添加一个 场景时间 (Scene Time) 节点。
  6. 为了控制动画速度,添加一个 数学 (Math) 节点,并将其模式设置为
  7. 连接节点:
    • 场景时间 节点的 输出连接到 数学 (乘) 节点的第一个 输入。
    • 数学 (乘) 节点的 输出连接到 噪波纹理 节点的 W 输入。
    • 噪波纹理 节点的 系数 (Fac) 或 颜色 (Color) 输出连接到 设置位置 节点的 偏移 (Offset) 输入。
  8. 为了让线圈围绕其原始位置摆动而不是向一个方向漂移,我们需要将噪波的输出范围(0 到 1)重新映射到 -0.5 到 0.5。
    • 噪波纹理设置位置 节点之间,添加一个 向量数学 (Vector Math) 节点,并将其模式设置为 减去 (Subtract)
    • 噪波纹理颜色 输出连接到 向量数学 的第一个向量输入。
    • 向量数学 节点的第二个向量输入的 X、Y、Z 三个字段中都填入 0.5
  9. 调整参数:
    • 数学 (乘) 节点中,将第二个值设为 0.3 左右,以减慢动画速度。
    • 噪波纹理 节点中,将 缩放 设为 4.0 左右,以获得合适的摆动形态。

按下空格键播放动画,你会看到线圈现在正在随机地摆动。

步骤三: 创建线束并添加厚度

单个线圈效果不够,我们需要创建一束线,并让它们都有实体。

  1. 复制线圈:在 物体模式 下,选中你的动画线圈,使用 Shift + D 复制多次(例如,复制 5 次,总共 6 个线圈)。
  2. 随机化动画:目前所有线圈的动画都是一样的。我们需要让它们各自独立。
    • 依次选中每个复制出的线圈。
    • 在几何节点编辑器中,点击节点树名称旁边的数字(例如 Geometry Nodes.001 旁边会有一个 5),这会 创建此节点树的单一用户副本
    • 为每个副本稍微修改 噪波纹理缩放细节粗糙度 值,让它们的摆动形态各不相同。
  3. 添加厚度
    • 回到你为其中一个线圈创建的几何节点树。
    • 设置位置 节点之后,添加一个 曲线转网格 (Curve to Mesh) 节点。
    • 添加一个 曲线圆 (Curve Circle) 节点,并将其 曲线 输出连接到 曲线转网格 节点的 轮廓曲线 (Profile Curve) 输入。
    • 曲线圆 节点的 半径 设为一个很小的值,例如 0.01 米。你可以根据需要调整,让部分线圈粗一些,部分细一些。
    • 重要:为所有线圈的几何节点树都执行此操作。
  4. 整理到集合
    • 物体模式 下,选中所有的线圈对象。
    • M 键,选择 新建集合,将它们放入一个名为 Threads 的新集合中。

步骤四: 在主模型上分布线束

现在,我们将把这些线束实例分布到一个主模型上。本教程使用猴头(Suzanne)作为示例。

  1. 添加一个猴头模型:Shift + A > 网格 > 猴头
  2. 将其放大两倍:选中猴头,按 S,输入 2,然后回车。
  3. 为猴头添加一个新的几何节点树。
  4. 添加以下节点:
    • 在面上分布点 (Distribute Points on Faces)
    • 在点上实例化 (Instance on Points)
    • 加入几何体 (Join Geometry)
  5. 节点连接:
    • 组输入几何图形 同时连接到 在面上分布点网格 输入和 加入几何体 的一个输入。这样可以保留原始的猴头模型。
    • 在面上分布点 输出连接到 在点上实例化 输入。
    • 在点上实例化实例 输出连接到 加入几何体 的另一个输入。
  6. Threads 集合从 大纲视图 中拖入几何节点编辑器,会生成一个 集合信息 (Collection Info) 节点。
  7. 集合信息 节点上,勾选 分离子级重置子级拾取实例。将其模式切换到 相对
  8. 集合信息 节点的 几何图形 输出连接到 在点上实例化 节点的 实例 输入。

此时,你应该能看到猴头表面布满了线圈。

步骤五: 使用“接近度”节点控制生长

这是本教程的核心。我们将使用一个平面作为动画控制器,控制线束的生长。

  1. 在场景中添加一个平面:Shift + A > 网格 > 平面
  2. 回到猴头的几何节点树,将该平面从大纲视图拖入,生成一个 物体信息 (Object Info) 节点。将其模式设置为 相对
  3. 构建控制缩放的节点网络:
    • 添加 几何体接近度 (Geometry Proximity) 节点。将 物体信息(平面)几何图形 输出连接到它的 目标 输入。
    • 添加 向量数学 (缩放) 节点。将 几何体接近度距离 输出连接到它的 缩放 输入。将 矢量 值设为 (1, 1, 1)
    • 添加 随机值 (Random Value) 节点(Float 类型)。设置 最小值0.02最大值0.12
    • 添加 数学 (相加) 节点。将 向量数学(缩放) 的输出和 随机值 的输出连接到它的两个输入。
    • 添加 映射范围 (Map Range) 节点。将 数学(相加) 的结果连接到它的 输入。
    • 添加 向量数学 (减去) 节点。将 映射范围结果 连接到它的第一个向量输入,并将第二个向量值设为 (0.5, 0.5, 0.5)
    • 最后,将 向量数学(减去) 的结果连接到 在点上实例化 节点的 缩放 输入。
  4. 调整 映射范围 节点的值来控制生长效果。以下是一组参考值,你可以自由调整:
    • 源最小: -1.3
    • 源最大: 0.5
    • 目标最小: 1.2
    • 目标最大: 0.5
  5. 对齐线束方向
    • 在面上分布点 节点的 旋转 输出连接到 在点上实例化 节点的 旋转 输入。这会让线束垂直于猴头表面。
    • 为了随机化它们的朝向,在这两个节点之间添加 旋转欧拉 (Rotate Euler) 节点,并设置为 局部
    • 添加 合并XYZ (Combine XYZ) 和 随机值 节点,将 随机值 的输出连接到 合并XYZZ 输入,再将 合并XYZ 连接到 旋转欧拉旋转 输入。将 随机值 的最大值设为一个较大的数,如 360 度对应的弧度 6.28

步骤六: 设置控制器动画

  1. 选中作为控制器的 平面 对象。
  2. 在时间轴的第一帧,将平面移动到猴头的下方,按 I 键,选择 位置,插入一个关键帧。
  3. 将时间轴移动到第 100 帧左右,将平面向上移动,穿过猴头,再次按 I 键插入位置关键帧。
  4. 在时间轴窗口,选中所有关键帧,右键单击 > 插值模式 > 线性

现在播放动画,你会看到线束随着平面的移动而“生长”出来。

步骤七: 创建“消失”着色器

最后,我们来制作猴头本身的材质,让它随着平面的移动而消失,并模拟出织物被撕开的边缘效果。

  1. 选中猴头,切换到 着色器编辑器 (Shader Editor)。为它创建一个新材质。
  2. 创建透明遮罩
    • 添加 纹理坐标 (Texture Coordinate) 节点。
    • 添加 渐变纹理 (Gradient Texture) 节点,模式为 线性
    • 添加 颜色渐变 (Color Ramp) 节点。
    • 纹理坐标物体 输出连接到 渐变纹理矢量 输入。在 纹理坐标 节点中,使用吸管工具选择我们的 平面 控制器作为目标物体。
    • 渐变纹理颜色 输出连接到 颜色渐变系数 输入。
    • 颜色渐变颜色 输出连接到 原理化BSDFAlpha 输入。
    • 材质属性 > 设置 中,将 混合模式 设置为 Alpha 混合
  3. 添加不规则边缘
    • 为了让消失的边缘不那么平直,我们在渐变中混入噪波。
    • 添加 噪波纹理 (Noise Texture) 和 混合 (Mix, 模式设为 Color) 节点。
    • 纹理坐标(物体) 的输出连接到 混合 节点的 A 输入。
    • 噪波纹理颜色 输出连接到 混合 节点的 B 输入。
    • 混合 节点的 结果 连接到 渐变纹理矢量 输入。
    • 调整 混合 节点的 系数 (0.05)和 噪波纹理缩放(11)细节(11) 值,直到获得满意的破碎边缘效果。
  4. 添加边缘置换(可选)
    • 为了让边缘有凸起感,我们可以添加置换效果。
    • 材质属性 > 设置 > 曲面 中,将 置换 设置为 置换与凹凸
    • 在节点编辑器中,添加 置换 (Displacement) 节点。
    • 将我们之前创建的 颜色渐变 的输出(或复制一个新的)连接到 置换 节点的 高度 输入。
    • 置换 节点的 置换 输出连接到 材质输出置换 输入。
    • 调整 置换 节点的 强度中性灰度,直到获得理想的凸起效果。

总结

恭喜!你已经成功创建了一个复杂的程序化缝合生长动画。通过本教程,你掌握了如何结合几何节点中的实例、接近度控制以及着色器中的纹理坐标和透明度来实现高级的视觉效果。

你可以尝试将这个技术应用到任何你喜欢的模型上,调整线圈的形状、颜色和动画速度,或者设计更复杂的控制器运动路径,创造出独一无二的作品。