blender_crash_course

第3章:材质与纹理基础

章节概述

本章将带您进入 Blender 的材质与纹理世界。对于有 CAD 背景的学习者来说,这可能是一个全新的领域——从单纯的几何形体转向富有视觉表现力的渲染效果。我们将学习 Shader Editor 的使用、PBR(基于物理的渲染)材质原理、UV 展开技术以及纹理绘制的基础知识。掌握这些技能后,您将能够为模型赋予逼真的表面效果,从金属、木材到皮肤、织物等各种材质。

学习目标

3.1 Shader Editor 介绍

Shader Editor 是 Blender 中创建和编辑材质的核心工具。与传统 CAD 软件中简单的颜色和纹理分配不同,Blender 采用节点式编辑系统,提供了极大的灵活性和创造空间。这种方式类似于可视化编程,通过连接不同功能的节点来构建复杂的材质效果。

3.1.1 节点编辑器基础

节点编辑器的界面布局遵循从左到右的数据流向原则。每个节点代表一个特定的功能或操作,通过连线(称为 noodles)将数据从一个节点传递到另一个节点。

输入节点 --> 处理节点 --> 着色器节点 --> 输出节点
   |             |             |              |
纹理坐标      颜色调整     Principled     Material Output
Texture       ColorRamp        BSDF

工作区域组织

基本操作

3.1.2 基础节点类型

节点系统中包含多种类型的节点,每种都有特定的用途:

输入节点(Input):

纹理节点(Texture):

着色器节点(Shader):

转换节点(Converter):

3.1.3 节点连接与数据流

节点之间通过不同类型的接口连接,每种接口传递特定类型的数据:

接口颜色编码

数据类型转换规则

颜色 --> 数值:取灰度值(0.2126R + 0.7152G + 0.0722B)
数值 --> 颜色:所有通道使用相同值(灰度)
矢量 --> 颜色:XYZ 映射到 RGB
颜色 --> 矢量:RGB 映射到 XYZ

连接技巧

3.1.4 材质预览与调试

有效的预览和调试是材质创建过程中的关键环节:

预览模式

  1. Viewport Shading
    • Solid:基础颜色显示
    • Material Preview:使用 MatCap 或 HDRI 预览
    • Rendered:实时渲染预览
  2. 节点预览
    • Ctrl+Shift+左键点击节点:临时显示该节点的输出
    • Viewer 节点:专门用于调试中间结果

调试技巧

问题排查流程:
1. 检查纹理路径是否正确
2. 验证 UV 映射是否存在
3. 确认法线方向是否正确
4. 检查节点连接是否匹配数据类型
5. 使用 Emission 着色器排除光照影响

性能优化建议

3.2 PBR 材质原理

3.2.1 PBR 概念解析

PBR(Physically Based Rendering,基于物理的渲染)是一种遵循真实世界物理规律的渲染方法。与传统的艺术化渲染不同,PBR 材质在任何光照条件下都能保持一致的视觉效果,这对于创建写实的 3D 场景至关重要。

核心原理

  1. 能量守恒:反射光 + 折射光 ≤ 入射光
  2. 菲涅尔效应:掠射角度观察时反射增强
  3. 微表面理论:粗糙度决定反射的分散程度
光线交互模型:
        入射光
          ↓
    ┌─────────────┐
    │   表面层    │ ← 菲涅尔反射
    ├─────────────┤
    │   次表面    │ ← 漫反射/次表面散射
    └─────────────┘
          ↓
        透射光

PBR 工作流类型

Blender 的 Principled BSDF 主要采用金属度工作流,这也是目前业界标准。

3.2.2 Principled BSDF 节点详解

Principled BSDF 是 Blender 中最重要的着色器节点,它整合了多种材质特性,可以模拟绝大多数真实世界材质。

基础参数组

  1. Base Color(基础颜色)
    • 非金属:材质的反照率(Albedo)
    • 金属:反射颜色
    • 建议值范围:sRGB 0.05-0.95(避免纯黑纯白)
  2. Metallic(金属度)
    • 0.0:非金属材质(电介质)
    • 1.0:纯金属材质
    • 中间值:氧化或污染的金属表面
  3. Roughness(粗糙度)
    • 0.0:完美镜面反射
    • 1.0:完全漫反射
    • 影响反射的清晰度和光泽度
  4. IOR(折射率)
    • 默认 1.45(塑料)
    • 水:1.33,玻璃:1.5,钻石:2.42
    • 仅对非金属材质有效

高级参数组

  1. Subsurface(次表面散射)
    • 强度:0-1,控制散射程度
    • Radius:RGB 值,各通道散射距离
    • 适用材质:皮肤、蜡、大理石、牛奶
  2. Sheen(光泽)
    • 模拟织物边缘的亮光效果
    • Sheen Tint:染色程度
  3. Clearcoat(清漆层)
    • 模拟额外的反射层
    • 适用:汽车漆、湿润表面、涂层材质
  4. Transmission(透射)
    • 透明度控制
    • 配合 IOR 实现折射效果

3.2.3 常见材质参数调节

金属材质预设

铝:
- Base Color: (0.91, 0.92, 0.92)
- Metallic: 1.0
- Roughness: 0.3-0.5

金:
- Base Color: (1.0, 0.71, 0.29)
- Metallic: 1.0
- Roughness: 0.2-0.4

铜:
- Base Color: (0.96, 0.64, 0.38)
- Metallic: 1.0
- Roughness: 0.3-0.4

生锈金属:
- Base Color: 锈迹纹理
- Metallic: 0.7-0.9(使用纹理控制)
- Roughness: 0.6-0.9

非金属材质预设

塑料:
- Base Color: 任意颜色
- Metallic: 0.0
- Roughness: 0.4-0.6
- IOR: 1.45

橡胶:
- Base Color: 深灰色 (0.05, 0.05, 0.05)
- Metallic: 0.0
- Roughness: 0.7-0.9

玻璃:
- Base Color: 白色
- Metallic: 0.0
- Roughness: 0.0
- Transmission: 1.0
- IOR: 1.5

皮肤:
- Base Color: 肤色纹理
- Subsurface: 0.1-0.3
- Subsurface Radius: (1.0, 0.3, 0.1)
- Roughness: 0.5-0.7

纹理映射策略

3.2.4 材质库的创建与管理

建立个人材质库可以大幅提升工作效率:

材质组织结构

材质库/
├── 金属/
│   ├── 基础金属/
│   ├── 氧化金属/
│   └── 合金/
├── 有机/
│   ├── 皮肤/
│   ├── 植物/
│   └── 食物/
├── 建筑/
│   ├── 石材/
│   ├── 木材/
│   └── 混凝土/
└── 织物/
    ├── 棉麻/
    ├── 丝绸/
    └── 皮革/

材质命名规范

材质资产管理

  1. 使用 Asset Browser
    • 标记材质为资产(Mark as Asset)
    • 添加标签和描述
    • 设置预览图
  2. 链接与追加
    • Link:引用外部文件,节省内存
    • Append:完全导入,可自由修改
  3. 材质优化清单
    • 检查未使用的纹理
    • 合并相似节点组
    • 降低不必要的纹理分辨率
    • 使用实例化减少重复

3.3 UV 展开基础

UV 展开是将三维模型表面映射到二维平面的过程,就像把地球仪展开成平面地图。对于 CAD 用户来说,这个概念类似于钣金件的展开图,但应用范围更广,是贴图材质的基础。

3.3.1 UV 坐标系统理解

UV 坐标使用二维坐标系统来定位纹理在模型表面的位置。U 代表横向(相当于 X),V 代表纵向(相当于 Y),坐标范围通常是 0-1。

UV 空间特性

1,1 ┌──────────────┐
    │              │
  V │   UV 空间    │  纹理平铺规则:
    │              │  - 0-1:主纹理区域
    │              │  - <0 或 >1:纹理重复
0,0 └──────────────┘
    0      U       1

UV 与 3D 模型的关系

UV 密度概念: UV 密度指模型上单位面积对应的纹理像素数量。保持统一的 UV 密度可以确保纹理清晰度一致。

计算公式:
UV 密度 = (纹理分辨率 × UV 岛面积) / 3D 模型面积

目标密度参考:
- 游戏资产:10.24 px/cm(1024 px/m)
- 影视资产:20.48 px/cm(2048 px/m)
- 特写细节:40.96 px/cm(4096 px/m)

3.3.2 UV 展开方法

Blender 提供多种 UV 展开算法,每种适用于不同的模型类型:

1. Smart UV Project(智能投影)

2. Unwrap(展开)

3. Project from View(视图投影)

4. Cube/Cylinder/Sphere Projection(基础投影)

5. Follow Active Quads(跟随活动四边形)

展开质量检查

检查项目:
□ 拉伸程度(Stretch)
  - 蓝色:无拉伸
  - 红色:严重拉伸
□ UV 岛方向一致性
□ 接缝位置合理性
□ UV 空间利用率
□ 纹理密度均匀性

3.3.3 接缝放置策略

接缝(Seam)的放置直接影响 UV 展开的质量和纹理的连续性。好的接缝策略可以最小化可见的纹理断裂。

接缝放置原则

  1. 隐藏原则
    • 放在视线不易察觉的位置
    • 利用模型的自然折线
    • 放在会被其他物体遮挡的地方
  2. 结构原则
    • 沿着硬边放置(硬表面建模)
    • 跟随解剖学结构(角色建模)
    • 利用对称线(减少纹理工作量)

角色模型接缝策略

     前视图              侧视图
    ┌─────┐            ┌─────┐
    │ ◐ ◐ │            │     │╲
    │  ▽  │            │     │ ╲ 手臂接缝
    │ ─── │            │     │  ╲
    ├─┬─┬─┤            ├─────┤
    │ │ │ │            │     │
    │ │ │ │            │ ┆ ┆ │ 内侧接缝
    └─┴─┴─┘            └─┴─┴─┘
      ↑                  ↑ ↑
   中线接缝            腿部接缝

硬表面模型接缝策略

自动接缝标记技巧

  1. 根据角度:Select Sharp Edges
  2. 根据 UV 岛:Seams from Islands
  3. 手动微调:Alt+右键选择边循环

3.3.4 UV 优化技巧

UV 优化可以提高纹理利用率和渲染性能:

1. UV 打包优化

打包算法选择:
- 标准打包:均匀分布,适合通用情况
- 紧密打包:最大化空间利用
- UDIM 打包:多纹理集,适合高精度项目

优化参数:
- Margin:0.002-0.01(防止纹理溢出)
- Rotate:允许旋转以获得更好的排布
- Scale:统一缩放保持密度一致

2. UV 岛优化

3. 纹理图集(Atlas)技术

单个模型多材质 → 合并为一张纹理图集
优点:
- 减少绘制调用(Draw Call)
- 优化内存使用
- 简化材质管理

UV 分配策略:
┌────────────────┐
│ 金属 │  木材   │  1024×1024 纹理
├──────┼─────────┤  分成 4 个 512×512 区域
│ 玻璃 │  织物   │  每种材质占 1/4
└────────────────┘

4. UDIM 工作流: UDIM(U-Dimension)允许使用多个纹理贴图,突破单张纹理的分辨率限制。

UDIM 布局:
1001 1002 1003 1004
1011 1012 1013 1014
1021 1022 1023 1024

应用场景:
- 角色头部:1001(4K)
- 身体:1002(4K)
- 服装:1003-1004(2K)

5. 性能优化检查清单

3.4 纹理绘制入门

Blender 内置的纹理绘制功能让您无需切换到外部软件就能直接在 3D 模型上绘制纹理。这种工作方式特别适合快速原型制作和细节调整。

3.4.1 纹理绘制模式

Blender 提供两种主要的纹理绘制模式,每种都有其独特的优势:

1. 3D 视图绘制(Texture Paint Mode) 直接在 3D 模型表面绘制,所见即所得:

工作空间设置:
┌─────────────┬─────────────┐
│             │             │
│  3D 视图    │  UV 编辑器  │
│ (绘制模式)  │ (实时更新)  │
│             │             │
├─────────────┴─────────────┤
│      着色器编辑器          │
│    (材质实时预览)         │
└───────────────────────────┘

模式特点

2. 2D 图像编辑器绘制 在 UV 展开图上绘制,精确控制每个像素:

适用场景对比

3D 绘制适用于:
- 有机纹理(污渍、磨损)
- 细节添加(划痕、凹痕)
- 颜色变化(渐变、混合)

2D 绘制适用于:
- 精确图案(标志、文字)
- 平铺纹理(砖块、瓦片)
- 技术贴图(法线、置换)

纹理槽位管理: 绘制前需要设置纹理槽位(Texture Slots):

  1. Base Color:基础颜色纹理
  2. Roughness:粗糙度贴图
  3. Normal:法线贴图(需要特殊画笔)
  4. Bump:凹凸贴图
  5. 自定义槽位:遮罩、AO 等

3.4.2 画笔系统

Blender 的画笔系统功能强大,包含多种画笔类型和混合模式:

基础画笔类型

画笔工具架构:
┌────────────────────────────┐
│      Draw(绘制)          │ → 标准绘画
├────────────────────────────┤
│      Soften(柔化)        │ → 模糊处理
├────────────────────────────┤
│      Smear(涂抹)         │ → 颜色拖动
├────────────────────────────┤
│      Clone(克隆)         │ → 复制纹理
├────────────────────────────┤
│      Fill(填充)          │ → 区域填色
├────────────────────────────┤
│      Mask(遮罩)          │ → 保护区域
└────────────────────────────┘

画笔参数详解

  1. Radius(半径)
    • 快捷键:F 键调整大小
    • 压感支持:根据压力变化
    • 单位:像素或 Blender 单位
  2. Strength(强度)
    • 快捷键:Shift+F 调整
    • 范围:0.0-1.0
    • 累积效果:Accumulate 选项
  3. Blend Mode(混合模式): ``` 常用混合模式:
    • Mix:标准混合
    • Add:叠加增亮
    • Multiply:正片叠底
    • Overlay:叠加混合
    • Screen:滤色
    • Color Dodge:颜色减淡 ```
  4. Falloff(衰减曲线)
    • 控制画笔边缘柔和度
    • 自定义曲线形状
    • 预设:平滑、尖锐、常量

画笔纹理与遮罩

纹理应用层级:
画笔形状 × 纹理图案 × 遮罩 = 最终效果

纹理映射方式:
- Tiled:平铺重复
- 3D:投影到 3D 空间
- Random:随机旋转缩放
- Stencil:模板映射

自定义画笔创建

  1. 设置基础参数(大小、强度、间距)
  2. 添加纹理图案(可选)
  3. 配置 Falloff 曲线
  4. 保存为画笔预设
  5. 组织到画笔库

3.4.3 纹理投影方式

不同的投影方式决定了纹理如何映射到模型表面:

1. 视图投影(View Projection)

原理示意:
    相机/视图
        ↓
    ━━━━━━━━  投影平面
        ↓
    ╱╲╱╲╱╲╱╲  3D 模型

2. 三维投影(3D Projection)

3. UV 投影(UV Projection)

4. 模板投影(Stencil)

模板控制:
- 移动:右键拖动
- 旋转:Ctrl+右键
- 缩放:Shift+右键
- 重置:Alt+I

投影遮挡处理

3.4.4 多层纹理工作流

专业的纹理绘制通常采用多层方式,类似于 Photoshop 的图层系统:

层级组织策略

纹理栈结构(从下到上):
├─ 基础色层 (Base)
├─ 细节层 (Details)
│  ├─ 污渍 (Dirt)
│  ├─ 划痕 (Scratches)
│  └─ 磨损 (Wear)
├─ 贴花层 (Decals)
└─ 最终调整层 (Adjustments)

混合技术

  1. 使用节点混合多个纹理
    纹理1 ─┐
           ├─ Mix RGB ─→ 输出
    纹理2 ─┘
           ↑
         遮罩控制
    
  2. 遮罩驱动的细节添加
    • Cavity Mask:凹陷处积灰
    • Edge Mask:边缘磨损
    • AO Mask:环境遮蔽区域
    • Curvature:曲率驱动
  3. 程序化与手绘结合: ``` 工作流程:
    1. 程序化基础 → Noise/Voronoi 生成底纹
    2. 手绘细节 → 添加特定污渍、标记
    3. 程序化变化 → ColorRamp 调整、扭曲
    4. 手绘修正 → 最终调整和修复 ```

纹理烘焙流程: 将复杂的材质节点烘焙成纹理贴图:

  1. 准备阶段
    • 创建目标纹理(通常 2K/4K)
    • 设置 UV 映射
    • 配置烘焙边距(Margin)
  2. 烘焙类型: ``` 常用烘焙贴图:
    • Combined:完整光照
    • AO:环境光遮蔽
    • Normal:法线贴图
    • Roughness:粗糙度
    • Emit:自发光 ```
  3. 优化设置
    • Samples:采样数(128-512)
    • Margin:边缘扩展(4-16px)
    • Clear:清除原有内容

性能优化建议

本章小结

本章介绍了 Blender 材质与纹理系统的核心概念和技术:

关键要点

  1. Shader Editor:节点式材质编辑提供无限创作可能
  2. PBR 原理:基于物理的渲染确保材质在各种光照下的真实感
  3. UV 展开:合理的 UV 布局是高质量纹理的基础
  4. 纹理绘制:内置绘制工具实现完整的纹理制作流程

核心技能

工作流程总结

建模完成 → UV 展开 → 材质创建 → 纹理绘制 → 细节调整 → 烘焙输出

记住,好的材质不仅依赖技术参数,更需要对真实世界材质的观察和理解。多参考现实照片,分析不同材质的表面特性,将有助于创建更加可信的 3D 材质。

练习题

基础题

练习 3.1:PBR 材质参数调节 创建一个简单的立方体,为其制作以下材质:

提示:注意 Metallic 和 Roughness 的配合使用

参考答案 抛光铬合金: - Base Color: (0.8, 0.8, 0.85) - Metallic: 1.0 - Roughness: 0.1-0.2 磨砂塑料: - Base Color: 任意颜色 - Metallic: 0.0 - Roughness: 0.4-0.6 - IOR: 1.45 透明玻璃: - Base Color: (1.0, 1.0, 1.0) - Metallic: 0.0 - Roughness: 0.0 - Transmission: 1.0 - IOR: 1.5

练习 3.2:UV 展开练习 下载提供的”椅子模型”文件,完成 UV 展开:

提示:考虑部件的可见性和纹理连续性

参考答案 接缝放置策略: 1. 椅背:沿背面中线和底部边缘 2. 座面:沿底部边缘一圈 3. 椅腿:沿内侧不可见边 4. 横梁:沿底部中线 UV 密度检查:使用 UV 网格纹理验证各部分密度一致。 打包设置:Margin 0.01,允许旋转以优化空间。

练习 3.3:节点材质混合 使用节点编辑器创建一个”生锈金属”材质:

提示:使用 Mix Shader 或 Mix RGB 节点

参考答案 节点设置: 1. 创建两个 Principled BSDF(金属和锈迹) 2. 使用 Noise Texture → ColorRamp 生成遮罩 3. 用 Mix Shader 根据遮罩混合两个材质 4. 调整 Noise Scale 控制锈迹分布 5. ColorRamp 调整锈迹边缘硬度

挑战题

练习 3.4:UDIM 纹理工作流 为一个角色模型设置 UDIM:

提示:在 UV 编辑器中启用 UDIM 网格显示

参考答案 UDIM 设置步骤: 1. UV Editing 工作区,启用 UDIM 2. 选择头部网格,缩放移动到 0-1 区域(1001) 3. 选择身体网格,移动到 1-2,0-1 区域(1002) 4. 手部移动到 0-1,1-2 区域(1011) 5. 配件移动到 1-2,1-2 区域(1012) 6. 在 Shader Editor 中使用 Image Texture 节点,文件名格式:texture.1001.png

练习 3.5:程序化木纹材质 仅使用程序化纹理(不使用图像)创建逼真木纹:

提示:研究真实木材的纹理模式

参考答案 节点组合策略: 1. Wave Texture(Bands)作为基础年轮 2. 扭曲:Wave → Noise Texture → Distortion 3. 添加 Musgrave Texture 增加细节 4. 使用两个 ColorRamp 分别控制颜色和粗糙度 5. 混合多层 Wave 创建不规则性 6. 最终通过 Bump 节点添加凹凸细节

练习 3.6:纹理绘制项目 在提供的”机器人模型”上完成以下纹理绘制:

提示:分层工作,使用不同的混合模式

参考答案 绘制顺序和技巧: 1. 基础色:先绘制基础金属色 2. 贴花层:添加编号和标识(使用 Stencil) 3. 磨损层:边缘使用 Cavity Mask 辅助 4. 污渍层:使用低透明度多次叠加 5. 划痕:使用自定义画笔,跟随表面流向 6. 最后调整整体色调和对比度

常见陷阱与错误

Shader Editor 常见问题

1. 节点连接错误

错误:将 Color 输出连接到 Value 输入导致意外的灰度转换
解决:理解数据类型转换规则,必要时使用 Separate RGB

2. 纹理色彩空间设置错误

错误:将法线贴图设置为 sRGB 色彩空间
正确:Normal Map → Non-Color
     Roughness/Metallic → Non-Color
     Base Color → sRGB

3. 过度复杂的节点树

症状:渲染速度极慢,视窗卡顿
解决:
- 简化节点结构
- 使用节点组封装复杂逻辑
- 考虑烘焙成纹理

UV 展开常见错误

4. UV 重叠未处理

症状:纹理绘制时出现镜像效果
检查:UV 编辑器 → Overlays → Show Overlaps
解决:选择重叠面,分离或镜像处理

5. UV 密度不一致

症状:某些部位纹理模糊,某些部位过于清晰
工具:UV → Average Island Scale
技巧:使用 Texel Density 插件统一密度

6. 接缝位置不当

症状:明显的纹理断裂线
改进:
- 将接缝隐藏在自然分界处
- 使用 Clone 画笔修复接缝
- 增加 Margin 防止 Mipmap 出血

纹理绘制陷阱

7. 分辨率设置过高

问题:4K/8K 纹理导致内存溢出
建议:
- 远景物体:512-1K
- 中景物体:1K-2K
- 特写/主角:2K-4K

8. 忘记保存外部图像

风险:Blender 崩溃导致纹理丢失
习惯:
- Image → Save 定期保存
- 使用自动保存
- 设置合理的备份间隔

9. 纹理拉伸未检查

检查方法:
- UV 编辑器 → Display Stretch
- 类型:Area / Angle
- 目标:保持蓝色(无拉伸)

最佳实践检查清单

材质创建检查项

UV 展开检查项

纹理工作流检查项

通过遵循这些最佳实践,您将能够创建专业级别的材质和纹理,为您的 3D 作品增添真实感和艺术表现力。