组件属性功能EditLightProbes启用编辑探针

组件属性功能EditLightProbes启用编辑探针

使用脚本放置光探针

光探针组

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

Light Probe Group 组件可以添加到场景中的任何游戏对象。 但是,最好创建一个新的空游戏对象(菜单:__GameObject > Create Empty__),然后将组件添加到该游戏对象中,从而减少意外从项目中删除组件的可能性。

Light Probe Group 组件

Light Probe Group 组件属性功能

编辑光探针

要更改光探针组,请单击“编辑光探针”按钮以启用编辑。 这会将 Unity 更改为仅允许移动和编辑光探针,因此您必须记住在完成后禁用此设置。 启用“编辑光探针”后,无法在 Unity 中移动和编辑游戏对象或其他元素。

显示线框

启用此属性后,Unity 将在场景视图中显示光探针组的线框。 禁用时,Unity 仅显示光探测点,而不显示连接它们的线框。

消除振铃

启用此属性后,Unity 会自动从场景中删除光探针振铃。 请参阅本节后面的内容以获取更多信息。

选定的探头位置

此属性提供场景中所选光探针的 x、y 和 z 坐标。 该属性是只读的。

添加探针

单击此按钮可将光探针添加到光探针组。

全选

单击此按钮可选择光探针组中的所有光探针。

删除所选

单击此按钮可从光探针组中删除选定的光探针。

重复选定的内容

单击此按钮可复制选定的光探针。

戒指

在某些情况下,光探头可能会出现称为“振铃”的不良行为。 当光探头周围的光线存在显着差异时,通常会发生这种情况。 例如,如果光探头的一侧有亮光,而另一侧没有光unity 光照探头,则背面的光强度会“过冲”。 这种过冲会在背面产生耀斑。

光照探针振铃示例

光探针振铃示例

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

放置光探头

编辑光探针组时,可以按照与游戏对象类似的方式操作各个光探针。 但是,光探针不是游戏对象3D植物,而是 Light Probe Group 组件中的一组点。

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

光照探针的默认排列。

光探头的默认排列。

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

完成编辑光探针后,请务必禁用光探针组编辑模式,以便您可以继续正常编辑和移动场景中的游戏对象。

选择光探头位置

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

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

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

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

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

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

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

创建卷

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

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

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

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

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

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

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

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

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

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

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

光探针放置故障排除

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

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

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

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

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

光照探头的英文是什么_unity 光照探头_光照探头基础知识

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

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

unity 光照探头_光照探头基础知识_光照探头的英文是什么

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

现在,救护车在场景中心时,车上的光照更暗,这符合要求。

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

光探头:技术信息

使用脚本放置光探针

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