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

核心概念: 位移图是一张灰度图,图中的颜色亮度决定了物体表面顶点 的位移方向和距离。
- 白色 (亮度值 255): 将顶点沿法线方向向外推到最远。
- 黑色 (亮度值 0): 将顶点沿法线方向向内拉到最远。
- 灰色 (亮度值 128): 不发生位移,保持原始位置。
与法线贴图的关键区别: 这是初学者最容易混淆的地方,非常重要。
| 特性 | 位移图 | 法线贴图 |
|---|---|---|
| 原理 | 真实地移动模型的顶点,改变模型的几何结构。 | 只是欺骗光照,模拟凹凸效果,顶点位置不变。 |
| 效果 | 真实阴影和轮廓边缘会随着凹凸而改变。 | 阴影和轮廓是假的,从侧面看依然是平滑的。 |
| 性能 | 消耗性能高,因为需要重新计算大量几何体。 | 消耗性能低,只改变像素着色,适合游戏和实时渲染。 |
| 使用 | 静态渲染、高精度细节、需要真实物理交互的场景。 | 游戏实时渲染、移动端、对性能要求高的场景。 |
位移是“真”的凹凸,法线是“假”的凹凸。
软件中的设置与工作流程
我们以最主流的 3D 软件为例,讲解如何使用位移图。

通用工作流程:
- 准备模型: 创建一个基础模型(如一个平面、球体)。
- 准备贴图: 获取一张高质量的位移图(灰度图)。
- 应用材质: 创建一个标准材质/着色器。
- 连接贴图: 将位移图连接到材质的
Displacement(位移) 或Height(高度) 通道。 - 调整参数: 设置
Displacement Strength(位移强度)。 - 渲染设置: 在渲染器中启用
Displacement(位移) 并设置适当的Height(高度/细分)。
在 Blender (Cycles & Eevee) 中使用
以 Cycles 渲染器为例 (最常用):
-
创建平面: 添加一个平面,将其
Subdivision Surface(细分曲面) 修改器的Levels(层级) 调高到 5 或 6,这样模型才有足够的细节来产生位移。 -
创建材质: 按下
N打开侧边栏,切换到Material Properties(材质属性),新建一个Principled BSDF材质。 -
连接位移图:
(图片来源网络,侵删)- 在材质预览窗口中,找到
Displacement(位移) 节点。 - 点击
Color(颜色) 旁边的空白处,选择Image Texture(图像纹理)。 - 在
Image Texture节点中,加载你的位移图文件。 - 重要: 确保
Image Texture节点的Color Space(色彩空间) 设置为Non-Color(非色彩),因为位移图是数据,不是颜色,这个设置能保证灰度值被正确读取。
- 在材质预览窗口中,找到
-
调整位移强度:
- 在
Displacement节点中,调整Scale(缩放) 值,这个值就是你的位移强度,正值向外,负值向内,根据你的贴图和需求来调整。
- 在
-
启用渲染器位移:
- 切换到
Render Properties(渲染属性)。 - 勾选
Displacement(位移) 选项。 - 设置
Medium(介质) 为PolyMesh(多边形网格)。 - 关键: 调整
Max Displacement(最大位移),这个值必须大于你材质中设置的Displacement Scale,否则效果会被裁剪。 - 调整
Height(高度),这个值控制渲染时为了产生位移而添加的细分级别,值越高,细节越丰富,但渲染时间也越长。
- 切换到
在 Eevee 中使用:
Eevee 的位移是“虚拟”的,通过 Tessellation (曲面细分) 实现,效果不如 Cycles 真实,但速度快。
- 设置与 Cycles 类似,但在
Render Properties中,需要勾选Use Displacement(使用位移) 并设置Tessellation(曲面细分) 的Level(级别)。
在 3ds Max 中使用
- 准备模型: 同样,给模型添加
TurboSmooth或Displace修改器,增加足够的细分。 - 应用材质: 打开材质编辑器,创建一个
Standard(标准) 材质。 - 设置贴图:
- 在
Maps(贴图) 卷展栏下,找到Displacement(位移) 贴图通道。 - 点击
None按钮,选择你的位移图文件。 - 在
Bitmap参数面板中,确保Output(输出) 卷展栏下的RGB Level(RGB 级别) 为 1.0 (默认)。
- 在
- 调整强度:
- 返回到材质的
Maps卷展栏,调整Displacement后面的数值,这就是位移强度。
- 返回到材质的
- 渲染设置:
- 按
F10打开渲染设置对话框。 - 在
Renderer(渲染器) 选项卡中,找到Displacement(位移) 选项。 - 勾选
Enable(启用)。 - 设置
Type(类型) 为2-Sided(双面) 或3-Sided(三面) 通常效果更好。 - 调整
Mesh(网格) 下的Max Tessellation(最大细分) 值,以控制细节级别。
- 按
在 Maya 中使用
- 准备模型: 选中模型,在
Modify>Add New Attribute(添加新属性) 中添加一个自定义浮点属性,displacement_strength。 - 创建材质: 打开 Hypershade,创建一个
lambert或standardSurface材质。 - 应用贴图:
- 在材质的
Place2DTexture节点上,右键 ->Create New Connection(创建新连接)。 - 连接到
file(文件) 节点,并加载你的位移图。 - 将
file节点的outColor(输出颜色) 连接到材质的displacement(位移) 属性。
- 在材质的
- 使用渲染节点:
- 在 Hypershade 中,创建一个
displacementShader(位移着色器) 节点。 - 将你的材质节点拖到
displacementShader的input(输入) 上。 - 将
displacementShader拖到场景中的模型上。
- 在 Hypershade 中,创建一个
- 调整强度:
- 在
displacementShader节点上,你会看到一个Value(值) 属性,这就是位移强度。 - 或者,将之前创建的
displacement_strength属性连接到displacementShader的Value上,这样就可以在通道盒中方便地调整。
- 在
- 渲染设置:
- 打开
Render Settings(渲染设置)。 - 在
Features(特性) 选项卡中,确保Displacement(位移) 已勾选。 - 在
Quality(质量) 选项卡中,调整Displacement(位移) 下的Extra Tessellation(额外细分) 值。
- 打开
如何创建或获取高质量的位移图?
没有好的源文件,再好的设置也白搭。
-
从高模烘焙 (最佳方式):
- 这是行业标准做法,创建一个超高精度的“高模”(包含所有细节),再创建一个平滑的“低模”(作为最终渲染的模型)。
- 使用软件的烘焙功能(如 Blender 的
Bake、3ds Max的Render to Texture、Maya的Transfer Maps),将高模的顶点信息烘焙成法线贴图和高度贴图/位移贴图。 - 很多烘焙工具可以直接输出
.exr格式的位移图,它提供了比 8 位 JPG 更高的精度。
-
购买现成的资源:
- 像Textures.com, Quixel Megascans, TurboSquid 等网站提供了大量 PBR 材质包,这些材质包通常都包含了位移图,文件名通常是
displacement.exr或height.png。
- 像Textures.com, Quixel Megascans, TurboSquid 等网站提供了大量 PBR 材质包,这些材质包通常都包含了位移图,文件名通常是
-
使用程序化生成:
使用 Substance Designer 等程序化材质软件,可以生成各种独特的、无缝的位移贴图。
-
转换法线贴图 (效果有限):
- 在没有位移图的情况下,可以尝试用法线贴图来模拟,在 Blender 中,可以使用
Bump(凹凸) 节点连接法线贴图,但这只是视觉效果,不是真正的位移。
- 在没有位移图的情况下,可以尝试用法线贴图来模拟,在 Blender 中,可以使用
进阶技巧与常见问题
技巧 1:组合使用 在实际应用中,你常常会组合使用多种贴图:
- Albedo/Diffuse (颜色): 定义基础颜色。
- Roughness (粗糙度): 定义表面光滑程度。
- Metallic (金属度): 定义金属属性。
- Normal (法线): 提供日常的凹凸感,速度快。
- Displacement (位移): 在需要真实阴影和轮廓的关键区域提供真实深度。
技巧 2:利用混合遮罩 你可能不希望整个物体都产生位移,可以创建一张遮罩贴图,将位移效果混合到特定区域,一张只有砖块部分是白色、水泥部分是黑色的图,用它来控制位移,就只有砖块会凸起。
常见问题 1:效果很弱或没有
- 检查设置: 确认在渲染器中启用了位移功能。
- 检查强度:
Displacement Strength(位移强度) 或Scale(缩放) 值是否太小? - 检查高度/细分: 渲染器中的
Height(高度) 或Tessellation(细分) 值是否太低?模型没有足够的顶点来产生位移。 - 检查贴图: 确认贴图是灰度图,并且加载到了正确的
Displacement通道,而不是Bump或Diffuse通道。
常见问题 2:出现破面或黑斑
- 细分不足: 这是主要原因,模型本身的细分级别不够,或者渲染器设置的
Height太低,导致顶点在被拉伸时“断裂”。 - 解决方案: 增加细分,可以增加模型的
Subdivision Surface修改器层级,或者在渲染器中提高Max Tessellation/Extra Tessellation的值。
常见问题 3:渲染时间过长
- 位移是性能杀手,因为它极大地增加了多边形的数量。
- 解决方案:
- 合理使用: 只在相机近处或需要高细节的关键物体上使用位移。
- 优化设置: 找到
Height和Quality之间的最佳平衡点,不要无休止地增加细分。 - 使用置换: 在某些情况下,
Displace修改器(如 3ds Max 中)比渲染器自带的位移更高效。
位移图是一个强大但需要谨慎使用的工具,它通过真实地改变模型几何来创造出无与伦比的细节和真实感。
记住核心要点:
- 位移是“真”的,改变顶点位置。
- 白色向外推,黑色向内拉,灰色不动。
- 设置 = 贴图 + 强度 + 渲染器启用 + 足够的细分。
- 性能开销大,用在刀刃上。
多加练习,尝试在不同软件中设置,并观察渲染结果,你会很快掌握这个能极大提升你作品质量的利器。
