灯光探测器 (Light Probes)(仅限专业版)        

光照贴图让场景变得很真实,但是有一个缺点,即场景中的非静态物体渲染时不太真实,结果看起来与场景脱节。虽然无法实时计算移动物体的光照贴图,但使用灯光探测器 (light probes) 有可能获得类似效果。原理为在场景中的战略点对照明进行采样,这些点以探测器的位置表示。之后,任何位置的光照可通过插入最近探测器抽取的样本之间来大致估计。游戏期间插值过程非常快,有助于避免场景中移动物体与静态烘培物体之间的照明连续性断开。

添加灯光探测器 (Light probes)

灯光探测器组 (Light Probe Group) 组件(菜单:组件 (Component) -> 渲染 (Rendering) -> 灯光探测器组 (Light Probe Group))可添加到场景中的任一对象。该检视器可给该组添加新探测器。场景中的探测器显示为黄色球体,可用与游戏对象 (GameObject) 相同的方式放置。选定探测器还可通过常用键盘快捷键复制 (ctrl+d/cmd+d)。

选择灯光探测器 (Light Probe) 的位置

记得将探测器放在想要对灯光或黑暗抽样的位置。场景中的探测器须达到一定数量,以便适当执行空间细分。

最简单的定位方法是排成常规的三维网格样式。虽然设置简单高效,但很可能消耗大量内存(从采样点来看,每个灯光探测器基本上是一个球形的全景 HDR 图像)。值得注意的是,只有播放器、NPC 或其他动态物体真正移动到的区域才需要用到探测器。同时,由于照明条件插入到探测器之间的位置,在灯光变化不是太大的区域没必要使用过多的探测器。例如一大块均匀的阴影不需要太多探测器,远离反射物体的明亮区域也是如此。照明条件突然变化的地方一般需要有探测器,如阴影区域边缘或颜色不同的背景块。

有些情况下,游戏的基础设置可用来选择灯光探测器的位置。例如,赛车游戏一般会在赛道上使用路标,用于 AI 或其他用途。这些路标很可能是不错的探测器位置参考点,也可以直接从编辑器脚本中设置这些点。同样,导航网格一般定义玩家可以到达的区域,也可以利用这些来自动定义探测器位置。

在此,我们在游戏角色走过的表面烘培了灯光探测器,但只对光照变化比较有意思的地方进行捕捉:

二维平面

就像现在这样,灯光探测器系统无法烘培完整的平面探测器集。因此,即使所有角色只在平面上移动,至少仍需要在较高位置细心放置一些探测器,从而形成一定量,使插值正常进行。


好 (Good):原始探测器布置。角色可沿着坡道往上,到达盒子顶部,以便在上面更好地对照明采样。

好 (Good):假设角色只能在平面上移动。仍有几个探测器放得高一点,以便达到一定量,避免出现细长的插值空间。

差 (Bad):探测器放得太平,产生细长的插值空间,使插值结果不直观。

使用灯光探测器 (Light Probes)

为使网格接收探测器系统发出的照明,应启用网格渲染器 (Mesh Renderer) 中的使用灯光探测器 (Use Light Probes) 选项。

探测器插值要求空间中有一个点,表示接收灯光的网格位置。默认为网格限位框的正中位置,但可以通过将转换 (Transform) 拖到网格渲染器 (Mesh Renderer) 的定位替代 (Anchor Override) 属性中,替代该默认值(转换 (Transform) 的位置将用作插值点)。当对象包含两个单独的相邻网格时这比较有用;如果两个网格根据其限位框位置单独照明,那么照明会在两者相连的地方断开。可使用相同的转换 (Transform)(例如父对象或子对象)作为两个网格渲染器 (Mesh Renderer) 的插值点,防止出现这种情况。

当使用灯光探测器的对象在灯光探测器场景视图 (Light Probes Scene View) 模式中为活动的选定对象时,其插值探测器将在顶部渲染以供预览。插值探测器用于渲染对象,并通过 4 条蓝色细线(超过探测器的覆盖范围将显示 3 条)连接到被插入中间的探测器:

双重光照贴图 (Dual Lightmaps) 模式与单光照贴图 (Single Lightmaps) 模式

单光照贴图 (Single Lightmaps) 模式中所有静态灯光(包括设为“自动 (Auto)” 光照贴图模式的灯光)都被烘培到灯光探测器中。

在双重光照贴图 (Dual Lightmaps) 模式中,灯光探测器将以与“近端 (Near)” 光照贴图相同的配置保存光照,如天光的全局照明、自发光材质、区域灯光和“仅限烘培 (Baked Only)” 模式的灯光,但只有“自动 (Auto)” 模式灯光的间接照明。因此对象可用“自动 (Auto)” 模式的灯光实时照明,并利用实时阴影等动态元素,同时将接收添加到场景中的这些灯光的间接照明。

,