一句话定义:法线贴图(Normal Map)是一张记录“表面朝哪儿”的图片;渲染时用它替代模型原始的法线方向参与光照计算,让平整的表面看起来有凹凸细节。
原理:给每个像素换一个“朝向”
法线是垂直于表面的方向向量。光打到物体上有多亮、高光落在哪儿,基本由“表面朝向”和“光源方向”的夹角决定。既然光照只认这个夹角,就可以简化处理:不改模型,只把每个像素的法线换成另一个方向,光照自然就会算出凹凸的明暗。
RGB 三个通道就用来存这个方向向量的三个分量(具体编码约定各家工具略有差异,以官方文档为准)。典型的一张法线贴图看上去是淡紫蓝色,因为大部分像素的朝向都“基本朝外”,只有细节处才偏一点。
打个比方:舞台上的平面布景,靠灯光打出褶皱的明暗,正面看挺像那么回事;可你走到侧面,发现它就是块板。化妆也类似:高光和阴影画出鼻梁,脸本身没变。
关键:只改光照,不改几何
这条决定了法线贴图的全部长处和短处:
- 轮廓剪影不变。凸起不会真的凸出边界,逆光或侧视时,边缘还是原模型那条平滑的线。
- 近看还是平的。没有真实的遮挡和视差,凑近或大角度看会露出破绽。
- 不投影、不碰撞。阴影和物理交互由几何决定,法线贴图一概不参与。
和相邻概念的区别
| 概念 | 改什么 | 剪影会变吗 |
|---|---|---|
| 凹凸贴图 Bump Map | 单通道灰度表示高度差,间接推出法线 | 不变 |
| 法线贴图 Normal Map | 直接给出每个像素的法线方向 | 不变 |
| 置换贴图 Displacement Map | 真的移动顶点(通常配合网格细分) | 会变 |
| 直接加面数建模 | 几何本身 | 会变 |
可以这么理解:凹凸贴图是“由高度猜方向”,法线贴图是“直接写方向”,置换贴图是“真的动手改形状”。
对你的意义
做 3D、游戏、实时渲染和生成式资产的人,法线贴图是性价比很高的一环:把高面数模型的细节压缩进一张图,运行时几乎不增加几何开销。常说的“烘焙”,就是把高模的细节烤进低模的法线贴图里。现在用 AI 生成纹理或资产,也常要单独产出一张法线贴图,判断质量的关键是它跟几何对不对得上。接缝、UV 方向、镜像翻转,错一处光照就反了。
对普通人,它是个很好的思维样本:看起来立体和真的立体是两件事。把昂贵的维度(几何)换成便宜的维度(一张图加一次光照计算),这是工程里反复出现的省力办法。
