法线贴图是什么?为什么是次世代游戏的核心技术
在3D游戏和实时渲染领域,法线贴图(Normal Map)是实现"用低面数模型呈现高面数细节"的关键技术。它的原理是将高精度模型(可能包含数百万个面)的表面法线方向信息编码成一张RGB纹理,然后贴到只有几千个面的低模上。渲染引擎在计算光照时,会读取这张贴图中的法线信息,模拟出高模的表面凹凸感、划痕、铆钉等细节,而实际运算量只相当于渲染低模。
Blender 作为一款全功能的DCC软件,提供了从高模雕刻到低模烘焙的完整管线。本教程将带你走通从高多边形模型到Game-Ready低模的完整烘焙流程,包括UV展开、高低模匹配、笼子(Cage)设置以及常见问题的排查与修复。掌握这套流程,你就能将任意高精细节"压缩"到低模上,在游戏中呈现出电影级的画面质感。
准备工作:高模与低模的创建规范
高模(High Poly)的创建要求
高模是法线贴图的信息来源,它可以是 ZBrush 雕刻后的数百万面模型,也可以是Blender中使用Multires修改器或多级细分(Subdivision Surface)后的模型。高模的质量直接决定法线贴图的效果,以下是关键要求:高模的表面法线方向必须正确——在烘焙前建议选中所有面,按Shift+N重新计算外侧法线(Recalculate Outside)。如果高模存在反向法线,烘焙出的法线贴图会出现奇怪的暗斑或偏色。
注意:高模不需要UV。只有低模需要UV,因为法线贴图是贴在低模上的。但如果你使用了UDIM或多纹理烘焙,需要提前规划好UV布局。
低模(Low Poly)的UV规范
低模是真正在游戏中运行的模型,它的面数通常在几百到几千个三角面之间。烘焙前,必须为低模做好UV展开。进入Edit Mode,按U选择Smart UV Project或手动Mark Seam后Unwrap。UV展开的核心原则是:UV岛尽可能少,接缝隐藏在模型不显眼的位置(如角色腋下、装备内侧),UV空间利用率尽量高(减少浪费的空白区域)。
在UV Editor中,你可以通过Pack Islands(打包UV岛)功能自动优化UV布局,确保所有UV岛之间的间距一致(建议至少保留2-4像素的间隙以避免烘焙时的边缘溢出)。对于对称模型,可以将UV完全重叠以节省纹理空间。
高低模匹配与烘焙设置
使用Shrinkwrap修改器辅助对齐
在Blender中打开一个新场景,导入你的高模和低模。确保两个模型在世界坐标中的位置重叠(位置归零)。在实际项目中,高模和低模可能在位置上有微小偏移(尤其是从ZBrush导入时),此时可以为低模添加一个Shrinkwrap修改器,将目标设为高模,让低模的顶点贴合到高模表面。这可以解决因拓扑差异较大导致的烘焙孔洞问题。
一个实用的小技巧:在添加Shrinkwrap修改器后,将修改器应用于低模(Apply),然后再做一次微小的光滑(Shade Smooth + 边缘折痕修复),确保低模表面平整。之后删除这部分用的高模副本,只保留原始高模做烘焙源。
设置烘焙参数与Cage
选中低模,在Shader Editor中创建一个新的Image Texture节点,新建一个图像(建议尺寸2048x2048或4096x4096,颜色设为中性法线蓝#8080FF)。选中低模并在Render Properties中切换到Cycles渲染器,在Bake设置面板中选择类型为Normal,坐标系选Tangent Space(切线空间),勾选"Selected to Active"。
Cage(笼子)参数是解决烘焙问题的核心:Cage Extrusion值决定了Blender从低模表面向外延展多少距离来采样高模的信息。对于常见的硬表面模型,设为0.05-0.1;对于角色模型,设为0.1-0.2。如果太低,部分区域会烤不到;太高则会让低模另一侧的信息渗透进来。你可以通过Max Ray Distance设置最大采样距离,进一步限制采样的范围,防止远处的干扰信息被捕捉到。
烘焙后的检查与修复
检查法线贴图质量
烘焙完成后,在UV Editor中打开生成的法线贴图。一张正确的切线空间法线贴图应该以蓝紫色为主调(RGB≈128,128,255),凸起部位呈现暖色(偏黄绿),凹陷部位呈现冷色(偏蓝紫)。如果发现大面积的纯色异常(纯红、纯黑、纯白),说明烘焙过程中出现了严重错误,需要检查高模是否被正确选中、Cage值是否合理。
在3D视口中,创建一个小球体(材质设为法线贴图预览材质:Image Texture连接Normal Map节点再到Principled BSDF),将法线贴图贴上去,旋转视角观察光照下的表面细节是否自然。如果出现接缝处的硬边,说明UV接缝处的法线方向不一致,需要在UV Editor中展开接缝处的像素并进行手动修复。
常见问题及其解决方案
接缝发亮(Seam Artifacts):在UV展开时,确保接缝两侧各有至少2-4像素的"稀释区域"。烘焙前在工具属性中勾选Extend Margin并将值设为4-8像素,可以让接缝处的法线信息向外扩散,消除硬边感。出现黑色斑点:通常是Cage值过小或高模与低模局部距离过大。增加Cage Extrusion值或为低模添加Shrinkwrap修改器解决。颜色偏紫红:检查是否误设了Object Space坐标系。游戏引擎要求Tangent Space法线贴图,Object Space适用于特定场景但无法用于通用游戏管线。
使用Bake工具中的Selected to Active功能时,确保在场景中先选中低模(激活状态,即高亮显示),再按住Shift选中高模。如果选反了(先选高模再选低模),烘焙结果会是错误的。这是一项极易忽略但影响巨大的操作细节。
烘焙后的导出与引擎导入
烘焙完成并检查无误后,将法线贴图导出为PNG或TGA格式(不压缩,16位色深以保留更多细节)。在Unity中导入时,将Texture Type设为Normal Map并勾选Create from Grayscale。在Unreal Engine中,确保压缩设置设为TC Normalmap。为了达到最佳效果,建议在引擎场景中放置主光源和辅助光进行实地预览,手动微调法线贴图的强度(有些引擎允许设置强度乘数,如0.5-2.0之间)。掌握了这套高低模匹配与法线贴图烘焙流程,你的3D资产将真正具备次世代的视觉竞争力。
