Version: 6000.3
语言: 中文
光照贴图瑕疵故障排除
漏光故障排除

光照贴图质量问题排查

如果使用烘焙全局光照(GI),请解决烘焙光照质量问题,例如平面法线贴图、可见纹理坐标(UV)接缝、模糊光照贴图(lightmaps一种预渲染的纹理,包含光源对场景中静态对象的效果。光照贴图覆盖在场景几何体之上,以创建光照效果。更多信息
请参阅术语表
和别名。这些问题会使表面看起来平坦、破坏纹理连续性或导致阴影丢失细节。

平面法线贴图

如果将非定向光照贴图与烘焙光照一起使用,则会出现此问题。非定向光照贴图不会捕获入射光的方向性,这会影响表面细节的外观,当游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
有一个法线贴图(normal map一种凹凸贴图纹理,允许您向模型添加表面细节,例如凹凸、凹槽和划痕,这些细节可以捕捉光线,就好像它们由真实几何体表示一样。
请参阅术语表
.

有关定向光照贴图的更多信息,请参阅使用定向模式存储光源方向

注意:非定向光照贴图存储不同点的光强度,但不考虑光线的照射方向,这意味着它们不适用于法线贴图。因此,可能缺少有助于给人一种解脱错觉的细节。

症状

  • 对象会失去深度效果,如果禁用了“定向模式”,则烘焙后光照会显示为平坦。
  • 法线贴图无法清晰地表示浮雕。
带有烘焙光源的非定向光照贴图 - 左。具有烘焙光源的定向光照贴图 - 右。
带有烘焙光源的非定向光照贴图 - 左。具有烘焙光源的定向光照贴图 - 右。

原因

在非定向模式下烘焙时,Unity 不会生成辅助纹理来存储主光方向。

分辨率

要对平面法线贴图进行故障排除,请执行以下作。

  • 启用定向模式,以便 Unity 存储光线方向。
  • 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗口,将 Light Mode 设置为 Mixed,以便 Unity 烘焙间接漫反射光照。有关更多信息,请参阅光源模式(Light Modes) 定义光源使用的光源属性。可以设置为 实时(Realtime)、烘焙(Baked) 和 混合(Mixed)。更多信息
    请参阅术语表
    .

光照贴图UV接缝

在单独的UV岛之间混合颜色值时,由于GPU限制,可见接缝可能会出现在光照贴图中,尤其是在高过滤或低光照贴图分辨率下。对象之间的接缝在模块化网格中更为明显。

症状

  • 烘焙后光照贴图中可见的接缝。
  • 使用模块化网格时接缝更明显。
  • 如果使用高过滤或低光照贴图分辨率,则会提高接缝可见性。
左:烘焙后,光照贴图UV分割在模型手上可见。右:启用 缝合接缝(Stitch Seams) 并再次烘焙后,光照贴图UV分割不再可见。
左:烘焙后,光照贴图UV分割在模型手上可见。右:启用 缝合接缝(Stitch Seams) 并再次烘焙后,光照贴图UV分割不再可见。

原因

默认情况下,GPU不会在单独的UV岛之间混合颜色值,从而导致烘焙光照贴图中出现可见的接缝。过滤和低光照贴图分辨率可能会将纹素颜色值渗入相邻的UV岛,从而进一步加剧该问题。

分辨率

要对光照贴图UV接缝进行故障排除,请执行以下作。

启用缝合接缝(Enable Stitch Seams)

启用 缝合接缝(Stitch Seams) 可在共享可拼接公共边缘的UV岛之间混合颜色值。

注意:缝合接缝仅适用于单个游戏对象,不支持多个游戏对象。

在数字内容创建工具中组合网格

要连接重叠的顶点,请执行以下作:

  • 使用 3D 建模工具合并模块化网格。在导出之前连接重叠的顶点,以防止 Unity 中出现自动光照贴图展开问题。
  • 模型的导入设置中连接重叠的顶点。
使用模块化网格体组装的康奈尔盒子场景,光照贴图烘焙后有可见的接缝 - 左。在导出之前在数字内容创建(DCC)工具中组合网格体,不可见光照贴图接缝 - 右。
使用模块化网格体组装的康奈尔盒子场景,光照贴图烘焙后有可见的接缝 - 左。在导出之前在数字内容创建(DCC)工具中组合网格体,不可见光照贴图接缝 - 右。

其他可能的解决方案

  • 使用 Mesh.CombineMeshes 将多个网格合并为一个,从而获得与 DCC 工具类似的结果。

  • 使用 ProBuilderize 选项将网格体转换为 ProBuilder。使用“合并对象”选项来组合多个对象。

  • 禁用过滤和去噪。这可以防止模糊和膨胀问题,但可能需要增加样品数量才能获得更清晰的结果。

  • 调整光照贴图填充以增加UV图集之间的间距,从而减少纹素渗色。

  • 对于低端平台,请使用光照探针组一个组件,用于将光照探针添加到场景中的游戏对象。更多信息
    请参阅术语表
    .

  • 对于具有简化放置的每像素照明,请使用自适应探测体积 (APV)。

  • 如果可能,请使用修剪网格来隐藏对象之间的接缝。

模糊光照贴图

光照贴图分辨率低会导致纹素密度不足导致光照效果模糊。

症状

  • 阴影显得柔和或缺乏细节。
  • 光照贴图被拉伸或扭曲。
  • 光线通过几何体泄漏。

原因

光照贴图需要足够的分辨率才能准确捕获光照信息。每个单位的纹素太少可能会导致细节丢失,而不均匀的UV缩放可能会扭曲烘焙的光照输出。

分辨率

以每单位分辨率 8 纹素烘焙的康奈尔盒子场景 - 左。以每单位分辨率 32 纹素烘焙的相同场景 - 对。
以每单位分辨率 8 纹素烘焙的康奈尔盒子场景 - 左。以每单位分辨率 32 纹素烘焙的相同场景 - 对。

要对模糊光照贴图进行故障排除,请执行以下作:

  • 要全局调整光照贴图分辨率,请调整 光照贴图分辨率(Lightmap Resolution) 属性 光照照照。这会更改场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
    请参阅术语表
    .

  • 要调整每个对象的光照贴图分辨率,请修改网格体渲染器(Mesh Renderer一个网格体组件,用于从网格体过滤器中获取几何体,并将其渲染到对象的变换组件定义的位置。更多信息
    请参阅术语表
    元件。这充当 光照贴图分辨率(Lightmap Resolution) 设置的乘数。

注意:提高光照贴图分辨率会显著增加烘焙时间和内存使用量。

推荐的光照贴图分辨率设置:

  • 低分辨率用于:
    • 接受均匀或间接照明的表面。
    • 小物体。
    • 玩家不可见的表面。
  • 高分辨率用于:
    • 非常重要的领域。
    • 表面接收烘焙的直接光照和阴影。

调整 最大光照贴图大小(Max Lightmap Size) 属性

Max Lightmap Size 属性限制光照贴图的最终分辨率。如果出现以下情况,请增加此设置:

  • 对象超出光照贴图图集中的最大空间。
  • 即使您提高了光照贴图分辨率,Unity 也会生成大量低分辨率光照贴图。

保持均匀的光照贴图UV比例

要防止光照贴图拉伸或扭曲,请执行以下作:

  • 创建自定义光照贴图UV时,请在所有轴上均匀缩放UV岛。
  • 避免不成比例地缩放单个UV岛。
  • 在编辑器中缩放游戏对象时,请确保在所有轴上均匀缩放。
  • 使用烘焙光照贴图场景视图调试绘制模式检查光照贴图均匀性,并启用 显示光照贴图分辨率(Show Lightmap Resolution) 以可视化纹素分布。
光照贴图纹素水平拉伸导致输出失真 - 左。均匀缩放的光照贴图纹素 - 右。
光照贴图纹素水平拉伸导致输出失真 - 左。均匀缩放的光照贴图纹素 - 右。

光照贴图锯齿

边缘周围可能会出现阶梯效果,尤其是在具有烘焙直接照明的高对比度区域中。

要解决光照贴图锯齿问题,请执行以下作:

  • 光照贴图参数(Lightmap Parameters) 资产中,增加 抗锯齿采样(Anti-aliasing Samples) 。有关更多信息,请参阅光照贴图参数资产
  • 在光源的 Inspector 窗口中,调整 烘焙阴影角度(Baked Shadow Angle) 属性。有关更多信息,请参阅光源组件检查器窗口参考
  • 光照(Lighting) 窗口中,将 过滤(Filtering) 设置为 高级(Advanced),然后在 直接过滤器(Direct Filter) 下调整 半径(Radius)。

区域畸变

由于 UV 图表缩放不当,可能会出现不均匀的照明和伪影,从而导致某些区域的分辨率较低。

症状

  • 整个表面的照明不均匀。
  • 某些区域的光照贴图伪影模糊或像素化。
  • 尽管光照贴图设置足够,但某些区域的分辨率较低。

例:

在下图中,两个具有相同参数的聚光灯照亮了圆柱体的侧面。右侧的“区域误差”值较高,在网格Unity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
进口
生成光照贴图UVs(Generate Lightmap UVs) 设置,这会扭曲三角形并导致分辨率降低,从而在光源中产生瑕疵。

有变形的圆柱体。 有变形的圆柱体。

原因

当 UV 图表缩放不当时,就会发生区域失真,导致纹素分布不均匀。在以下情况下可能会发生这种情况:

  • 面积误差值过高,导致三角形大小变化。
  • UV 图表与对象的几何形状不成比例,导致区域拉伸或压缩。
  • 自动 UV 展开过程无法平衡纹素分布。

分辨率

要最大程度地减少区域失真,请执行以下作:

  • 减少UV设置中的 区域误差(Area Error) 值。
  • 检查 UV 布局以确保图表按比例缩放。
  • 如有必要,在 3D 建模应用程序中手动调整有问题的 UV 图表。
  • 测试不同的光照贴图分辨率,以实现纹素密度和内存使用之间的最佳平衡。
  • 重新烘焙光照贴图并检查分辨率一致性的改进。

角度畸变

由于UV图表形状不正确,可能会出现光照伪影,从而导致烘焙光照贴图中的纹理倾斜或拉伸。

症状

  • 烘焙光照贴图中扭曲或拉伸的光照瑕疵。
  • 同一网格体的不同区域的着色或照明不一致。
  • 布局中倾斜或扭曲的 UV 图表。

例:

第一张图像具有较高的角度误差,导致伪影。第二张图像具有默认的角度误差 (8%)。具有更多三角形的网格体可能会出现明显的角度失真。

高角度误差。 默认角度误差 (8%)。

原因

当自动 UV 展开过程无法保持三角形之间的正确角度时,就会发生角度失真。在以下情况下可能会发生这种情况:

  • 网格体导入(Mesh Import) 和 生成光照贴图UV(Generate Lightmap UVs) 设置中的 角度误差(Angle Error) 值过高,导致UV图表失真过大。
  • 光照贴图UV生成优先考虑最小化接缝,而不是保持准确的角度。
  • 网格具有复杂的几何形状,因此很难创建理想的 UV 布局。

分辨率

要减少角度失真,请执行以下作:

  • 降低UV设置中的 角度误差(Angle Error) 值。
  • 检查UV图表,确保它们准确表示网格几何体。
  • 如有必要,在 3D 建模工具中手动调整 UV 布局。
  • 重新烘焙光照贴图并检查光照精度的改进。

其他资源

光照贴图瑕疵故障排除
漏光故障排除