今天,我们来学习一个简单但效果不错的动态图形(MotionGraphics)案例:一个发光的点状网格循环动画。我们将使用Bler强大的GeometryNodes(几何节点)来实现,这个方法非常灵活,便于调整。
这个效果的核心原理其实很简单:
创建基础网格:使用GeometryNodes生成一个平面网格(Grid),它定义了点的基本布局。
在点上放置物体:在网格的每个顶点(Vertex)上,实例化(Instance)一个小的几何体,比如一个IcoSphere(图标球体)。
用噪波控制大小:利用一个NoiseTexture(噪波纹理)节点生成随机图案,再通过ColorRamp(颜色渐变)节点调整对比度,将这个图案信息连接到实例物体的大小(Scale)上。这样,噪波亮的地方球体就大,暗的地方球体就小。
驱动动画:使用NoiseTexture的4D模式,通过改变其'W'值,就能让噪波图案动起来,从而驱动球体大小的变化,形成动画。
添加发光效果:为实例物体赋予一个Emission(自发光)材质,并在Eevee渲染器中开启Bloom(辉光)效果,让亮点“亮瞎眼”。
相机景深:利用相机的DepthofField(景深)功能,制造出失焦模糊(Bokeh)效果,增加视觉趣味。
循环动画:通过混合两个反向运动的4D噪波纹理,可以制作出完美的无缝循环动画。
听起来有点复杂?别担心,下面我们一步步来做。
准备工作打开Bler。
删除默认的立方体、灯光和相机(如果需要)。
按Shift+A,选择Mesh-Plane(网格-平面),创建一个平面。这个平面本身不重要,只是作为挂载GeometryNodes修改器的对象。
创建网格默认节点树里有一个GroupInput(组输入)和一个GroupOutput(组输出)节点。GroupInput代表原始Plane的几何信息,我们不需要它,可以选中它按X删除。
将Grid节点的Mesh(网格)输出接口,连接到GroupOutput节点的Geometry(几何)输入接口。现在场景里的Plane应该变成了一个由Grid节点生成的网格。
在Grid节点中,将SizeX(X尺寸)和SizeY(Y尺寸)都设置为5m,让网格更大一些。
现在调整Grid节点的VerticesX(X顶点数64)和VerticesY(Y顶点数64)。你会看到网格变得非常密集。这就是GeometryNodes的好处,随时可以程序化地调整模型细节。调整完可以切换回Solid(实体)或MaterialPreview(材质预览)模式。
实例化图标球体我们需要在刚才创建的网格的每个顶点上放置一个小球。
将IcoSphere节点的Mesh(网格)输出,连接到InstanceonPoints节点的Instance(实例)输入。场景中应该出现了密密麻麻的球体。
调整IcoSphere节点:将Subdivisions(细分)设为4,让球体更平滑。将Radius(半径)调小,比如0.03m或0.04m,让球体之间留有空隙。
使用噪波控制缩放现在是最关键的一步:用噪波纹理来控制每个球体的大小。
连接节点:将NoiseTexture的Fac(系数)输出连接到ColorRamp的Fac输入。
将ColorRamp的Color(颜色)输出连接到InstanceonPoints节点的Scale(缩放)输入。
你会看到球体的大小开始根据噪波变化了。现在来调整参数:在NoiseTexture节点中,将模式从3D改为4D。这个W值就是我们后面用来做动画的关键。调整Scale(缩放)值。这个值越小,图案越大块;值越大,图案越细碎。可以先设为2.0左右。Detail(细节)可以保持默认或稍微降低,比如0或2。在ColorRamp节点中,拖动两端的滑块。将黑色滑块向右移动,白色滑块向左移动,增加对比度。黑色部分对应的球体会变小(甚至消失),白色部分对应的球体会变大。你可以通过调整滑块的位置和颜色值来控制球体大小的范围和过渡。比如,将黑色滑块的颜色值稍微调亮一点,可以让最小的球体不是完全消失。
添加材质和辉光让这些小球亮起来!
将材质的Surface(表面)从PrincipledBSDF(原理化BSDF)改为Emission(自发光)。
选择一个你喜欢的Color(颜色),比如橙色。
调整Strength(强度),比如5或10,让它更亮。
转到RerProperties(渲染属性)面板。确保RerEngine(渲染引擎)设置为Eevee。勾选Bloom(辉光)选项,调整阈值(Threshold)和强度(Intensity)等参数获得你喜欢的辉光效果。
转到WorldProperties(世界属性)面板,将Color(颜色)设置为纯黑色,这样背景就是黑的,更能突出辉光。
在视口右上角将ViewportShading切换到Rered(渲染)模式,预览最终效果。
设置相机一个好的构图和景深效果能让画面更吸引人。
按~(波浪号键,通常在Esc下方)调出视图菜单,选择ViewTop(顶视图)。
按Shift+A-Camera(相机),添加一个相机。
保持相机选中状态,按Ctrl+Alt+NumPad0,将当前视图设置为相机视图。
选中相机,按G然后按鼠标中键,前后拖动,调整相机远近。或者在相机属性里调整位置。
在CameraProperties(相机属性,绿色相机图标)面板中,勾选DepthofField(景深)。
调整网格和外观现在你已经搭建好了基本框架,可以自由发挥了:
调整IcoSphere节点的Radius,可以整体改变光点的大小。
调整NoiseTexture的Scale,Detail,Roughness(粗糙度)等参数,改变图案样式。
调整ColorRamp的滑块位置和颜色,改变光点的明暗分布和过渡。
调整Emission材质的颜色和强度。
调整Bloom设置。
调整相机的F-Stop值。
制作循环动画要让动画无缝循环,我们需要用到4D噪波的W值和一点小技巧。
设置关键帧:确保你的时间线在第0帧(或者动画的起始帧)。在第一个NoiseTexture节点上,将W值设为0。鼠标悬停在W值上,按I键插入一个关键帧。在第二个NoiseTexture节点上,设置一个W值,比如5。鼠标悬停在W值上,按I键插入关键帧。在MixRGB节点上,将Fac(系数)设为0。鼠标悬停在Fac值上,按I键插入关键帧。将时间线移动到动画的结束帧(比如默认的250帧)。在第一个NoiseTexture节点上,将W值设为5。鼠标悬停在W值上,按I键插入关键帧。在第二个NoiseTexture节点上,将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的状态是一样的,所以动画可以无缝衔接。
最终效果现在,你应该得到了一个由GeometryNodes控制的、发光的、带有景深效果的、并且可以无缝循环的点状网格动画!你可以尽情调整各种参数,创造出属于你自己的独特视觉效果。
希望这个教程对你有帮助!多尝试,多调整,你会发现GeometryNodes的无限可能。