位移图终极教程:从入门到精通

什么是位移图?

想象一下,你有一张平坦的纸张,上面画着一个方形的盒子,你想让这个盒子看起来是三维的,有凹凸感,你可以用手指在纸背面按压,让盒子部分凸起,让周围部分凹陷。位移图 就像你那根无形的手指,它告诉软件如何去“按压”一个物体的表面,从而创造出真实的凹凸和深度感。

displacement map教程
(图片来源网络,侵删)

核心概念: 位移图是一张灰度图,图中的颜色亮度决定了物体表面顶点 的位移方向和距离。

  • 白色 (亮度值 255): 将顶点沿法线方向向外推到最远。
  • 黑色 (亮度值 0): 将顶点沿法线方向向内拉到最远。
  • 灰色 (亮度值 128): 不发生位移,保持原始位置。

与法线贴图的关键区别: 这是初学者最容易混淆的地方,非常重要。

特性 位移图 法线贴图
原理 真实地移动模型的顶点,改变模型的几何结构。 只是欺骗光照,模拟凹凸效果,顶点位置不变。
效果 真实阴影和轮廓边缘会随着凹凸而改变。 阴影和轮廓是假的,从侧面看依然是平滑的。
性能 消耗性能高,因为需要重新计算大量几何体。 消耗性能低,只改变像素着色,适合游戏和实时渲染。
使用 静态渲染、高精度细节、需要真实物理交互的场景。 游戏实时渲染、移动端、对性能要求高的场景。

位移是“真”的凹凸,法线是“假”的凹凸。


软件中的设置与工作流程

我们以最主流的 3D 软件为例,讲解如何使用位移图。

displacement map教程
(图片来源网络,侵删)

通用工作流程:

  1. 准备模型: 创建一个基础模型(如一个平面、球体)。
  2. 准备贴图: 获取一张高质量的位移图(灰度图)。
  3. 应用材质: 创建一个标准材质/着色器。
  4. 连接贴图: 将位移图连接到材质的 Displacement (位移) 或 Height (高度) 通道。
  5. 调整参数: 设置 Displacement Strength (位移强度)。
  6. 渲染设置: 在渲染器中启用 Displacement (位移) 并设置适当的 Height (高度/细分)。

在 Blender (Cycles & Eevee) 中使用

以 Cycles 渲染器为例 (最常用):

  1. 创建平面: 添加一个平面,将其 Subdivision Surface (细分曲面) 修改器的 Levels (层级) 调高到 5 或 6,这样模型才有足够的细节来产生位移。

  2. 创建材质: 按下 N 打开侧边栏,切换到 Material Properties (材质属性),新建一个 Principled BSDF 材质。

  3. 连接位移图:

    displacement map教程
    (图片来源网络,侵删)
    • 在材质预览窗口中,找到 Displacement (位移) 节点。
    • 点击 Color (颜色) 旁边的空白处,选择 Image Texture (图像纹理)。
    • Image Texture 节点中,加载你的位移图文件。
    • 重要: 确保 Image Texture 节点的 Color Space (色彩空间) 设置为 Non-Color (非色彩),因为位移图是数据,不是颜色,这个设置能保证灰度值被正确读取。
  4. 调整位移强度:

    • Displacement 节点中,调整 Scale (缩放) 值,这个值就是你的位移强度,正值向外,负值向内,根据你的贴图和需求来调整。
  5. 启用渲染器位移:

    • 切换到 Render Properties (渲染属性)。
    • 勾选 Displacement (位移) 选项。
    • 设置 Medium (介质) 为 PolyMesh (多边形网格)。
    • 关键: 调整 Max Displacement (最大位移),这个值必须大于你材质中设置的 Displacement Scale,否则效果会被裁剪。
    • 调整 Height (高度),这个值控制渲染时为了产生位移而添加的细分级别,值越高,细节越丰富,但渲染时间也越长。

在 Eevee 中使用: Eevee 的位移是“虚拟”的,通过 Tessellation (曲面细分) 实现,效果不如 Cycles 真实,但速度快。

  • 设置与 Cycles 类似,但在 Render Properties 中,需要勾选 Use Displacement (使用位移) 并设置 Tessellation (曲面细分) 的 Level (级别)。

在 3ds Max 中使用

  1. 准备模型: 同样,给模型添加 TurboSmoothDisplace 修改器,增加足够的细分。
  2. 应用材质: 打开材质编辑器,创建一个 Standard (标准) 材质。
  3. 设置贴图:
    • Maps (贴图) 卷展栏下,找到 Displacement (位移) 贴图通道。
    • 点击 None 按钮,选择你的位移图文件。
    • Bitmap 参数面板中,确保 Output (输出) 卷展栏下的 RGB Level (RGB 级别) 为 1.0 (默认)。
  4. 调整强度:
    • 返回到材质的 Maps 卷展栏,调整 Displacement 后面的数值,这就是位移强度。
  5. 渲染设置:
    • F10 打开渲染设置对话框。
    • Renderer (渲染器) 选项卡中,找到 Displacement (位移) 选项。
    • 勾选 Enable (启用)。
    • 设置 Type (类型) 为 2-Sided (双面) 或 3-Sided (三面) 通常效果更好。
    • 调整 Mesh (网格) 下的 Max Tessellation (最大细分) 值,以控制细节级别。

在 Maya 中使用

  1. 准备模型: 选中模型,在 Modify > Add New Attribute (添加新属性) 中添加一个自定义浮点属性,displacement_strength
  2. 创建材质: 打开 Hypershade,创建一个 lambertstandardSurface 材质。
  3. 应用贴图:
    • 在材质的 Place2DTexture 节点上,右键 -> Create New Connection (创建新连接)。
    • 连接到 file (文件) 节点,并加载你的位移图。
    • file 节点的 outColor (输出颜色) 连接到材质的 displacement (位移) 属性。
  4. 使用渲染节点:
    • 在 Hypershade 中,创建一个 displacementShader (位移着色器) 节点。
    • 将你的材质节点拖到 displacementShaderinput (输入) 上。
    • displacementShader 拖到场景中的模型上。
  5. 调整强度:
    • displacementShader 节点上,你会看到一个 Value (值) 属性,这就是位移强度。
    • 或者,将之前创建的 displacement_strength 属性连接到 displacementShaderValue 上,这样就可以在通道盒中方便地调整。
  6. 渲染设置:
    • 打开 Render Settings (渲染设置)。
    • Features (特性) 选项卡中,确保 Displacement (位移) 已勾选。
    • Quality (质量) 选项卡中,调整 Displacement (位移) 下的 Extra Tessellation (额外细分) 值。

如何创建或获取高质量的位移图?

没有好的源文件,再好的设置也白搭。

  1. 从高模烘焙 (最佳方式):

    • 这是行业标准做法,创建一个超高精度的“高模”(包含所有细节),再创建一个平滑的“低模”(作为最终渲染的模型)。
    • 使用软件的烘焙功能(如 Blender 的 Bake、3ds Max的 Render to Texture、Maya的 Transfer Maps),将高模的顶点信息烘焙成法线贴图和高度贴图/位移贴图
    • 很多烘焙工具可以直接输出 .exr 格式的位移图,它提供了比 8 位 JPG 更高的精度。
  2. 购买现成的资源:

    • 像Textures.com, Quixel Megascans, TurboSquid 等网站提供了大量 PBR 材质包,这些材质包通常都包含了位移图,文件名通常是 displacement.exrheight.png
  3. 使用程序化生成:

    使用 Substance Designer 等程序化材质软件,可以生成各种独特的、无缝的位移贴图。

  4. 转换法线贴图 (效果有限):

    • 在没有位移图的情况下,可以尝试用法线贴图来模拟,在 Blender 中,可以使用 Bump (凹凸) 节点连接法线贴图,但这只是视觉效果,不是真正的位移。

进阶技巧与常见问题

技巧 1:组合使用 在实际应用中,你常常会组合使用多种贴图:

  • Albedo/Diffuse (颜色): 定义基础颜色。
  • Roughness (粗糙度): 定义表面光滑程度。
  • Metallic (金属度): 定义金属属性。
  • Normal (法线): 提供日常的凹凸感,速度快。
  • Displacement (位移): 在需要真实阴影和轮廓的关键区域提供真实深度。

技巧 2:利用混合遮罩 你可能不希望整个物体都产生位移,可以创建一张遮罩贴图,将位移效果混合到特定区域,一张只有砖块部分是白色、水泥部分是黑色的图,用它来控制位移,就只有砖块会凸起。

常见问题 1:效果很弱或没有

  • 检查设置: 确认在渲染器中启用了位移功能。
  • 检查强度: Displacement Strength (位移强度) 或 Scale (缩放) 值是否太小?
  • 检查高度/细分: 渲染器中的 Height (高度) 或 Tessellation (细分) 值是否太低?模型没有足够的顶点来产生位移。
  • 检查贴图: 确认贴图是灰度图,并且加载到了正确的 Displacement 通道,而不是 BumpDiffuse 通道。

常见问题 2:出现破面或黑斑

  • 细分不足: 这是主要原因,模型本身的细分级别不够,或者渲染器设置的 Height 太低,导致顶点在被拉伸时“断裂”。
  • 解决方案: 增加细分,可以增加模型的 Subdivision Surface 修改器层级,或者在渲染器中提高 Max Tessellation / Extra Tessellation 的值。

常见问题 3:渲染时间过长

  • 位移是性能杀手,因为它极大地增加了多边形的数量。
  • 解决方案:
    • 合理使用: 只在相机近处或需要高细节的关键物体上使用位移。
    • 优化设置: 找到 HeightQuality 之间的最佳平衡点,不要无休止地增加细分。
    • 使用置换: 在某些情况下,Displace 修改器(如 3ds Max 中)比渲染器自带的位移更高效。

位移图是一个强大但需要谨慎使用的工具,它通过真实地改变模型几何来创造出无与伦比的细节和真实感。

记住核心要点:

  1. 位移是“真”的,改变顶点位置。
  2. 白色向外推,黑色向内拉,灰色不动。
  3. 设置 = 贴图 + 强度 + 渲染器启用 + 足够的细分。
  4. 性能开销大,用在刀刃上。

多加练习,尝试在不同软件中设置,并观察渲染结果,你会很快掌握这个能极大提升你作品质量的利器。