LightProbeGroup添加“光照探针组”组件

LightProbeGroup添加“光照探针组”组件

使用脚本放置探针

放置光探头

要将光探针放置在场景中,您必须使用附加了 __Light Probe Group__ 组件的游戏对象。 可以从菜单“组件”>“渲染”>“光探针组”添加“光探针组”组件。

Light Probe Group 组件可以添加到场景中的任何对象,但最好将其添加到新的空游戏对象。

光照探针组 (Light Probe Group) 组件

光探针组组件

照明探针组有自己的__编辑模式,可以打开或关闭。 要添加、移动或删除光探针,必须按 Edit Light Probes__ 按钮以启用光探针组的编辑模式:

编辑光探针按钮

使用“编辑光探针”模式时,可以按照与游戏对象类似的方式操作单个光探针,但单个探针不是游戏对象,而是作为一组点存储在“光探针组”组件中。 中间。

当您开始编辑新的照明探针组时,您将从排列在立方体中的八个探针的默认排列开始,如下所示:

光照探针的默认排列。

光探头的默认排列。

现在可以使用“光探针组”检查器中的控件将新探针位置添加到“光探针组”。 探针在场景中显示为黄色球体,这些球体可以按照与游戏对象相同的方式定位。 您还可以使用常规的复制键盘快捷键 (ctrl+d/cmd+d) 来选择和复制单个探针或作为一组执行这些操作。

完成探针编辑后,__关闭__照明探针组编辑模式,否则无法移动或操作常规物体!

选择光探头位置

与光照贴图(通常在物体表面具有连续分辨率)不同,光探针信息的分辨率完全取决于探针放置的距离。

为了优化光探针存储的数据量以及游戏进行过程中完成的计算量,您通常应该尝试放置尽可能少的光探针。 然而,在可接受的范围内,建议放置足够的探头来记录从一个空间到另一个空间的光线变化。 这意味着光探头可以更密集地放置在具有复杂或高对比度光线的区域周围,而在光线变化不明显的区域中则可以不那么密集地放置。

在简单场景周围放置不同密度的光照探针

在简单场景周围放置不同密度的光探头

在上面的示例中,建筑物附近和建筑物之间的对比度和颜色变化较大,因此探头放置得更密集,而沿路的照明没有显着变化,因此放置的密度较小。

定位探针的最简单方法是将它们排列成规则的 3D 网格图案。 虽然这种设置简单有效,但它可能会消耗不必要的内存,并且可能有大量冗余探针。 例如,在上述场景中2d游戏素材,如果沿路放置大量探头,就会浪费资源。 沿道路长度照明不会发生太大变化,因此许多探头将大部分相同的照明数据存储到相邻探头中。 在这种情况下,通过在稀疏探针之间插入照明数据会更有效。

光探针本身并不存储大量信息。 从技术角度来看,每个探头都是来自采样点的球形全景 HDR 图像,使用存储为 27 个浮点值的球谐函数 L2 进行编码。 然而,在有数百个探针的大场景中,这些探针可能会累加起来,并且探针设置得太密集会导致游戏中大量内存浪费。

创建卷

即使游戏是在 2D 平面上(例如,在道路上行驶的汽车),光探针也必须形成 3D 体积。

这意味着探针组中应该至少有两个垂直“层”的点。

在下面的示例中,从左侧可以看到探头简单地布置在地面上。 由于光探头系统无法计算探头的表观四面体体积,因此这种布置__不会产生良好的照明__。

右侧,探针分为两层,一些低于地面,另一些高于地面,这样它们一起形成了一个由大量单独的四面体组成的 3D 体积。 这是一个__good__布局。

左图显示了光照探针位置的选择不当,因为探针定义的体积没有高度。右图显示了光照探针位置的选择较恰当。

左图显示了照明探针位置的错误选择,因为探针定义的体积没有高度。 右图显示了更合适的光探头位置选择。 放置动态 GI 的光探针

Unity 的实时 GI 允许移动光源向 __static__ 场景投射动态反射光。 然而,当使用光探针时,您还可以接收来自__移动游戏对象__上的移动灯的动态反射光。

因此,光探针执行两个非常相似但不同的功能:它们存储静态烘焙光,并在运行时表示影响移动物体上的照明的动态实时全局照明(GI 或反射光)的样本点。

因此,如果您使用动态移动光源并希望在移动游戏对象上获得实时反射光,这可能会影响您放置光探针的位置以及它们的分组密度。

在这种情况下需要考虑的重要一点是unity 光照探头,对于在大面积上相对恒定的静态光源,只需要放置几个探头,因为照明在大面积上不会变化。 但是3D场景,如果您计划在该区域使用移动光源,并且希望移动物体接收反射光,则需要在该区域构建更密集的光探头网络,以获得足够高的精度来匹配范围以及光源的范围。 风格。

您需要放置探头的密度取决于光源的大小和范围、光源移动的速度以及您希望接收反射光的移动物体的大小。

光探针放置问题

光探针位置的选择必须考虑到光照将在探针组之间进行插值。 如果探头不能充分适应场景中照明的变化,就会出现问题。

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

此图像显示了不佳的光照探针放置。两个街灯之间的暗区内没有探针,因此暗区根本不会包含在插值中。

此图显示照明探​​针放置不当。 两个路灯之间的暗区没有探针,因此暗区根本不包含在插值中。

如果您使用实时或混合光源,这个问题可能不太明显,因为只有间接光会穿透间隙。 如果您使用完全烘焙的光,这个问题会更加明显,因为移动物体上的直接光也是从光探头插值的。 在此示例场景中,烘焙了两个路灯,以便移动物体从光探头获得直接光线。 在下图中您可以看到结果:移动的物体(救护车)在经过黑暗区域时仍然明亮,这不是所需的效果。 黄色线框四面体显示插值发生在街道明亮的一端与另一端之间。

unity 光照探头_光照探头的英文是什么_光照探头的英文

这是一种不良效果:救护车在经过黑暗区域时仍然会发出明亮的光,因为黑暗区域中没有放置光探头。

为了解决这个问题,应在暗区放置更多的探头,如下所示:

光照探头的英文_光照探头的英文是什么_unity 光照探头

现在场景的黑暗区域也有探测器。 因此,当移动的救护车从场景的一侧移动到另一侧时unity 光照探头,其上的照明会变暗。

光照探头的英文_光照探头的英文是什么_unity 光照探头

现在,当救护车位于场景中心时,其灯光会根据需要变暗。

光探头:技术信息

使用脚本放置探针

文章来源:https://docs.unity.cn/cn/2018.2/Manual/class-LightProbeGroup.html