Version: 6000.3
语言: 中文
在运行时移动光照探针
对光照探针显示为未光照的对象进行故障排除

光探头故障排除

在某些情况下,光探针会表现出一种称为“振铃”的不良行为。当周围的光线存在显着差异时,通常会发生这种情况光源探针光源探针存储有关光线如何穿过场景中的空间的信息。在给定空间中排列的光源探针集合可以改善移动对象的光照和该空间内的静态LOD场景。更多信息
请参阅术语表
.例如,如果光照探针的一侧有强光,而另一侧没有光,则背面的光强度可能会“过冲”。这种过冲会导致背面出现光点。

光探针振铃的示例。点光源从一侧照亮球体,但球体的背面也显示为部分照明。
光探针振铃的示例。点光源从一侧照亮球体,但球体的背面也显示为部分照明。

有几种方法可以解决这个问题:

  • 在 光探针组(Light Probe Group) 组件中,启用 移除振铃(Remove Ringing)。Unity 会自动删除意外的光点。但是,这通常会降低光照探针的准确性,并降低光对比度,因此您必须检查视觉结果。
  • 以这样一种方式放置游戏中的障碍物,使玩家无法到达他们可以看到光点的位置。
  • 避免将直射光烘焙到光照探针中。直射光往往具有尖锐的不连续性(例如阴影边缘),这使得它不适合光照探针。要仅烘焙间接光,请使用混合光照

Light Probe放置故障排除

你选择的光照探针位置必须考虑到光照是在光照探针组之间插值的。如果您的光照探针不能充分覆盖整个光照的变化,则可能会出现问题场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.

下面的示例显示了一个夜间场景,两侧各有两盏明亮的路灯,中间有一个黑暗区域。如果光源探针仅放置在路灯附近,而没有放置在黑暗区域,则来自灯的光照会在移动物体上“渗出”穿过黑暗间隙。这是因为照明从一个亮点插值到另一个亮点,中间没有关于暗区的信息。

光探针放置不良的示例。街景的两端都有一盏路灯,每盏灯旁边有一组四个光探针。两盏灯之间的暗区没有光源探针,因此暗区不包括在插值中。
光探针放置不良的示例。街景的两端都有一盏路灯,每盏灯旁边有一组四个光探针。两盏灯之间的暗区没有光源探针,因此暗区不包括在插值中。

如果你使用的是实时光源或混合光源,这个问题可能不太明显,因为只有间接光源会渗透穿过间隙。如果您完全使用烘焙光源Mode 属性设置为 Baked 的光源组件。Unity 在运行时之前预先计算烘焙光源的光照,并且不会将它们包含在任何运行时光照计算中。更多信息
请参阅术语表
,因为在这种情况下,移动物体上的直射光也是从光源探针中插值的。在此示例场景中,两盏灯被烘焙,因此移动对象从光源探针获得直射光。在这里你可以看到结果。

在同一场景中,一辆行驶中的救护车在穿过黑暗区域时仍然明亮。黄色线框四面体显示插值发生在街道明亮的一端到另一端之间。
在同一场景中,一辆行驶中的救护车在穿过黑暗区域时仍然明亮。黄色线框四面体显示插值发生在街道明亮的一端到另一端之间。

这是一个不受欢迎的效果 - 救护车在通过黑暗区域时保持明亮的光线,因为在黑暗区域没有放置光探针。

要解决此问题,您应该在黑暗区域放置更多的光照探针,如下所示:

相同的场景,在两盏路灯之间添加了另一组光探针。
相同的场景,在两盏路灯之间添加了另一组光探针。

现在,场景在黑暗区域也有光源探针。因此,移动的救护车在从场景的一侧移动到另一侧时会呈现出较暗的光线。

同样的场景,现在是移动的救护车,它呈现出场景中心的较暗灯光。
同样的场景,现在是移动的救护车,它呈现出场景中心的较暗灯光。

Light Probe 噪声故障排除

在以下示例中,除了 光探针采样乘数(Light Probe Sample Multiplier) 值之外,两个图像都是使用相同照明设置照亮的场景。左侧的场景是将 光探针采样乘数(Light Probe Sample Multiplier) 设置为 1 时,这会导致光探针不均匀,并在场景中产生噪点。在右图中,您可以通过将 Sample Multiplier 设置为 32 来缓解该问题。

一个儿童卧室场景,整个场景中可以看到光探针网格作为球体。在左侧,探头是明亮的多色。在右侧,探头的颜色不那么鲜艳。
一个儿童卧室场景,整个场景中可见的光探针网格作为球体。在左侧,探头是明亮的多色。在右侧,探头的颜色不那么鲜艳。

原因

在具有大量间接噪声的场景中,探针照明的对象在穿过环境时可能会出现闪烁。原因是光探针使用的样本计数不足。因此,相邻的光照探针看起来具有不同的光照信息,而它们应该看起来是均匀的。

这也适用于光照探针组和自适应探针体积。

分辨率

你可以通过调整 光探针采样乘数(Light Probe Sample Multiplier) 值来缓解此问题。光探针采样乘数(Light Probe Sample Multiplier) 充当直接、间接和环境采样计数的常规乘数。乘数越高,光探针接收的样本就越多。这将提高它们的视觉质量,但会稍微减少烘烤时间。

如果 光照探针采样乘数(Light Probe Sample Multiplier) 属性在 光照(Lighting) 窗口中不可用,请导航到 项目设置(Project Settings) > 编辑器(Editor) > 图形(Graphics) 并禁用 使用旧版光探针采样计数(Use legacy Light Probe sample counts) 复选框。

对冗余光探针进行故障排除

在以下示例中,左图包含来自卸载场景的光探针,而右图显示了通过调用LightProbes.TetrahedralizeAsync加载新场景时。

注意LightProbes.TetrahedralizeAsync仅适用于使用光照探针组一个组件,用于将光照探针添加到场景中的游戏对象。更多信息
请参阅术语表
以放置光源探针,并且不适用于自适应探针体积

从上方看市场场景,整个场景中可见光探针网格为球体。左边有与场景不匹配的蓝光探头。在右边,蓝光探头不见了。
从上方看市场场景,整个场景中可见光探针网格为球体。左边有与场景不匹配的蓝光探头。在右边,蓝光探头不见了。

原因

Unity 使用四面体空间映射来确定使用哪些光探针来照亮动态游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
.加载和卸载包含光探针的场景时,重新计算四面体贴图非常重要。如果失败,将导致探针照亮对象的着色不正确。

分辨率

您可以调整场景的关卡设计或使用加法加载方法来避免冗余或重叠探针的问题,

以下示例来自 加法加载光照示例(Additive Loading Lighting Examples) 项目。此项目设置可确保在加载和卸载场景时实现无缝光照过渡。

从上方看三个相邻并排区域的场景。这些区域有红色、绿色和蓝色,每个区域都是一个包含几何形状的房间,以及一个代表光探针的球体网格。在左图中,红色区域仅包含光探针。在右图中,绿色区域仅包含光探针。
从上方看三个相邻并排区域的场景。这些区域有红色、绿色和蓝色,每个区域都是一个包含几何形状的房间,以及一个代表光探针的球体网格。在左图中,红色区域仅包含光探针。在右图中,绿色区域仅包含光探针。
  • 持久场景有蓝色房间和一些探针光照的对象。它没有光探针。此场景始终处于加载状态,并将充当过渡区域。
  • 场景 A 有一条绿色走廊,以及一些探针照亮的物体。它有一个光探组,用于包围场景 A 和持久场景。此场景按需加法加载。
  • 场景 B 有一条红色走廊,以及一些探针照亮的物体。它有一个光照探针组,用于包围场景 B 和持久场景。此场景按需加法加载。

要了解有关加法照明的更多信息,请参阅 Unity 中的 Additive Loading Lighting Examples 项目Asset StoreUnity 和社区成员创建的不断增长的免费和商业资产库。提供各种各样的资产,从纹理、模型和动画到整个项目示例、教程和编辑器扩展。更多信息
请参阅术语表
.

光探头泄漏

当来自明亮区域的探头影响黑暗区域中的物体时,就会发生光探头泄漏,反之亦然。当探头密度不足时,此问题在墙壁或其他遮挡几何体附近最为明显。

症状

与周围环境相比,由光探针照亮的物体显得太亮或太暗。此问题经常发生在封闭空间中,例如房间或阴凉区域,这些空间的光线预计会被阻挡,但实际上会泄漏。

康奈尔包厢场景放置在明亮的户外环境中。由于光探针组稀疏,探针点亮的雕像会在外面采样一个光探针,这使得它看起来很亮 - 左。增加光探针组的密度可以解决这个问题 - 对。
康奈尔包厢场景放置在明亮的户外环境中。由于光探针组稀疏,探针点亮的雕像会在外面采样一个光探针,这使得它看起来很亮 - 左。增加光探针组的密度可以解决这个问题 - 对。

原因

当光探头数据的插值由于探头密度低而错误地将照明从一个区域分配到另一个区域时,就会发生光探头泄漏。

此问题通常出现在光照探针组稀疏的场景中。例如,在明亮的室外环境中,阴影区域中的探针照明对象可能会错误地采样附近明亮探针的照明,使其显得不合适。

分辨率

要解决光探针组中的光探针泄漏问题,请执行以下作。

增加光探头密度

要增加光探头密度,请执行以下作:

  • 在受影响的对象周围添加更多光探针以提高精度。
  • 如果问题在墙壁附近很明显,请沿着它们放置密集的探头簇。
  • 为了帮助减少漏光,请在墙壁的每一侧放置一个由两个探头组成的缓冲区。

请参阅使用编辑器放置光源探针

调整 Anchor Override 属性

默认情况下,Unity 使用游戏对象边界框的中心确定要采样的光探针,这可能会导致稀疏探针网络中的光照不正确。

若要调整“锚点覆盖”属性,请执行以下作:

  1. 网格体渲染器(Mesh Renderer一个网格体组件,用于从网格体过滤器中获取几何体,并将其渲染到对象的变换组件定义的位置。更多信息
    请参阅术语表
    元件。
  2. 分配现有游戏对象或创建一个空游戏对象作为锚点。

使用光照探针代理体积(LPPV)

Light Probe Proxy Volume (LPPV) 组件在游戏对象的边界框中以自定义密度放置探针。

谨慎使用 LPPV,因为它们会增加运行时的计算负载。

在运行时移动光照探针
对光照探针显示为未光照的对象进行故障排除