拓冰建站拓冰建站
首页 / 资讯中心 / 正文

烘焙后城市场景满是黑斑?用6步检查 Lightmap UV 与光照接缝

城市场景完成光照烘焙后如果出现整面发黑、局部脏斑、模块接缝发亮先不要急着提高灯光强度。更常见的原因是 Lightmap UV 重叠、UV 岛间距不足、光照贴图分辨率与对象尺寸不匹配以及薄面、法线或模块边界存在问题。本文用一个最小场景演示排查顺序一栋主楼、一段道路、两块重复墙体和一个屋顶。它们从 AI 生成的白模模块开始经过材质、碰撞和细节补充后进入实时引擎并在光照烘焙阶段集中暴露问题。图注图片可以表达街区从白模到成品的制作方向但不能证明存在真实可编辑场景也不能证明 Lightmap UV、烘焙阴影或运行性能已经通过验收画面中的“Validate”不是测试结果。先分清两种 UV材质 UV 不等于 Lightmap UVUV 可以理解为把三维模型表面摊到二维平面上的坐标。材质 UV 决定砖墙、玻璃和道路纹理如何排列。为了复用纹理多个模型面可以共享或重叠同一片材质 UV。例如两块外观相同的墙体可以使用相同的砖墙区域。Lightmap UV 用于记录烘焙后的光照信息。由于不同模型面接收到的光照和阴影通常不同它们一般需要独立的 UV 空间不能随意重叠UV 岛之间还要保留足够间距防止烘焙、压缩或 Mip 采样时互相污染。可以把材质 UV 想成重复铺设的墙纸把 Lightmap UV 想成给每块墙单独拍摄的光影照片。墙纸可以复用光影却必须对应具体表面。关于无重叠 UV、岛间距、光照贴图分辨率和错误着色可以参考 Epic 官方的《理解虚幻引擎中的光照贴图》。不同引擎的界面和通道名称并不完全一致但排查逻辑相同烘焙数据必须拥有明确、稳定且可采样的二维空间。第一步固定烘焙基线记录第一次出错的位置同一个模型有时正常、有时发黑往往是测试条件发生了变化。如果引擎版本、光照模式、贴图压缩、静态标记或烘焙质量同时改变就很难判断黑斑来自模型还是设置。先记录这些信息引擎、渲染管线和构建版本烘焙器、光照模式与质量档位光照贴图分辨率、图集上限和压缩设置主楼、道路、墙体、屋顶是否参与烘焙主光方向、颜色、强度和环境光设置首次出现异常的对象名称、材质槽和世界坐标。不要只写“场景里有黑块”。例如可以记录为“主楼东侧墙面坐标约为120048烘焙后出现固定矩形黑斑。”描述越具体后续越容易复现。建立对照场景给场景临时换成中性灰材质固定一盏主光关闭会干扰判断的后处理。分别保留全景截图和局部截图至少覆盖主楼正面、道路与墙体交界、屋顶边缘以及两块重复墙体的连接处。第一步不负责修复只负责让问题能够在同一条件下重复出现。后续每次只修改一个变量并保留烘焙前后记录。第二步检查 Lightmap UV 重叠、镜像和越界某一块表面出现形状稳定的黑斑首先要检查 Lightmap UV 是否重叠。两个不同的模型面写入同一片光照贴图区域时烘焙器无法为它们保存独立的光影信息。三类高频问题镜像重叠左右墙面共用一组镜像 UV堆叠重叠复制墙体或模块时连同光照 UV 一起原样复制越界UV 岛超出有效的 0—1 空间或者在打包时被错误裁切。两块相同墙体可以共享材质纹理但用于烘焙的 UV 仍要有独立区域。不要把第一套材质 UV 直接复制成光照 UV 后就开始烘焙。检查方法在 DCC 或引擎的 UV 视图中只显示用于光照烘焙的 UV 通道。逐个检查主楼、道路、重复墙体和屋顶确认 UV 岛没有重叠、没有越界并且每个参与烘焙的面都能找到对应区域。自动生成 Lightmap UV 可以作为起点但不能代替验收。屋檐、门窗凹槽、栏杆和道路转角等复杂区域仍可能因为原始切缝不足而得到不理想的自动布局。模型经过复制、合并、重新三角化或重新导入后要再次检查不能只看源文件。第三步检查 UV 岛间距也就是 PaddingUV 没有重叠边缘仍然发黑或串色通常要继续检查岛间距。UV 岛是展开后的独立面片Padding 是岛与岛之间预留的空白。分辨率降低、生成 Mip 或执行纹理压缩后边缘像素可能向外扩散如果两个岛靠得太近一个面的暗部就可能污染另一个面。典型表现墙体外沿出现一圈脏色道路与建筑交界出现不自然暗线屋顶边缘与立面之间漏光或串色提高分辨率后问题减轻但仍会在远处或低画质下出现。做一组小范围对照关闭引擎自动生成使用模型现有的光照 UV开启自动生成以相同模型重新打包 UV只保留主楼和一段道路进行小范围烘焙在相同灯光、分辨率和压缩设置下比较边缘。如果重新打包后黑边明显减少原布局很可能存在间距不足或空间利用失衡。先修 UV 结构再决定是否提高分辨率。直接把整个城市的分辨率拉高只会增加烘焙时间、图集数量和显存占用。Padding 没有脱离分辨率的万能数值。应根据目标光照贴图尺寸、压缩方式和引擎规则计算并在目标画质下复测。第四步按对象尺寸和画面重要性分配分辨率小屋顶很清楚主楼却满是块状阴影通常说明光照像素分配失衡。主楼占据较大画面面积立面又包含窗框、阳台和凹槽。如果只获得很少的光照像素阴影就会被压缩成粗大的色块。相反远处很少被看到的小模块如果使用过高分辨率会浪费图集空间和显存。检查三个指标对象的世界尺寸对象在光照图集中的覆盖面积玩家常见视角下关键表面实际获得的像素密度。可以使用“每米获得多少光照像素”作为比较指标但最终仍要结合观察距离、屏幕占比和阴影复杂度判断。调整顺序优先保证主楼正面、道路交叉处和玩家经常接近的墙面。远景屋顶、背景墙体和不重要的背面可以降低密度。每次只调整一个对象或一组同类资产并记录光照贴图数量、烘焙时间、显存和运行帧时间。这样才能判断画质改善来自哪里也能避免用全局高分辨率掩盖局部错误。第五步修复薄面、法线和模块接缝单个模型正常拼成街区后接缝发亮问题通常出在模块边界。AI 生成或自动处理的场景模块可能包含零厚度平面、反向面、重叠面也可能在拼接后留下微小缝隙。相邻模块的顶点、法线或 Lightmap UV 边界不一致也会形成明显的亮暗断层。法线可以理解为表面的朝向数据。法线方向错误渲染器就可能按照错误方向计算受光零厚度或重叠表面则容易造成漏光、阴影冲突和闪烁。重点检查道路是否只是零厚度单面墙体是否存在反向面或错误法线屋顶与主楼之间是否存在重叠面两块墙体的连接处是否有细小缝隙相邻模块的边界顶点是否真正对齐平滑规则和顶点法线是否一致Lightmap UV 是否在接缝两侧采用了不合理的切分拼接后是否产生共面或近共面表面。用三组固定截图复查正视角检查接缝处是否出现稳定亮线或黑线斜视角检查缝隙、重叠面和法线突变低环境光或夜景放大观察漏光和烘焙阴影。必要时给道路和墙体补充合理厚度删除内部重叠面统一边界顶点与法线。重复墙体也要逐个检查不能假定同一网格的所有实例都具有相同的变换和烘焙条件。第六步导出回读并在目标设备复测资产从生成环境进入 DCC再进入 Unity、Unreal 或其他实时引擎时可能发生重新三角化、单位缩放、法线重算、材质槽合并或 UV 通道变化。源软件中正常不代表交付文件仍然正常。导出前固定这些内容最终三角化结果场景单位与对象缩放法线和硬边设置用于烘焙的独立 UV 通道对象名称、材质槽与模块层级。导出后把文件重新导入一个空场景。检查光照 UV 通道是否保留、材质槽和对象合并是否变化再使用与基线相同的设置做一次小范围烘焙。需要把资产从生成环境流转到 DCC 或引擎时可以通过 DCC 桥衔接后续工作流。但资产能够传递不等于 Lightmap UV、烘焙结果和目标设备性能已经通过验收。不要混用 Unity 与 Unreal 的通道名称Unity 的脚本 API 使用Mesh.uv2保存烘焙光照 UV界面和文档中也可能按从零开始的通道序号称其为 UV1。具体规则可参考 Unity 官方《生成光照贴图 UV》。Unreal Engine 则通过 Lightmap Coordinate Index 指定用于光照贴图的 UV 通道。不要只记“第二套 UV”这个口号应直接核对目标引擎实际使用的通道索引。无论采用哪一种命名验收重点不变光照 UV 是否独立、是否位于有效空间、是否无重叠以及岛间距能否满足目标分辨率和过滤方式。六步验收表步骤检查对象主要检查项需要记录通过标准1. 固定基线主楼、道路、墙体、屋顶引擎版本、光照模式、静态标记、异常坐标全景与局部截图测试条件固定异常可以重复出现2. 检查重叠所有参与烘焙的模型重叠、镜像、堆叠、越界对象名、通道、异常面UV 岛无意外重叠位于有效空间3. 检查间距主楼、道路和接缝模块Padding、Mip 与压缩污染分辨率、黑边位置、对照截图目标画质下边缘不串色4. 分配分辨率主楼正面、屋顶、道路世界尺寸、图集占比、像素密度图集数量、显存、烘焙时间重要区域清晰成本符合预算5. 修复接缝道路与墙体边界法线、厚度、重复面、顶点位置正视、斜视、夜景截图无明显漏光、亮缝、黑线和穿插6. 导出复测导出后的空场景UV 通道、三角化、单位、材质槽导入前后对照、目标设备数据回读一致目标设备复测通过只在编辑器中看到正确结果不能勾选“目标设备通过”只有静态图片而没有真实工程也应把运行项标为“待验证”。黑斑不是一个“把灯调亮”的问题城市场景烘焙出现黑斑时不要先把灯光强度和全局分辨率一起提高。这样可能暂时掩盖问题却会增加烘焙时间、图集数量、显存和运行成本。更可靠的顺序是固定基线检查 Lightmap UV 重叠和岛间距按对象尺寸分配分辨率再处理薄面、法线与模块接缝最后导出回读并在目标设备复测。AI 生成的街区和建筑模块可以作为制作起点但 UV 通道、烘焙边界、光照密度和运行成本仍需单独验收。“白模变成成品”只能说明视觉阶段发生了变化不能代替真实场景测试。你的场景更常出现整面发黑、模块接缝发亮还是提高分辨率后显存突然上涨
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门