2019年夏天,我接手了一个科幻机甲番剧的资产总监工作。客户拿着一个从某宝买来的高模,要求我们“三天内出全套低模,并且法线细节一根螺丝都不能丢”。当时团队里有个刚毕业的小伙子,自告奋勇用 Maya 的 Transfer Maps 直接烘,结果交片时导演差点把显示器砸了——模型表面全是黑一块白一块的接缝,硬边全变成了软塌塌的泥巴。那次事故之后,我逼着全组把法线烘焙的底层逻辑重新啃了一遍。今天我就把这段踩坑史拆开揉碎,告诉你 Maya 法线贴图烘焙到底该怎么玩。

一、需求分析:高模很爽,低模要命
先交代项目背景。客户给的高模是 ZBrush 雕刻的机甲胸甲,面数 3200 万,细节包括铆钉、散热槽、磨损划痕。我们要做的低模是游戏级资产,面数控制在 1.5 万三角面以内。法线贴图的作用,就是把高模的表面凹凸信息“投影”到低模上,让低模在光照下看起来像高模。
这里有个核心认知:法线贴图存储的是切线空间(Tangent Space)下的法线向量,而不是世界空间。 为什么?因为切线空间法线贴图可以跟随模型 UV 和切线变化,同一个贴图能复用到不同朝向的面上。但这也意味着,烘焙质量高度依赖 UV 布局和切线计算。
当时那个小伙子犯的第一个错误,就是直接拿高模和低模硬怼,没有做任何包裹器(Envelope)调整。Maya 默认的 Transfer Maps 用的是“最近距离”投射,高模的细节射线找不到低模对应的面,结果就是烘焙出一堆噪点。
二、技术选型:为什么我最终选了 Maya 的 Transfer Maps + 手动包裹器
市面上法线烘焙工具不少:Substance Painter、xNormal、Marmoset Toolbag,还有 Blender 的 Cycles 烘焙。我们团队当时也试了一圈。Substance Painter 的烘焙质量确实高,但它的强项是贴图绘制,对于纯几何烘焙,它的包裹器控制不如 Maya 直观。xNormal 快,但 UI 反人类,而且对 Maya 的切线空间支持偶有偏差。Marmoset 适合展示,批量生产时授权费吃不消。
Maya 的 Transfer Maps 虽然慢,但它的优势在于:你可以完全控制包裹器(Envelope)的形状和投射距离,并且能实时预览射线方向。 对于这种机械硬表面,我们需要精确控制每一条硬边的投射范围,Maya 的包裹器可以手动缩放和偏移,这是其他工具做不到的。
⚠️ 注意:Maya 2022 之后的版本,Transfer Maps 的“Bake using”选项里新增了“Ray cast”和“Rasterize”两种模式。机械硬表面一定要用 Ray cast,有机生物用 Rasterize 更快,但边缘容易糊。
三、踩坑实录:黑边、接缝、硬边丢失的根源
我们遇到的最大坑是黑边。低模的 UV 接缝处,烘焙出来的法线贴图有一条明显的黑线。原因是什么?因为低模在 UV 接缝处的顶点被拆开了,切线空间不一致。当高模的射线投射到低模时,接缝两侧的切线方向不同,导致法线向量在贴图上出现突变。
解决方案有三个,我选了最稳的:在低模上手动添加“支撑边”(Support Edge)。具体操作是在 UV 接缝附近,给低模加一圈很窄的面,让切线过渡更平滑。同时,在 Transfer Maps 里把“Search envelope”的“Max search distance”从默认的 0.1 调到 0.3,让射线有更长的搜索距离。
另一个坑是硬边丢失。机甲胸甲的边缘本来是锐利的,但烘焙后变成了圆角。这是因为低模的硬边在切线空间计算时,法线被平均了。解决办法是:在低模上把硬边分离成独立的 UV 壳(UV Shell),并且给这些边设置“Soften Edge”为 0。 在 Maya 里,你可以用“Mesh Display > Soften Edge”来调整,或者直接在 UV 编辑器里切开。

还有一个隐蔽的坑:法线贴图的绿通道(Y轴)方向。Maya 默认是 OpenGL 格式(绿通道朝上),而 Unreal Engine 默认也是 OpenGL,但 Unity 默认是 DirectX(绿通道朝下)。如果你烘完直接丢进 Unity,法线会反。所以我在项目里规定:所有法线贴图一律烘成 OpenGL,然后在引擎里翻转绿通道。 这样统一标准,避免混乱。
四、参数详解:Transfer Maps 里每个选项背后的数学
很多人用 Maya 烘焙就是无脑点“Bake”,结果出来一堆问题。我下面把关键参数拆开讲,你理解了原理,参数自然就会调了。
| 参数 | 作用 | 推荐值(机械硬表面) | 底层原理 |
|---|---|---|---|
| Search envelope | 控制包裹器大小 | 手动缩放至刚好包住高模 | 包裹器是一个隐式曲面,射线从低模顶点出发,沿法线方向投射,碰到包裹器就停止 |
| Max search distance | 射线最大搜索距离 | 0.2~0.5(根据模型尺度) | 距离太短会漏掉细节,太长会捕捉到背面几何 |
| Ray cast | 投射方式 | 机械硬表面必选 | 逐像素发射射线,精度高,但慢 |
| Rasterize | 投射方式 | 有机生物可选 | 将高模三角形光栅化到低模UV空间,快但边缘易糊 |
| Tangent space | 切线空间算法 | MikkTSpace | MikkTSpace 是行业标准,兼容 Unity/UE |
| Bake material | 烘焙材质 | Normal (Tangent Space) | 输出切线空间法线,RGB 对应 XYZ |
这里重点说MikkTSpace。它是由 Morten Mikkelsen 提出的一种切线空间计算方法,解决了不同软件之间切线不一致的问题。Maya 从 2018 版开始支持 MikkTSpace。如果你烘的法线贴图在引擎里出现奇怪的光照,先检查这里。
💡 技巧:在烘焙前,用“Display > Polygons > Custom Polygon Display”打开“Normals”和“Tangent”显示,检查低模的法线是否统一朝外,切线是否垂直于法线。如果切线乱飞,烘焙必出问题。
五、实战流程:从高模到引擎的完整管线
下面是我们团队最终定型的标准流程,你可以直接抄作业。
- 步骤1:高模准备。 确保高模没有非流形几何、没有反面、没有重叠面。用“Mesh > Cleanup”清理一遍。
- 步骤2:低模UV。 用“UV Editor”展开UV,确保没有重叠,UV壳之间留出至少 4 像素的间距。硬边处切开UV。
- 步骤3:包裹器调整。 选中低模,打开“Transfer Maps”,在“Envelope”里勾选“Show Envelope”,然后手动缩放包裹器,让它刚好包住高模。对于机械零件,可以单独给每个零件设置不同的包裹器。
- 步骤4:烘焙设置。 输出格式选 TGA 或 PNG,分辨率 2048×2048,抗锯齿选 4x。勾选“Bake using Ray cast”。
- 步骤5:后处理。 在 Photoshop 里用“高反差保留”叠加一层,增强细节。但注意不要过度,否则法线会失真。
- 步骤6:引擎验证。 导入引擎后,检查法线贴图的绿通道方向,必要时翻转。
这套流程我们跑了三个项目,法线烘焙的一次通过率从 40% 提升到了 90%。

六、成果与教训:那些年我们烧过的显卡
最终那个机甲番剧顺利交付,客户对细节非常满意。但代价是,我们烧了一块 RTX 2—因为烘焙时包裹器设置过大,射线反复投射,显卡温度直接飙到 95 度。所以我现在要求团队:烘焙前先保存文件,烘焙时关掉其他无关软件,并且用 GPU 烘焙时注意散热。
另外,我总结了一条铁律:法线贴图不是万能的,它只能模拟光照细节,不能替代几何体。 如果你的低模轮廓和高模差太多,法线贴图也救不了。所以低模的剪影(Silhouette)必须和高模基本一致。
最后,法线烘焙是一个需要耐心和原理支撑的活。如果你只是机械地记参数,遇到新模型就会翻车。只有理解了切线空间、射线投射、包裹器这些底层逻辑,你才能以不变应万变。
关于火星人教育
这篇文章的很多经验,其实都来自我在火星人教育带学员做项目时的积累。火星人教育创办24年来,一直专注数字艺术与 AIGC 实战职业技能培训。我们开设的课程覆盖了从内容创作到视觉落地的全链路,包括:AI 漫剧创作、AIGC 视觉设计、UE5 游戏特效、室内全屋定制、MAYA 三维动画、C4D 动态设计、工业设计、NUKE 影视后期、摄影摄像实训。如果你也想系统学习 MAYA 三维动画,或者想掌握法线烘焙这类硬核技术,我们在北京、深圳双校区开设线下面授班,面向美术生、在校大学生及意向转行的职场人群,以项目化实训教学,夯实专业技能,助力就业与职业提升。咨询电话:010-65918670。欢迎来试听,看看我们是怎么把项目实战拆成教学案例的。








评论(0)