Blender教程:使用几何节点创建程序化水晶
你好,欢迎阅读本篇教程!在本篇文章中,我们将深入探索 Blender 中强大的几何节点(Geometry Nodes),从零开始创建一个完全程序化、可自由定制和重复使用的水晶生成器。你不仅会学到如何生成单个水晶,还将学会如何将它们组合成令人惊叹的水晶簇,并能将其应用到任何你想要的对象上。
本教程非常适合对 Blender 有一定基础,并希望深入学习几何节点强大程序化建模能力的初中级用户。
通过本教程,你将学到:
- 使用曲线和几何节点从无到有构建基础模型。
- 通过程序化布尔运算为模型添加丰富的随机细节。
- 利用节点控制材质,为每个水晶实例赋予随机颜色。
- 将复杂的节点树封装成一个可复用的修改器,应用于任何对象。
- 掌握
Curve to Mesh,Instance on Points,Mesh Boolean等核心节点的使用方法。
准备工作
- 软件: Blender (本教程使用 Blender 3.0+ 版本,建议使用最新稳定版)
步骤一:搭建基础场景和节点工作区
首先,我们需要一个干净的工作空间,并将视图拆分为 3D 视图和几何节点编辑器。
- 打开 Blender,如果场景中有默认的立方体、灯光和相机,请按
A键全选它们,然后按X键,在弹出的菜单中选择 Delete 将其全部删除。 - 将鼠标指针移动到 3D 视口右上角边缘,直到光标变为十字形。
- 按住鼠标右键,在弹出的菜单中选择 Vertical Split (垂直分割)。
- 在视口中点击鼠标左键,完成分割,你将看到两个并排的 3D 视口。
- 在左侧或右侧视口的左上角,点击 Editor Type (编辑器类型) 图标(通常是一个网格球体图标)。
- 在下拉菜单中,选择
Geometry Node Editor(几何节点编辑器)。 - 现在,你的工作区应该一边是 3D 视口,另一边是几何节点编辑器。
步骤二:创建单个水晶的基础形状
我们将不使用任何预设模型,而是完全通过节点来创建水晶。我们的起点是一条简单的曲线。
- 在 3D 视口中,使用快捷键
Shift + A,选择Mesh > UV Sphere添加一个 UV 球体。这个球体本身不用于建模,只是作为挂载几何节点修改器的载体。 - 选中这个 UV 球体,在几何节点编辑器窗口中,点击 New 按钮。这会为该物体创建一个新的几何节点树。你会看到一个
Group Input(组输入) 和一个Group Output(组输出) 节点。 - 默认情况下,
Group Input的Geometry输出连接到了Group Output,这意味着我们看到了原始的 UV 球体。我们不需要它,所以先断开这个连接。 - 在几何节点编辑器中,按
Shift + A调出添加节点菜单,搜索并添加一个 Curve Line (曲线) 节点。 - 将
Curve Line节点的Curve输出端连接到Group Output节点的Geometry输入端。此时,你在 3D 视口中会看到一条垂直的直线。 - 为了给这条线赋予厚度,我们添加一个 Curve to Mesh (曲线转网格) 节点,并将其放置在
Curve Line和Group Output之间。 - 现在我们需要一个轮廓来定义这条线的横截面形状。添加一个 Curve Circle (圆环曲线) 节点。
- 将
Curve Circle节点的Curve输出连接到Curve to Mesh节点的Profile Curve(轮廓曲线) 输入。你会看到场景中的直线变成了一个圆柱体。 - 在
Curve Circle节点上,将 Resolution (分辨率) 参数改为5。这将把横截面变成一个五边形,这是水晶常见的多边形形状。 - 水晶的边缘应该是锐利的,而不是平滑的。为了实现这个效果,添加一个 Split Edges (分离边) 节点,并将其放在
Curve to Mesh节点之后。这样,每个面都会被清晰地分离开。 - 接下来,我们要塑造水晶的垂直轮廓,让它有尖顶。添加一个 Set Curve Radius (设置曲线半径) 节点,并将其放在
Curve Line和Curve to Mesh节点之间。 - 为了能够沿着曲线(从底部到顶部)控制其半径变化,我们添加一个 Spline Parameter (样条线参数) 节点。它的
Factor输出值从 0 (曲线起点) 到 1 (曲线终点) 线性变化。 - 添加一个 Float Curve (浮点曲线) 节点。将
Spline Parameter的Factor输出连接到Float Curve的Value输入,再将Float Curve的Value输出连接到Set Curve Radius的Radius输入。 Float Curve节点允许我们用一条曲线来控制半径。默认是一条斜线,所以水晶底部半径为 0,顶部为 1。- 点击曲线左下角的点,将其 Y 值设为
1,这样底部就不会是尖的。 - 点击曲线右上角的点,将其 Y 值设为
0,这样顶部就是尖的。 - 在曲线中间点击左键添加一个新的控制点,并向上拖动,形成一个凸起的形状。这会使水晶中间部分变宽。
- 点击曲线左下角的点,将其 Y 值设为
- 为了让水晶的轮廓更平滑,我们需要增加曲线的控制点。在
Curve Line和Set Curve Radius之间,添加一个 Resample Curve (重采样曲线) 节点,并将Count(数量) 设置为20。
现在回到 Float Curve 节点,微调曲线形状,直到你得到一个满意的基本水晶外形。你可以通过拖拽控制点和它们的句柄来调整。

步骤三:添加随机的布尔切割效果
完美的几何体看起来很假,我们需要给水晶添加一些随机的破损和不规则切面。
- 添加一个 Mesh Boolean (网格布尔) 节点,并将其放在
Split Edges之后。保持模式为 Difference (差集)。我们将用这个节点从主水晶上“减去”一些形状。 - 现在创建用来切割的形状。首先,我们需要一个体积来随机分布这些切割形状。添加一个 UV Sphere 节点和一个 Transform (变换) 节点。将
UV Sphere连接到Transform。- 在
Transform节点中,将Translation(位移) 的 Z 轴设为0.5,让球体上移。 - 将
Scale(缩放) 的 X 和 Y 轴设为较小的值(例如0.2),Z 轴设为0.42,将其压扁成一个椭球体,使其包裹住我们的水晶。
- 在
- 添加 Distribute Points on Faces (在表面分布点) 节点,将
Transform节点的输出连接到它的Mesh输入。这会在椭球体表面生成随机点。 - 添加 Instance on Points (在点上实例化) 节点。将
Distribute Points on Faces的Points输出连接到Instance on Points的Points输入。 - 添加一个 Cube (立方体) 节点,并将其
Mesh输出连接到Instance on Points的Instance输入。这些立方体就是我们的“切割刀具”。 - 为了让切割看起来更自然,我们需要随机化立方体的旋转。
- 添加 Align Euler to Vector (对齐欧拉到矢量) 节点。将其
Rotation输出连接到Instance on Points的Rotation输入。 - 将
Distribute Points on Faces的Normal(法线) 输出连接到Align Euler to Vector的Vector输入。并将对齐轴设为 Z。这会让每个立方体都朝向外。 - 为了增加旋转的随机性,再添加一个 Random Value (随机值) 节点(类型设为
Vector)和一个 Vector Math (矢量数学) 节点(模式设为Add)。将Random Value的输出和Align Euler to Vector的输出都连接到Add节点的输入,然后将Add节点的最终结果连接到Instance on Points的Rotation输入。你可以调整Random Value的Min和Max值来控制随机旋转的范围。
- 添加 Align Euler to Vector (对齐欧拉到矢量) 节点。将其
- 现在,将
Instance on Points节点的Instances输出连接到Mesh Boolean节点的Mesh 2输入。 - 调整
Distribute Points on Faces节点的Density(密度) 和Seed(随机种) 值,以及Cube节点的Size(大小),观察水晶被随机切割的效果。


步骤四:设置水晶材质和渲染
一个好的材质能让水晶看起来晶莹剔透。
- 在整个节点树的末端 (
Mesh Boolean之后),添加一个 Set Material (设置材质) 节点。 - 在右侧的属性面板中,进入 Material Properties (材质属性) 标签页,点击 New 创建一个新材质,并将其命名为
Crystal。 - 在 Set Material 节点中,点击材质选择框,选择我们刚刚创建的
Crystal材质。 - 切换到 Shader Editor (着色器编辑器) 窗口。删除默认的
Principled BSDF节点。 - 添加一个 Glass BSDF (玻璃着色器) 节点,并将其
BSDF输出连接到Material Output的Surface输入。 - 为了更好地预览玻璃效果,我们需要切换到
Cycles渲染引擎并设置环境光。- 在 Render Properties (渲染属性,相机图标) 中,将
Render Engine改为Cycles。 - 在 World Properties (世界属性,地球图标) 中,点击
Color旁边的黄色小圆点,选择 Environment Texture (环境纹理)。 - 点击 Open,选择一个你自己的 HDRI 文件来为场景提供逼真的光照和反射。
- 在 Render Properties (渲染属性,相机图标) 中,将
- 回到 Shader Editor,我们可以进一步调整
Glass BSDF的参数:- Color: 设置水晶的基础颜色。
- Roughness: 设置表面的粗糙度,值越小越光滑。
- IOR (Index of Refraction): 折射率。水晶的折射率大约是
2.0,设置这个值能让它看起来更真实。
- (可选)添加随机颜色: 要让水晶簇中的每个水晶颜色不同,可以使用
Object Info节点。- 在 Shader Editor 中添加一个 Object Info (物体信息) 节点和一个 ColorRamp (颜色渐变) 节点。
- 将
Object Info的Random输出连接到ColorRamp的Fac输入。 - 将
ColorRamp的Color输出连接到Glass BSDF的Color输入。 - 在
ColorRamp中,你可以添加多个色标,并为它们设置不同的颜色,从而为水晶簇创建丰富的色彩变化。将插值模式从Linear改为Constant可以得到离散的纯色块。

步骤五:创建可复用的水晶生成器
现在,我们将整个节点设置打包,使其可以作为修改器应用到任何物体上,生成水晶簇。
- 在几何节点编辑器中,找到最开始的
Group Input节点。这个节点代表了应用修改器的原始物体(在我们的例子中是 UV 球体)。 - 找到我们用于分布切割刀具的
Distribute Points on Faces节点。将Group Input的Geometry输出连接到这个节点的Mesh输入。 - 同样地,复制整个水晶实例化的节点链(从
Distribute Points on Faces开始到Instance on Points结束),创建一个新的分支。 - 将
Group Input的Geometry同样连接到这个新分支的Distribute Points on Faces节点的Mesh输入。 - 将这个新分支的
Instance on Points的Instances输出作为要实例化的对象。这意味着我们将把我们创建的单个水晶(包含所有切割效果)作为实例,散布在原始物体的表面。 - 在
Instance on Points节点中,我们可以调整Scale来控制生成的水晶簇中水晶的大小,并可以添加Random Value节点来随机化大小和旋转,使其看起来更加自然。 - 最后,将
Instance on Points节点的输出连接到最终的Group Output。
现在,你可以选择任何其他物体(例如一个环体或 Suzanne 猴头),进入 Modifier Properties (修改器属性) 面板,添加一个 Geometry Nodes 修改器,并从下拉菜单中选择我们刚刚创建的 Crystallize 节点组。你会看到这个物体表面瞬间长满了水晶!
总结
恭喜你!通过本教程,你已经成功地使用 Blender 的几何节点创建了一个功能强大的程序化水晶生成器。我们从一条简单的曲线开始,逐步构建出复杂的水晶形状,利用布尔运算添加了自然的破损效果,并学会了如何设置逼真的玻璃材质以及如何将其封装成一个灵活的工具。
现在,你可以尽情发挥创意,尝试将这个生成器应用到各种模型上,调整节点参数,创造出独一无二的水晶艺术作品。