莫方教程网

专业程序员编程教程与实战案例分享

Blender 几何节点教程: 制作动态光点网格动画

今天,我们来学习一个简单但效果不错的动态图形(Motion Graphics)案例:一个发光的点状网格循环动画。我们将使用 Blender 强大的 Geometry Nodes (几何节点) 来实现,这个方法非常灵活,便于调整。



这个效果的核心原理其实很简单:

  1. 创建基础网格: 使用 Geometry Nodes 生成一个平面网格 (Grid),它定义了点的基本布局。
  2. 在点上放置物体: 在网格的每个顶点 (Vertex) 上,实例化 (Instance) 一个小的几何体,比如一个 Ico Sphere (图标球体)。
  3. 用噪波控制大小: 利用一个 Noise Texture (噪波纹理) 节点生成随机图案,再通过 ColorRamp (颜色渐变) 节点调整对比度,将这个图案信息连接到实例物体的大小 (Scale) 上。这样,噪波亮的地方球体就大,暗的地方球体就小。
  4. 驱动动画: 使用 Noise Texture 的 4D 模式,通过改变其 'W' 值,就能让噪波图案动起来,从而驱动球体大小的变化,形成动画。
  5. 添加发光效果: 为实例物体赋予一个 Emission (自发光) 材质,并在 Eevee 渲染器中开启 Bloom (辉光) 效果,让亮点“亮瞎眼”。
  6. 相机景深: 利用相机的 Depth of Field (景深) 功能,制造出失焦模糊(Bokeh)效果,增加视觉趣味。
  7. 循环动画: 通过混合两个反向运动的 4D 噪波纹理,可以制作出完美的无缝循环动画。

听起来有点复杂?别担心,下面我们一步步来做。

准备工作

  1. 打开 Blender。
  2. 删除默认的立方体、灯光和相机(如果需要)。
  3. 按 Shift + A,选择 Mesh -> Plane (网格 -> 平面),创建一个平面。这个平面本身不重要,只是作为挂载 Geometry Nodes 修改器的对象。
  4. 切换到顶部的 Geometry Nodes (几何节点) 工作区。
  5. 选中我们创建的 Plane,在 Geometry Nodes 编辑器中点击 New (新建) 按钮,创建一个新的节点树。

创建网格

  1. 默认节点树里有一个 Group Input (组输入) 和一个 Group Output (组输出) 节点。Group Input 代表原始 Plane 的几何信息,我们不需要它,可以选中它按 X 删除。
  2. 按 Shift + A,在弹出的菜单中选择 Search (搜索),输入 Grid 并选择它,添加一个 Grid 节点。
  3. 将 Grid 节点的 Mesh (网格) 输出接口,连接到 Group Output 节点的 Geometry (几何) 输入接口。现在场景里的 Plane 应该变成了一个由 Grid 节点生成的网格。
  4. 在 Grid 节点中,将 Size X (X尺寸) 和 Size Y (Y尺寸) 都设置为 5 m,让网格更大一些。
  5. 为了看得更清楚,可以点击视口右上角的 Viewport Shading (视口着色) 按钮,选择 Wireframe (线框) 模式。
  6. 现在调整 Grid 节点的 Vertices X (X顶点数 64) 和 Vertices Y (Y顶点数 64)。你会看到网格变得非常密集。这就是 Geometry Nodes 的好处,随时可以程序化地调整模型细节。调整完可以切换回 Solid (实体) 或 Material Preview (材质预览) 模式。

实例化图标球体

我们需要在刚才创建的网格的每个顶点上放置一个小球。

  1. 按 Shift + A,搜索并添加 Instance on Points (在点上实例化) 节点。把它放在 Grid 节点和 Group Output 节点之间,它会自动连接上。确保 Grid 的 Mesh 输出连接到 Instance on Points 的 Points (点) 输入。
  2. 我们需要一个物体来实例化。按 Shift + A,搜索并添加 Ico Sphere (图标球体) 节点。
  3. 将 Ico Sphere 节点的 Mesh (网格) 输出,连接到 Instance on Points 节点的 Instance (实例) 输入。场景中应该出现了密密麻麻的球体。
  4. 调整 Ico Sphere 节点:将 Subdivisions (细分) 设为 4,让球体更平滑。将 Radius (半径) 调小,比如 0.03 m 或 0.04 m,让球体之间留有空隙。

使用噪波控制缩放

现在是最关键的一步:用噪波纹理来控制每个球体的大小。

  1. 按 Shift + A,搜索并添加 Noise Texture (噪波纹理) 节点。
  2. 按 Shift + A,搜索并添加 ColorRamp (颜色渐变) 节点。
  3. 连接节点:将 Noise Texture 的 Fac (系数) 输出连接到 ColorRamp 的 Fac 输入。
  4. 将 ColorRamp 的 Color (颜色) 输出连接到 Instance on Points 节点的 Scale (缩放) 输入。
  5. 你会看到球体的大小开始根据噪波变化了。现在来调整参数:在 Noise Texture 节点中,将模式从 3D 改为 4D。这个 W 值就是我们后面用来做动画的关键。调整 Scale (缩放) 值。这个值越小,图案越大块;值越大,图案越细碎。可以先设为 2.0 左右。Detail (细节) 可以保持默认或稍微降低,比如 0 或 2。在 ColorRamp 节点中,拖动两端的滑块。将黑色滑块向右移动,白色滑块向左移动,增加对比度。黑色部分对应的球体会变小(甚至消失),白色部分对应的球体会变大。你可以通过调整滑块的位置和颜色值来控制球体大小的范围和过渡。比如,将黑色滑块的颜色值稍微调亮一点,可以让最小的球体不是完全消失。

添加材质和辉光

让这些小球亮起来!

  1. 按 Shift + A,搜索并添加 Set Material (设置材质) 节点,放在 Instance on Points 和 Group Output 之间。
  2. 转到右侧的 Material Properties (材质属性) 面板。点击 New (新建) 创建一个新材质。
  3. 将材质的 Surface (表面) 从 Principled BSDF (原理化BSDF) 改为 Emission (自发光)。
  4. 选择一个你喜欢的 Color (颜色),比如橙色。
  5. 调整 Strength (强度),比如 5 或 10,让它更亮。
  6. 回到 Geometry Nodes 编辑器,在 Set Material 节点中,点击材质选择框,选中我们刚刚创建的 Emission 材质。
  7. 转到 Render Properties (渲染属性) 面板。确保 Render Engine (渲染引擎) 设置为 Eevee。勾选 Bloom (辉光) 选项,调整阈值 (Threshold) 和强度 (Intensity) 等参数获得你喜欢的辉光效果。
  8. 转到 World Properties (世界属性) 面板,将 Color (颜色) 设置为纯黑色,这样背景就是黑的,更能突出辉光。
  9. 在视口右上角将 Viewport Shading 切换到 Rendered (渲染) 模式,预览最终效果。

设置相机

一个好的构图和景深效果能让画面更吸引人。

  1. 按 ~ (波浪号键,通常在 Esc 下方) 调出视图菜单,选择 View Top (顶视图)。
  2. 按 Shift + A -> Camera (相机),添加一个相机。
  3. 保持相机选中状态,按 Ctrl + Alt + NumPad 0,将当前视图设置为相机视图。
  4. 选中相机,按 G 然后按鼠标中键,前后拖动,调整相机远近。或者在相机属性里调整位置。
  5. 在 Camera Properties (相机属性,绿色相机图标) 面板中,勾选 Depth of Field (景深)。
  6. 展开 Depth of Field 设置,将 F-Stop 值调得很低,比如 0.1 或 0.2。这会产生强烈的背景虚化(Bokeh)效果,让发光点看起来像模糊的光斑。你可以调整 Focus Distance (对焦距离) 或直接用吸管工具点击场景中的某个点来设置对焦点,不过对于这种抽象效果,直接调低 F-Stop 通常就够了。

调整网格和外观

现在你已经搭建好了基本框架,可以自由发挥了:

  • 回到 Geometry Nodes 编辑器,调整 Grid 节点的 Vertices X 和 Vertices Y 的比例,可以得到不同方向性的线条感。比如减小 Vertices X,增加 Vertices Y,会得到垂直线条。
  • 调整 Ico Sphere 节点的 Radius,可以整体改变光点的大小。
  • 调整 Noise Texture 的 Scale, Detail, Roughness (粗糙度) 等参数,改变图案样式。
  • 调整 ColorRamp 的滑块位置和颜色,改变光点的明暗分布和过渡。
  • 调整 Emission 材质的颜色和强度。
  • 调整 Bloom 设置。
  • 调整相机的 F-Stop 值。

制作循环动画

要让动画无缝循环,我们需要用到 4D 噪波的 W 值和一点小技巧。

  1. 设置线性插值: 点击 Blender 左上角的 Edit (编辑) -> Preferences (偏好设置)。在 Animation (动画) 标签页下,确保 Default Interpolation (默认插值方式) 设置为 Linear (线性)。
  2. 准备节点:在 Geometry Nodes 编辑器中,找到你的 Noise Texture 节点,按 Shift + D 复制一个。按 Shift + A,搜索并添加 MixRGB 节点。将它的模式保持为 Mix。将第一个 Noise Texture 的 Fac 输出连接到 MixRGB 的 Color1 输入。将第二个 (复制的) Noise Texture 的 Fac 输出连接到 MixRGB 的 Color2 输入。将 MixRGB 的 Color 输出连接到 ColorRamp 的 Fac 输入 (替换掉原来的连接)。
  3. 设置关键帧:确保你的时间线在第 0 帧 (或者动画的起始帧)。在 第一个 Noise Texture 节点上,将 W 值设为 0。鼠标悬停在 W 值上,按 I 键插入一个关键帧。在 第二个 Noise Texture 节点上,设置一个 W 值,比如 5 。鼠标悬停在 W 值上,按 I 键插入关键帧。在 MixRGB 节点上,将 Fac (系数) 设为 0。鼠标悬停在 Fac 值上,按 I 键插入关键帧。将时间线移动到动画的 结束帧 (比如默认的 250 帧)。在 第一个 Noise Texture 节点上,将 W 值设为 5。鼠标悬停在 W 值上,按 I 键插入关键帧。在 第二个 Noise Texture 节点上,将 W 值设为 0。鼠标悬停在 W 值上,按 I 键插入关键帧。在 MixRGB 节点上,将 Fac 设为 1。鼠标悬停在 Fac 值上,按 I 键插入关键帧。
  4. 检查动画: 按空格键播放动画。由于两个噪波纹理沿着 W 轴反向移动,并通过 MixRGB 的 Fac 值进行线性混合,动画应该能在第 0 帧和第 250 帧完美衔接,形成无缝循环。

这个循环技巧利用了 4D 噪波在 W 维度上也是连续变化的特性。我们让两个完全相同的噪波纹理,一个 W 值从 0 变到 5,另一个 W 值从 5 变到 0。同时,我们用 MixRGB 节点从只显示第一个纹理 (Fac=0) 逐渐过渡到只显示第二个纹理 (Fac=1)。当动画结束时,第一个纹理在 W=5 的状态,第二个纹理在 W=0 的状态,此时画面完全由第二个纹理决定。而动画开始时,第一个纹理在 W=0,第二个在 W=5,画面完全由第一个纹理决定。因为 W=0 的状态是一样的,所以动画可以无缝衔接。

最终效果

现在,你应该得到了一个由 Geometry Nodes 控制的、发光的、带有景深效果的、并且可以无缝循环的点状网格动画!你可以尽情调整各种参数,创造出属于你自己的独特视觉效果。



希望这个教程对你有帮助!多尝试,多调整,你会发现 Geometry Nodes 的无限可能。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言