5个常见的光照贴图问题及其修复技巧


如果某些条件不满足,渐进式光照贴图器可能无法为场景生成光照。这些条件包括但不限于:
- 对象未被标记为GI Contributor
- 场景内没有烘烤好的光照
- 着色器问题
要修复这个问题,我建议尝试下方的修复方法。

按照以下步骤将您想要光照贴图的对象标记为 GI 贡献者 :
选择你的 GameObject。
导航到 Mesh Renderer 组件。
展开 照明 标题。
选中“ 贡献全局照明” 复选框。
这样做将启用下面的 接收全局照明 参数。它包含两个选项:
- 光照贴图:适用于静态光照贴图对象 - GameObject 将接收并将 GI 贡献给光照贴图。
- 光探测器:适用于不适合光照贴图的小道具和物体 - 游戏对象将从光探测器接收 GI,并将 GI 贡献给周围的光照贴图。
自定义着色器可能会造成GI烘焙运算失败。(如果引擎未能正确生成光照)你可以使用Unity编辑器的内置着色器来试着排除故障。它们有:
如果在切换到上面概述的着色器之一后 Unity 生成光照,则问题可能出在自定义着色器上。在这种情况下,请确保表面着色器包含 LIGHTMAP_ON 着色器关键字。
查看 Meta Pass 页面 以获取有关如何使用着色器进一步自定义 Baked GI 输出的详细信息。
其他潜在修复
如果上述步骤没有解决你的问题,可以尝试这些修复方法:
某些对象没有光或光照不正常可能代表着场景布置有问题,如果动态的物体无法从Light Probe(光照探针)上采集光线,就会出现这种情况。此外,场景内的光滑金属材质在附近没有Reflection Probe(反射探针)的情况下可能只会显示出黑色。

要修复这个问题,我建议尝试下方的修复方法。
动态对象(或从光照探针接收GI的GI贡献者)需要从光照探针上采集间接光照数据。如果不存在任何环境光探测器(即,场景中始终存在的光和反射探测器),则物体将回退到对 环境光探测器 (即,场景中始终存在的光和反射探测器)进行采样。
为了缓解这种情况,请在场景中设置 光探测器 网络,并在重要区域添加更多探测器。保证光照探针的数量足够覆盖所有需要光照的物体,然后重新生成光照来查看效果。


发光材质的渲染常出现两类问题:
- 材质本身不“发光”,后处理效果出现问题。
- 材质未参与GI的构成,对象或材质的设置有问题。
要纠正这两个问题,我推荐以下修复方法。

在非方向光模式下烘焙时,Unity编辑器不会用一张单独的纹理来保存方向数据。导致物体在烘焙后看起来非常扁平。
值得注意的是,低频法线贴图很难用方向性纹理来捕捉。在使用完全烘焙来的光照时,此类纹理会显得很扁平。

要修复这个问题,我建议尝试下方的修复方法。

混合光 提供实时镜面反射和法线响应。渐进式光照贴图器将间接照明烘焙到光照贴图中。这种组合可确保使用烘焙照明时获得最高质量的材质响应。


烘焙光照的一个固有局限在于不能让材质产生动态的镜面反射。光滑的材质在光照生成后不会保留表面上的高光。
要修复这个问题,我建议尝试下方的修复方法。

有关渐进式光照贴图 (Progressive Lightmapper) 故障排除的更多提示,请查看 论坛中的完整指南。如果您想讨论这篇文章或分享其他解决方案,请随时在那里或 这里与我联系。最后,请务必关注其他 Unity 开发人员发布的新技术博客,它们将成为正在进行的 “Tech from the Trenches”系列的一部分。
