点击我试试哦~
// PIPELINE ARCHIVE MATRIX
加入 QQ 交流群
630874442

UE材质宝典-法线篇:DX与GL

法线贴图凹凸反转、光照明暗错乱,是虚幻引擎资产协作中最常见的基础性材质问题。该问题100%源于 DirectX 与 OpenGL 两套法线坐标系的标准差异。UE4/UE5 原生采用 DirectX 法线规范,而 Blender、Maya、Unity、Substance Painter 默认输出 OpenGL 法线规范。两套格式仅绿色通道(Y轴方向)相反,只需翻转绿色通道即可互相转换。
OpenGL(GL)格式法线贴图导入UE引擎后,受光计算方向与引擎原生的DirectX(DX)法线标准完全相反,最终直接导致模型凹凸纹理视觉倒置,出现凹陷变凸起、凸起变凹陷的异常效果。

一、核心前置认知:法线贴图的两种空间

游戏引擎中常用的法线贴图分为两种,二者适配规则完全不同,这是新手最易混淆的知识点:
1. 切线空间法线(Tangent Space):最常用,随模型UV变化,存在DX/GL格式差异,本文讲解的核心对象;
2. 世界空间法线(World Space):记录绝对世界朝向,不受UV坐标系影响,DX/GL差异,无需翻转通道。
所有法线凹凸反转bug,均只出现在切线空间法线贴图中,本质是两套图形API对纹理V轴(竖直Y轴)正负方向定义不同。行业通用结论:DXGL法线的唯一区别就是绿色通道反向,红、蓝通道数据完全通用。
DX与GL法线贴图的核心差异仅体现在绿色通道,红蓝通道数据完全一致。基于这一特性,法线贴图的蓝色通道可闲置不用,行业中也常利用该通道的空余空间收纳其他贴图辅助信息,提升贴图资源利用率。

二、DX与GL法线核心差异

DirectX 与 OpenGL 法线没有优劣之分,只是图形API的底层坐标系设计差异。UE 基于 Direct3D 架构,原生适配 DX(Y-) 标准;主流建模烘焙软件基于 OpenGL 架构,默认输出 GL(Y+) 标准。

2.1 全方位对比表

对比维度 DirectX (DX) 法线 OpenGL (GL) 法线
坐标轴规则 Y轴向下为正(Y-),左手坐标系 Y轴向上为正(Y+),右手坐标系
绿色通道含义 暗部=表面向上凸起,亮部=表面向下凹陷 亮部=表面向上凸起,暗部=表面向下凹陷
原生适配软件/引擎 UE4/UE5、3ds Max、CryEngine、Direct3D Blender、Maya、Unity、Substance Painter默认、WebGL、Godot
UE适配要求 原生兼容,无需任何修改 必须翻转绿色通道才可正常渲染
错误渲染表现 无异常,光照、凹凸完全正常 凹凸反转、凹陷变凸起、光照方向错乱
2.2 肉眼鉴别法线格式
无需导入引擎测试,可通过贴图固有结构快速判别DX/GL法线格式。判断核心:找到贴图中本应凸起的结构(铆钉、砖边、褶皱、浮雕等),单独观察绿色通道的亮暗分布位置,即可零误差区分格式。
核心判定规则
1. OpenGL(Y+):真实凸起结构的上边缘偏绿、偏亮,下边缘偏暗、偏紫。光影匹配自然光从上往下照射的逻辑,肉眼直接观察贴图,立体效果符合正常直觉。
2. DirectX(Y-):真实凸起结构的下边缘偏绿、偏亮,上边缘偏暗、偏紫。光影倒置,模拟光线从底部向上照射的效果,肉眼直观观感会把凸起看成凹陷。
观察凸起(Bump)的绿色受光面位置. 来源:Fourth Woods Blog
本质原理:两种格式无光影优劣,仅为Y轴法线朝向定义相反,导致绿色通道亮区分布上下颠倒,这也是法线凹凸反转问题的唯一成因。

三、UE引擎法线适配完整实操方案

在UE中适配两种法线格式,分为资产静态设置材质动态转换两种方案,搭配标准化纹理参数,彻底规避法线异常与精度丢失问题。

3.1 纹理导入静态设置

直接修改贴图资产属性,一次性生效、零性能损耗,是项目标准化唯一推荐方案。UE 具备智能识别机制,引擎会自动匹配法线纹理参数,但Flip Green Channel 仍需手动配置
操作步骤
1. 双击法线贴图打开资产详情面板;
2. 展开【Texture – 高级设置】;
3. 精准配置:GL法线勾选 Flip Green Channel,DX法线取消勾选;
4. 保存设置,重启材质预览即可生效。
黄金规则:所有外部烘焙的默认GL法线,导入UE必开绿色通道翻转。

3.2 材质节点动态转换

针对无法修改贴图源文件的第三方资源、临时材质,可通过材质节点实时转换格式,核心逻辑为绿色通道取反(1-G),保留R、B通道原始数据。
标准节点链路: 法线贴图 → ComponentMask(单独提取R/G/B通道) → G通道接入 OneMinus 节点 → MakeFloat3 重组 R、反向G、B 通道 → 接入材质 Normal 输入端。
新版本则直接使用Make Vector3节点(如图)
注意事项:该方案会产生微量GPU开销,仅用于临时调试,禁止用于正式项目批量资源。

3.3 法线贴图标准化参数

格式适配完成后,必须严格遵循以下参数,否则会出现法线模糊、斑驳、精度丢失、光照失效等问题:
  • 压缩格式:固定选择 BC5(Normalmap),专为法线向量数据优化,保留高精度通道信息,杜绝压缩失真;
  • 纹理组:设置为场景法线贴图( WorldNormalMap),适配引擎全局光照、实时光照计算逻辑;
  • 关闭SRGB:法线贴图为数学数据贴图,非色彩贴图,必须禁用SRGB颜色校正,避免数据偏移;
  • Mipmap:场景法线开启,特写高精资产可关闭,保留细节精度。

四、主流设计软件跨平台标准化工作流

90%的法线问题源于软件输出格式不统一,提前在制作端预处理,可实现零差错导入UE,从根源规避返工。

4.1 Substance Painter 适配

SP 新版默认输出 OpenGL 法线格式,适配UE有两种标准化方式:
1. 项目级设置:新建项目时,在项目配置中将 Normal Map Format 改为 DirectX;
2. 导出级设置:导出资产时选用官方「UE4/UE5」专用预设,直接输出DX标准法线,无需引擎二次修改。

4.2 Blender 适配

Blender 所有烘焙法线默认 GL(Y+) 格式,无例外。常规工作流:烘焙完成后,贴图导入UE强制勾选翻转绿色通道;高阶工作流:直接在Blender烘焙面板中将法线空间切换为DirectX,原生适配UE。

4.3 Photoshop 手动快速转换

针对零散旧贴图、无工程源文件的资源,可一键转换:打开贴图 → 通道面板选中绿色通道 → Ctrl+I 反相 → 保存PNG无损格式,即可完成GL转DX适配。

4.4 Unity 资产迁移适配

Unity URP/HDRP 管线默认 OpenGL 法线标准,与UE不互通。Unity迁移UE的法线贴图,必须统一翻转绿色通道,同时核对纹理压缩与SRGB设置,避免光照异常。

五、高频故障排查与精准修复(后面内容涉及优化,后面会单独出文章进行讲解)

法线贴图异常症状高度统一,可根据表现快速定位根源,精准解决问题。

5.1 凹凸完全反转

症状:模型划痕、砖缝、凹陷纹理全部凸起,整体质感怪异,光照明暗完全颠倒;
根源:GL格式法线未翻转,与UE的DX标准冲突;
修复:开启贴图Flip Green Channel,同时检查模型UV是否存在翻转、重叠、拉伸问题,排除二次异常。

5.2 法线无效果、表面平面化

三大成因:1. 压缩格式错误(误用BC1/BC3,未用BC5)导致精度丢失;
2. 贴图误连BaseColor颜色通道,未接入Normal法线通道;
3. 材质法线强度参数归零。
修复方案:重置为标准法线参数、修正材质节点连接、恢复默认法线强度。

5.3 混合法线光照错乱

根源:项目内DX、GL法线格式混用,多法线叠加时数据冲突;
修复:统一所有法线为DX格式,使用UE自带 NormalBlend 节点混合,禁止直接通道相加。

六、项目高阶规范与性能最佳实践

6.1 项目强制统一规范

正式项目必须强制执行:所有切线空间法线贴图统一为DirectX格式,杜绝两种格式混用。从建模、烘焙、导出、导入全流程标准化,从根源杜绝团队协作bug。

6.2 性能优化准则

  • 优先软件端预处理格式,杜绝材质内动态翻转通道,减少GPU实时计算开销;
  • 常规场景资产法线分辨率统一2K,近距离特写资产最高4K,杜绝无效8K贴图占用显存;
  • 大型开放世界场景,启用虚拟纹理流式加载,适配高精度法线资源。

6.3 批量资源规整技巧

针对老旧项目海量遗留贴图,可使用UE批量编辑资产功能,统一勾选/取消绿色通道翻转,批量重置压缩格式与纹理组,快速规范全项目资源,提升迭代效率。

七、结尾

DX与GL法线的适配问题,是UE材质制作最基础、最高频的底层知识点。其核心本质并非复杂材质算法,仅是Y轴坐标系的单向反转,唯一变量为法线绿色通道。
本文目录

    发表评论

    滚动至顶部

    赞助支持

    如果本站的内容对您有所帮助,欢迎赞助支持我们的独立开发与创作。

    微信收款码 微信支付
    支付宝收款码 支付宝
    Enlarged Matrix