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

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

你好,欢迎阅读本篇教程!在本篇文章中,我们将深入探索 Blender 中强大的几何节点(Geometry Nodes),从零开始创建一个完全程序化、可自由定制和重复使用的水晶生成器。你不仅会学到如何生成单个水晶,还将学会如何将它们组合成令人惊叹的水晶簇,并能将其应用到任何你想要的对象上。

本教程非常适合对 Blender 有一定基础,并希望深入学习几何节点强大程序化建模能力的初中级用户。

通过本教程,你将学到:

  • 使用曲线和几何节点从无到有构建基础模型。
  • 通过程序化布尔运算为模型添加丰富的随机细节。
  • 利用节点控制材质,为每个水晶实例赋予随机颜色。
  • 将复杂的节点树封装成一个可复用的修改器,应用于任何对象。
  • 掌握 Curve to Mesh, Instance on Points, Mesh Boolean 等核心节点的使用方法。

准备工作

  • 软件: Blender (本教程使用 Blender 3.0+ 版本,建议使用最新稳定版)

步骤一:搭建基础场景和节点工作区

首先,我们需要一个干净的工作空间,并将视图拆分为 3D 视图和几何节点编辑器。

  1. 打开 Blender,如果场景中有默认的立方体、灯光和相机,请按 A 键全选它们,然后按 X 键,在弹出的菜单中选择 Delete 将其全部删除。
  2. 将鼠标指针移动到 3D 视口右上角边缘,直到光标变为十字形。
  3. 按住鼠标右键,在弹出的菜单中选择 Vertical Split (垂直分割)。
  4. 在视口中点击鼠标左键,完成分割,你将看到两个并排的 3D 视口。
  5. 在左侧或右侧视口的左上角,点击 Editor Type (编辑器类型) 图标(通常是一个网格球体图标)。
  6. 在下拉菜单中,选择 Geometry Node Editor (几何节点编辑器)。
  7. 现在,你的工作区应该一边是 3D 视口,另一边是几何节点编辑器。

步骤二:创建单个水晶的基础形状

我们将不使用任何预设模型,而是完全通过节点来创建水晶。我们的起点是一条简单的曲线。

  1. 在 3D 视口中,使用快捷键 Shift + A,选择 Mesh > UV Sphere 添加一个 UV 球体。这个球体本身不用于建模,只是作为挂载几何节点修改器的载体。
  2. 选中这个 UV 球体,在几何节点编辑器窗口中,点击 New 按钮。这会为该物体创建一个新的几何节点树。你会看到一个 Group Input (组输入) 和一个 Group Output (组输出) 节点。
  3. 默认情况下,Group InputGeometry 输出连接到了 Group Output,这意味着我们看到了原始的 UV 球体。我们不需要它,所以先断开这个连接。
  4. 在几何节点编辑器中,按 Shift + A 调出添加节点菜单,搜索并添加一个 Curve Line (曲线) 节点。
  5. Curve Line 节点的 Curve 输出端连接到 Group Output 节点的 Geometry 输入端。此时,你在 3D 视口中会看到一条垂直的直线。
  6. 为了给这条线赋予厚度,我们添加一个 Curve to Mesh (曲线转网格) 节点,并将其放置在 Curve LineGroup Output 之间。
  7. 现在我们需要一个轮廓来定义这条线的横截面形状。添加一个 Curve Circle (圆环曲线) 节点。
  8. Curve Circle 节点的 Curve 输出连接到 Curve to Mesh 节点的 Profile Curve (轮廓曲线) 输入。你会看到场景中的直线变成了一个圆柱体。
  9. Curve Circle 节点上,将 Resolution (分辨率) 参数改为 5。这将把横截面变成一个五边形,这是水晶常见的多边形形状。
  10. 水晶的边缘应该是锐利的,而不是平滑的。为了实现这个效果,添加一个 Split Edges (分离边) 节点,并将其放在 Curve to Mesh 节点之后。这样,每个面都会被清晰地分离开。
  11. 接下来,我们要塑造水晶的垂直轮廓,让它有尖顶。添加一个 Set Curve Radius (设置曲线半径) 节点,并将其放在 Curve LineCurve to Mesh 节点之间。
  12. 为了能够沿着曲线(从底部到顶部)控制其半径变化,我们添加一个 Spline Parameter (样条线参数) 节点。它的 Factor 输出值从 0 (曲线起点) 到 1 (曲线终点) 线性变化。
  13. 添加一个 Float Curve (浮点曲线) 节点。将 Spline ParameterFactor 输出连接到 Float CurveValue 输入,再将 Float CurveValue 输出连接到 Set Curve RadiusRadius 输入。
  14. Float Curve 节点允许我们用一条曲线来控制半径。默认是一条斜线,所以水晶底部半径为 0,顶部为 1。
    • 点击曲线左下角的点,将其 Y 值设为 1,这样底部就不会是尖的。
    • 点击曲线右上角的点,将其 Y 值设为 0,这样顶部就是尖的。
    • 在曲线中间点击左键添加一个新的控制点,并向上拖动,形成一个凸起的形状。这会使水晶中间部分变宽。
  15. 为了让水晶的轮廓更平滑,我们需要增加曲线的控制点。在 Curve LineSet Curve Radius 之间,添加一个 Resample Curve (重采样曲线) 节点,并将 Count (数量) 设置为 20

现在回到 Float Curve 节点,微调曲线形状,直到你得到一个满意的基本水晶外形。你可以通过拖拽控制点和它们的句柄来调整。

步骤三:添加随机的布尔切割效果

完美的几何体看起来很假,我们需要给水晶添加一些随机的破损和不规则切面。

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

步骤四:设置水晶材质和渲染

一个好的材质能让水晶看起来晶莹剔透。

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

步骤五:创建可复用的水晶生成器

现在,我们将整个节点设置打包,使其可以作为修改器应用到任何物体上,生成水晶簇。

  1. 在几何节点编辑器中,找到最开始的 Group Input 节点。这个节点代表了应用修改器的原始物体(在我们的例子中是 UV 球体)。
  2. 找到我们用于分布切割刀具的 Distribute Points on Faces 节点。将 Group InputGeometry 输出连接到这个节点的 Mesh 输入。
  3. 同样地,复制整个水晶实例化的节点链(从 Distribute Points on Faces 开始到 Instance on Points 结束),创建一个新的分支。
  4. Group InputGeometry 同样连接到这个新分支的 Distribute Points on Faces 节点的 Mesh 输入。
  5. 将这个新分支的 Instance on PointsInstances 输出作为要实例化的对象。这意味着我们将把我们创建的单个水晶(包含所有切割效果)作为实例,散布在原始物体的表面。
  6. Instance on Points 节点中,我们可以调整 Scale 来控制生成的水晶簇中水晶的大小,并可以添加 Random Value 节点来随机化大小和旋转,使其看起来更加自然。
  7. 最后,将 Instance on Points 节点的输出连接到最终的 Group Output

现在,你可以选择任何其他物体(例如一个环体或 Suzanne 猴头),进入 Modifier Properties (修改器属性) 面板,添加一个 Geometry Nodes 修改器,并从下拉菜单中选择我们刚刚创建的 Crystallize 节点组。你会看到这个物体表面瞬间长满了水晶!

总结

恭喜你!通过本教程,你已经成功地使用 Blender 的几何节点创建了一个功能强大的程序化水晶生成器。我们从一条简单的曲线开始,逐步构建出复杂的水晶形状,利用布尔运算添加了自然的破损效果,并学会了如何设置逼真的玻璃材质以及如何将其封装成一个灵活的工具。

现在,你可以尽情发挥创意,尝试将这个生成器应用到各种模型上,调整节点参数,创造出独一无二的水晶艺术作品。