Blender 教程: 使用几何节点创建程序化水晶及材质

在本教程中,我们将学习如何使用 Blender 的几何节点 (Geometry Nodes) 创建一个程序化的水晶模型。这意味着你可以通过调整参数轻松生成各种不同形状和细节的水晶。此外,我们还将探讨如何为这些水晶创建两种不同风格的材质:一种是发光效果的风格化材质,另一种是更逼真的玻璃材质。
本教程适合对 Blender 有一定基础,并希望深入学习几何节点程序化建模以及 Cycles 渲染器材质应用的读者。
通过本教程,你将学到:
- 使用基础几何体搭建程序化模型。
- 理解并运用多个核心几何节点,如
Extrude Mesh
,Scale Elements
,Merge by Distance
,Dual Mesh
,Triangulate
,Subdivide Mesh
,Set Position
,Noise Texture
,Map Range
等。 - 通过节点连接实现复杂的逻辑控制。
- 将几何节点参数暴露到修改器面板,方便快速调整。
- 在 Cycles 中创建程序化水晶材质,包括发光效果和真实玻璃效果。
准备工作
- Blender 3.0 或更高版本 (视频中使用的是 Blender 3.3.0)。
- 开启 Cycles 渲染引擎以获得最佳材质效果 (尤其是对于玻璃材质)。
步骤一: 创建水晶基础模型
我们将从一个简单的立方体开始,并利用几何节点将其塑造成水晶的基本形态。
- 打开 Blender,选择默认的立方体。
- 切换到 几何节点 (Geometry Nodes) 工作区。
- 在几何节点编辑器底部,点击 + New 按钮,为立方体创建一个新的几何节点树。默认情况下,你会看到一个
Group Input
节点和一个Group Output
节点,它们之间通过一条绿色的Geometry
线连接。 - 添加圆柱体作为基础形状:
- 按下
Shift + A
,在菜单中选择Mesh Primitives
->Cylinder
,添加一个圆柱体节点。 - 将
Cylinder
节点的Mesh
输出连接到Group Output
节点的Geometry
输入,替换掉原有的立方体输入。现在场景中的立方体应该变成了一个圆柱体。 - 在
Cylinder
节点中,设置 Vertices (顶点数) 为5
。这将决定水晶的基本棱面数量,你可以根据喜好调整此数值 (例如 4、6 或更多),不同的顶点数会产生不同外观的水晶。
- 按下
- 使圆柱体顶部和底部收缩成尖端:现在,圆柱体的顶部和底部面应该被挤出并缩放到了一个点,形成了类似双锥体的形状。
- 添加 Extrude Mesh 节点: 按下
Shift + A
,搜索并添加Extrude Mesh
节点,将其放置在Cylinder
和Group Output
节点之间。 - 添加 Scale Elements 节点: 按下
Shift + A
,搜索并添加Scale Elements
节点,将其放置在Extrude Mesh
和Group Output
节点之间。 - 添加 Boolean Math 节点: 按下
Shift + A
,搜索并添加Boolean Math
节点。将其操作模式从默认的And
更改为Not
。 - 连接节点:
- 将
Cylinder
节点的Side
输出 (这是一个布尔值,表示哪些面是侧面) 连接到Boolean Math (Not)
节点的输入。 - 将
Boolean Math (Not)
节点的Boolean
输出连接到Extrude Mesh
节点的Selection
输入。这一步的目的是反转选择,使得Extrude Mesh
只作用于圆柱体的顶部和底部面 (因为我们反转了对侧面的选择)。 - 在
Extrude Mesh
节点中,取消勾选Individual
复选框。 - 将
Extrude Mesh
节点的Top
输出连接到Scale Elements
节点的Selection
输入。 - 将
Scale Elements
节点的Scale
值设置为0
。
- 将
- 添加 Extrude Mesh 节点: 按下
- 合并重叠顶点:
- 由于上一步将多个顶点缩放到了同一个位置,我们需要合并这些重叠的顶点,以形成单一的尖端。
- 按下
Shift + A
,搜索并添加Merge by Distance
节点,将其放置在Scale Elements
和Group Output
节点之间。保持默认的Distance
值即可。
- 创建水晶刻面效果:
- 为了让水晶表面更具不规则的刻面感,我们将使用
Dual Mesh
和Triangulate
节点的组合。 - 添加第一个 Dual Mesh 节点: 按下
Shift + A
,搜索并添加Dual Mesh
节点,将其放置在Merge by Distance
之后。 - 添加 Triangulate 节点: 按下
Shift + A
,搜索并添加Triangulate
节点,将其放置在第一个Dual Mesh
之后。 - 添加第二个 Dual Mesh 节点: 按下
Shift + A
,搜索并添加Dual Mesh
节点,将其放置在Triangulate
节点之后。Dual Mesh
节点会将网格的顶点转换为面,面转换为顶点。通过两次Dual Mesh
中间夹一个Triangulate
(将面三角化),可以有效地打乱原有规则的拓扑,形成类似水晶的随机刻面。
- 为了让水晶表面更具不规则的刻面感,我们将使用

步骤二: 添加随机化与细节
现在基础形状已经完成,我们来添加一些噪点和细分,使水晶看起来更自然、更有机。
- 细分网格:
- 按下
Shift + A
,搜索并添加Subdivide Mesh
节点,将其放置在最后一个Dual Mesh
节点之后。 - 设置
Subdivide Mesh
节点的Level
为2
。这将增加模型的面数,为后续的噪点置换提供足够的细节。
- 按下
- 使用噪点进行置换:现在水晶表面应该出现了一些随机的起伏。
- 添加 Set Position 节点: 按下
Shift + A
,搜索并添加Set Position
节点,将其放置在Subdivide Mesh
之后。 - 添加 Noise Texture 节点: 按下
Shift + A
,搜索并添加Noise Texture
节点。 - 添加 Map Range 节点: 按下
Shift + A
,搜索并添加Map Range
节点。将其数据类型从Float
更改为Vector
。 - 添加 Vector Math 节点: 按下
Shift + A
,搜索并添加Vector Math
节点。将其操作模式从Add
更改为Scale
。 - 连接节点并设置参数:
- 将
Noise Texture
节点的Color
输出连接到Map Range (Vector)
节点的Vector
输入。 - 在
Noise Texture
节点中,可以根据喜好调整以下参数,参考值为:Scale
:1.000
Detail
:2.000
Roughness
:0.500
Distortion
:0.000
(保持默认)
- 在
Map Range (Vector)
节点中,设置:
- 将
- 添加 Set Position 节点: 按下
To Min
(X, Y, Z) 全部设置为-1.000
。- 将
Map Range (Vector)
节点的Result
输出连接到Vector Math (Scale)
节点的第一个Vector
输入。 - 设置
Vector Math (Scale)
节点的Scale
值为0.400
(这个值控制噪点置换的强度,可以自由调整)。 - 将
Vector Math (Scale)
节点的Vector
输出连接到Set Position
节点的Offset
输入。

步骤三: 最终调整与材质设置
- 设置材质与平滑着色:
- 添加 Set Material 节点: 按下
Shift + A
,搜索并添加Set Material
节点,将其放置在Set Position
之后。 - 添加 Set Shade Smooth 节点: 按下
Shift + A
,搜索并添加Set Shade Smooth
节点,将其放置在Set Material
之后,并连接到Group Output
。 - 创建新材质: 在 Blender 右侧的 材质属性 (Material Properties) 选项卡中,点击 + New 按钮创建一个新材质,并将其命名为
Crystal
。 - 回到几何节点编辑器,在
Set Material
节点中,从下拉菜单选择刚刚创建的Crystal
材质。
- 添加 Set Material 节点: 按下
- 暴露参数到修改器面板:
- 为了方便地调整水晶的各种属性而无需进入节点编辑器,我们可以将一些关键参数连接到
Group Input
节点。 - 将
Cylinder
节点的Depth
输入拖拽连接到Group Input
节点上一个空的接口。 - 将
Cylinder
节点的Radius
输入拖拽连接到Group Input
节点上一个空的接口。 - 将
Extrude Mesh
节点的Offset Scale
输入拖拽连接到Group Input
节点上一个空的接口。 - 将
Noise Texture
节点的模式从3D
更改为4D
。这会多出一个W
输入,它相当于噪点的“种子”或相位,可以改变噪点的整体模式。 - 将
Noise Texture
节点的W
输入拖拽连接到Group Input
节点上一个空的接口。 - 现在,在选中水晶对象后,右侧的 修改器属性 (Modifier Properties) 面板中,你会看到这些暴露出来的参数 (Depth, Radius, Offset Scale, W),可以直接调整它们来改变水晶的形状和噪点。
- 为了方便地调整水晶的各种属性而无需进入节点编辑器,我们可以将一些关键参数连接到
- 添加倒角修改器 (可选):
- 为了让水晶的边缘不那么锐利,可以添加一个标准的倒角修改器。
- 在 修改器属性 (Modifier Properties) 面板中,点击 Add Modifier,选择
Bevel
。 - 设置
Segments
为2
或3
。 - 设置
Amount
为一个较小的值,例如0.01m
。

步骤四: 创建水晶材质
两种材质效果:一种是发光的风格化效果,另一种是更真实的玻璃效果。两种材质主要在 Cycles 渲染引擎下效果更佳。
材质1: 发光水晶 (Emissive Crystal)
这种材质利用菲涅尔效果控制发射强度,产生边缘发光、内部通透的效果。
- 确保渲染引擎设置为 Cycles。
- 选中水晶对象,切换到 着色 (Shading) 工作区。
- 在着色器编辑器中,你会看到之前创建的
Crystal
材质,它默认包含一个Principled BSDF
节点连接到Material Output
。 - 设置 Principled BSDF 节点:
Roughness
: 设置为0.250
左右。Transmission
: 设置为1.000
(使其完全透明)。Transmission Roughness
: 设置为0.250
左右 (与Roughness
类似,控制透射的模糊程度)。
- 添加控制发射的节点:
- Fresnel 节点: 按下
Shift + A
,搜索并添加Fresnel
节点。 - ColorRamp 节点: 按下
Shift + A
,搜索并添加ColorRamp
节点。 - Math 节点: 按下
Shift + A
,搜索并添加Math
节点,将其操作模式设置为Multiply
。 - 连接节点:
- 将
Fresnel
节点的Fac
输出连接到ColorRamp
节点的Fac
输入。 - 将
ColorRamp
节点的Color
输出连接到Math (Multiply)
节点的第一个Value
输入。 - 将
Math (Multiply)
节点的Value
输出连接到Principled BSDF
节点的Emission Strength
输入。
- 将
- Fresnel 节点: 按下
- 调整参数:
Fresnel
节点的IOR
(折射率) 设置为2.000
。- 调整
ColorRamp
节点:- 你可以调整色标的位置和颜色来控制菲涅尔效果的过渡。通常,让靠近边缘的部分 (色标在右侧) 更亮。将左侧黑色标向右移动到约
0.333
位置,右侧白色标保持在最右。
- 你可以调整色标的位置和颜色来控制菲涅尔效果的过渡。通常,让靠近边缘的部分 (色标在右侧) 更亮。将左侧黑色标向右移动到约
Math (Multiply)
节点的第二个Value
输入控制整体发射强度,可以根据场景需要调整,例如0.250
到2.000
或更高。Principled BSDF
节点的Base Color
可以设置为水晶的基色,例如略带粉色的颜色 (R: 0.88, G: 0.23, B: 0.33
)。Principled BSDF
节点的Emission
颜色可以设置为发光的颜色,例如明亮的蓝色 (R: 0.03, G: 0.63, B: 1.00
)。

材质2: 真实感水晶 (Realistic Glass Crystal)
这种材质使用标准的玻璃着色器,并通过菲涅尔效果混合不同的颜色,模拟光线在水晶内部的复杂折射和色散。
- 这种设置与上一个类似,但用
Glass BSDF
替换Principled BSDF
的大部分功能,并使用Mix Shader
(或Mix RGB
用于颜色) 来混合。 - 基础设置:
- Fresnel 节点:
IOR
设置为2.000
。 - ColorRamp 节点: 调整色标,例如左侧黑色标在
0.151
附近。
- Fresnel 节点:
- 混合颜色:
- MixRGB 节点: 按下
Shift + A
,搜索并添加MixRGB
节点,模式设置为Mix
。 - 将
ColorRamp
节点的Color
输出连接到MixRGB
节点的Fac
输入。 Color1
和Color2
可以设置为你希望水晶呈现的两种主要颜色,例如一种偏品红,一种偏青蓝。
- MixRGB 节点: 按下
- Glass BSDF 节点:
- 按下
Shift + A
,搜索并添加Glass BSDF
节点。 - 将
MixRGB
节点的Color
输出连接到Glass BSDF
节点的Color
输入。 Roughness
: 设置为一个较小的值,例如0.400
。IOR
: 保持默认1.450
或根据需要调整。
- 按下
- 将
Glass BSDF
节点的BSDF
输出连接到Material Output
节点的Surface
输入。
现在,你可以通过调整 ColorRamp
和 MixRGB
节点中的颜色来获得各种色彩斑斓的真实感水晶效果。

总结
通过本教程,我们成功地使用 Blender 的几何节点创建了一个灵活可控的程序化水晶模型。我们还学习了如何为其添加两种不同风格的材质,以适应不同的渲染场景和艺术需求。你可以尝试调整几何节点树中的各个参数,以及材质节点中的颜色和数值,创造出属于你自己的独特水晶!
希望本教程对你有所帮助!