在某些情况下,光照探针会出现一种被称为“振铃”的不良行为。这种情况通常在光照探针周围的光线存在明显差异时发生。例如,如果光照探针的一侧有明亮的光线,而另一侧没有光线,那么背面的光强就会出现“过冲”。这种过冲会在背面产生光斑。
有几种方法可以解决此问题:
选择光照探针的位置时,必须考虑到光照在光照探针组之间进行插值的情况。如果光照探针未能充分覆盖场景中光照的变化,就会出现问题。
以图示例显示了一个夜间场景,两侧有两个明亮街灯,中间有一个暗区。如果仅在街灯附近放置光照探针,而在暗区中不放置,则街灯的光照会跨越暗区“渗透”到移动对象上。这是因为光照会从一个亮点插值到另一亮点,而中间没有关于暗区的信息。
如果使用实时或混合光源,此问题可能不太明显,因为只有_间接_光才会跨越间隙导致光渗。使用完全烘焙光源时此问题会更明显,因为在这种情况下,移动物体上的直射光也是由光源探针那里插值而来的。示例场景中烘焙了两个街灯,因此移动对象会从光照探针那里获得直射光。结果如下图所示:移动对象(救护车)在穿过暗区时仍然获得了明亮的光照,而这不是我们想要的效果。黄色线框四面体表明,插值发生在街道明亮的一端和另一端之间。
这是我们不想要的效果:救护车在穿过暗区时仍然获得了明亮的光照,因为在暗区中没有放置光照探针。
要解决此问题,请在暗区中放置更多光照探针,如下所示:
现在场景的暗区中也有了光照探针。结果如图,行驶的救护车从场景的一侧移动到另一侧时,救护车上的光照变暗了。