今天,我们来学习一个简单但效果不错的动态图形(Motion Graphics)案例:一个发光的点状网格循环动画。我们将使用 Blender 强大的 Geometry Nodes (几何节点) 来实现,这个方法非常灵活,便于调整。
这个效果的核心原理其实很简单:
- 创建基础网格: 使用 Geometry Nodes 生成一个平面网格 (Grid),它定义了点的基本布局。
- 在点上放置物体: 在网格的每个顶点 (Vertex) 上,实例化 (Instance) 一个小的几何体,比如一个 Ico Sphere (图标球体)。
- 用噪波控制大小: 利用一个 Noise Texture (噪波纹理) 节点生成随机图案,再通过 ColorRamp (颜色渐变) 节点调整对比度,将这个图案信息连接到实例物体的大小 (Scale) 上。这样,噪波亮的地方球体就大,暗的地方球体就小。
- 驱动动画: 使用 Noise Texture 的 4D 模式,通过改变其 'W' 值,就能让噪波图案动起来,从而驱动球体大小的变化,形成动画。
- 添加发光效果: 为实例物体赋予一个 Emission (自发光) 材质,并在 Eevee 渲染器中开启 Bloom (辉光) 效果,让亮点“亮瞎眼”。
- 相机景深: 利用相机的 Depth of Field (景深) 功能,制造出失焦模糊(Bokeh)效果,增加视觉趣味。
- 循环动画: 通过混合两个反向运动的 4D 噪波纹理,可以制作出完美的无缝循环动画。
听起来有点复杂?别担心,下面我们一步步来做。
准备工作
- 打开 Blender。
- 删除默认的立方体、灯光和相机(如果需要)。
- 按 Shift + A,选择 Mesh -> Plane (网格 -> 平面),创建一个平面。这个平面本身不重要,只是作为挂载 Geometry Nodes 修改器的对象。
- 切换到顶部的 Geometry Nodes (几何节点) 工作区。
- 选中我们创建的 Plane,在 Geometry Nodes 编辑器中点击 New (新建) 按钮,创建一个新的节点树。
创建网格
- 默认节点树里有一个 Group Input (组输入) 和一个 Group Output (组输出) 节点。Group Input 代表原始 Plane 的几何信息,我们不需要它,可以选中它按 X 删除。
- 按 Shift + A,在弹出的菜单中选择 Search (搜索),输入 Grid 并选择它,添加一个 Grid 节点。
- 将 Grid 节点的 Mesh (网格) 输出接口,连接到 Group Output 节点的 Geometry (几何) 输入接口。现在场景里的 Plane 应该变成了一个由 Grid 节点生成的网格。
- 在 Grid 节点中,将 Size X (X尺寸) 和 Size Y (Y尺寸) 都设置为 5 m,让网格更大一些。
- 为了看得更清楚,可以点击视口右上角的 Viewport Shading (视口着色) 按钮,选择 Wireframe (线框) 模式。
- 现在调整 Grid 节点的 Vertices X (X顶点数 64) 和 Vertices Y (Y顶点数 64)。你会看到网格变得非常密集。这就是 Geometry Nodes 的好处,随时可以程序化地调整模型细节。调整完可以切换回 Solid (实体) 或 Material Preview (材质预览) 模式。
实例化图标球体
我们需要在刚才创建的网格的每个顶点上放置一个小球。
- 按 Shift + A,搜索并添加 Instance on Points (在点上实例化) 节点。把它放在 Grid 节点和 Group Output 节点之间,它会自动连接上。确保 Grid 的 Mesh 输出连接到 Instance on Points 的 Points (点) 输入。
- 我们需要一个物体来实例化。按 Shift + A,搜索并添加 Ico Sphere (图标球体) 节点。
- 将 Ico Sphere 节点的 Mesh (网格) 输出,连接到 Instance on Points 节点的 Instance (实例) 输入。场景中应该出现了密密麻麻的球体。
- 调整 Ico Sphere 节点:将 Subdivisions (细分) 设为 4,让球体更平滑。将 Radius (半径) 调小,比如 0.03 m 或 0.04 m,让球体之间留有空隙。
使用噪波控制缩放
现在是最关键的一步:用噪波纹理来控制每个球体的大小。
- 按 Shift + A,搜索并添加 Noise Texture (噪波纹理) 节点。
- 按 Shift + A,搜索并添加 ColorRamp (颜色渐变) 节点。
- 连接节点:将 Noise Texture 的 Fac (系数) 输出连接到 ColorRamp 的 Fac 输入。
- 将 ColorRamp 的 Color (颜色) 输出连接到 Instance on Points 节点的 Scale (缩放) 输入。
- 你会看到球体的大小开始根据噪波变化了。现在来调整参数:在 Noise Texture 节点中,将模式从 3D 改为 4D。这个 W 值就是我们后面用来做动画的关键。调整 Scale (缩放) 值。这个值越小,图案越大块;值越大,图案越细碎。可以先设为 2.0 左右。Detail (细节) 可以保持默认或稍微降低,比如 0 或 2。在 ColorRamp 节点中,拖动两端的滑块。将黑色滑块向右移动,白色滑块向左移动,增加对比度。黑色部分对应的球体会变小(甚至消失),白色部分对应的球体会变大。你可以通过调整滑块的位置和颜色值来控制球体大小的范围和过渡。比如,将黑色滑块的颜色值稍微调亮一点,可以让最小的球体不是完全消失。
添加材质和辉光
让这些小球亮起来!
- 按 Shift + A,搜索并添加 Set Material (设置材质) 节点,放在 Instance on Points 和 Group Output 之间。
- 转到右侧的 Material Properties (材质属性) 面板。点击 New (新建) 创建一个新材质。
- 将材质的 Surface (表面) 从 Principled BSDF (原理化BSDF) 改为 Emission (自发光)。
- 选择一个你喜欢的 Color (颜色),比如橙色。
- 调整 Strength (强度),比如 5 或 10,让它更亮。
- 回到 Geometry Nodes 编辑器,在 Set Material 节点中,点击材质选择框,选中我们刚刚创建的 Emission 材质。
- 转到 Render Properties (渲染属性) 面板。确保 Render Engine (渲染引擎) 设置为 Eevee。勾选 Bloom (辉光) 选项,调整阈值 (Threshold) 和强度 (Intensity) 等参数获得你喜欢的辉光效果。
- 转到 World Properties (世界属性) 面板,将 Color (颜色) 设置为纯黑色,这样背景就是黑的,更能突出辉光。
- 在视口右上角将 Viewport Shading 切换到 Rendered (渲染) 模式,预览最终效果。
设置相机
一个好的构图和景深效果能让画面更吸引人。
- 按 ~ (波浪号键,通常在 Esc 下方) 调出视图菜单,选择 View Top (顶视图)。
- 按 Shift + A -> Camera (相机),添加一个相机。
- 保持相机选中状态,按 Ctrl + Alt + NumPad 0,将当前视图设置为相机视图。
- 选中相机,按 G 然后按鼠标中键,前后拖动,调整相机远近。或者在相机属性里调整位置。
- 在 Camera Properties (相机属性,绿色相机图标) 面板中,勾选 Depth of Field (景深)。
- 展开 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 值和一点小技巧。
- 设置线性插值: 点击 Blender 左上角的 Edit (编辑) -> Preferences (偏好设置)。在 Animation (动画) 标签页下,确保 Default Interpolation (默认插值方式) 设置为 Linear (线性)。
- 准备节点:在 Geometry Nodes 编辑器中,找到你的 Noise Texture 节点,按 Shift + D 复制一个。按 Shift + A,搜索并添加 MixRGB 节点。将它的模式保持为 Mix。将第一个 Noise Texture 的 Fac 输出连接到 MixRGB 的 Color1 输入。将第二个 (复制的) Noise Texture 的 Fac 输出连接到 MixRGB 的 Color2 输入。将 MixRGB 的 Color 输出连接到 ColorRamp 的 Fac 输入 (替换掉原来的连接)。
- 设置关键帧:确保你的时间线在第 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 键插入关键帧。
- 检查动画: 按空格键播放动画。由于两个噪波纹理沿着 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 的无限可能。