理解PBR与法线贴图
基于物理的渲染(PBR)已成为游戏、VFX和建筑可视化中创建逼真材质的行业标准。法线贴图是PBR工作流程的关键组成部分,与其他纹理贴图协同工作,在不增加几何体的情况下创建令人信服的表面细节。
PBR纹理集
完整的PBR材质通常包括:
核心贴图
- 反照率/基础颜色 - 纯表面颜色,不含光照信息
- 法线贴图 - 表面细节和方向性
- 粗糙度 - 表面微观变化
- 金属度 - 表面是金属还是电介质
- 环境光遮蔽(AO) - 缝隙中的柔和阴影
法线贴图的作用
法线贴图通过影响光线与表面的交互方式来添加几何细节。它们与粗糙度贴图协同工作——具有统一粗糙度的详细法线贴图与具有变化粗糙度的平滑法线贴图会产生不同的结果。
创建一致的纹理集
从高度图或照片生成纹理时,在所有贴图之间保持一致性:
从高度图
使用相同的源高度图生成所有衍生贴图,以确保它们完美对齐:
- 法线贴图(表面角度数据)
- 置换贴图(实际几何变形)
- AO贴图(凹陷处变暗)
- 粗糙度贴图(边缘变化)
从照片
光度立体法(4向照片)可以生成:
- 高质量法线贴图
- 从阴影分析得出的AO近似值
- 从镜面反射变化得出的粗糙度提示
引擎集成最佳实践
Unity设置
- 导入设置:将纹理类型设置为"Normal Map"
- 格式:BC5压缩以获得最佳质量
- Mipmap生成:启用以实现适当的LOD行为
- sRGB:禁用(法线贴图是线性数据)
Unreal Engine设置
- 压缩:TC_Normalmap预设
- sRGB:自动禁用
- 翻转绿色通道:可能需要,取决于来源
- LOD组:与其他材质纹理共享
常见问题和解决方案
接缝可见性
问题:平铺法线贴图时出现可见接缝
解决方案:
- 确保高度图在生成前无缝平铺
- 使用偏移控件在3D预览中验证平铺
- 检查所有PBR贴图以相同频率平铺
强度不匹配
问题:法线贴图看起来太强或太弱
解决方案:
- 在生成期间调整强度,而不是在引擎中
- 将法线强度与粗糙度值匹配
- 参考真实世界材质以获得适当的细节级别
工作流程优化技巧
1. 统一命名
使用清晰的命名约定:
material_name_albedo.png
material_name_normal.png
material_name_roughness.png
material_name_metallic.png
material_name_ao.png2. 分辨率指南
在所有贴图上匹配纹理分辨率:
- 1K (1024):移动端、背景物体
- 2K (2048):标准道具、环境
- 4K (4096):主角资产、近景视图
3. 早期测试
在过程早期导入并在目标引擎中测试材质。不同引擎之间的光照行为有所不同,在一个引擎中看起来正确的可能需要在另一个引擎中调整。
性能考虑
与额外几何体相比,法线贴图的运行时性能影响最小。然而:
- 压缩很重要:使用适合引擎的压缩(PC用BC5/DXT5,移动端用ASTC)
- 正确的Mipmap:减少带宽并改善远距离视觉质量
- 不要过度细节:极其精细的细节会在mipmap处理时丢失
一次生成所有贴图
现代法线贴图生成器可以从单一源创建多个PBR贴图,这确保了:
- 贴图之间完美对齐
- 一致的纹素密度
- 匹配的细节级别
- 同步的平铺行为
结论
当将法线贴图深思熟虑地集成到完整的PBR工作流程中时,它们最为有效。通过在所有纹理贴图之间保持一致性、使用适当的引擎设置和早期测试,您可以创建在所有光照条件和观看距离下看起来逼真的材质。
