Skip to main content

如何设置反射探针

反射探针捕捉其周围环境的图像到一个纹理中。这意味着几件事:反射探针通过捕捉环境生成立方体贴图时需注意:

  • 分辨率更高的探针图像更清晰,但由于包含六个纹理,体积也大得多。

    分辨率取舍:高分辨率(如 512x512)能够带来清晰反射,但六个面组合后文件大小暴增

  • 纹理是静态的。它不能改变。如果周围环境变化,它不会更新。

    静态限制:烘焙后纹理固定不变,环境变化时不会自动更新

  • 它们只能代表一个单一的视角,这个视角会移动来给出深度的错觉。

    视觉欺骗:通过单一视角模拟立体空间感(类似全景照片原理)

  • 尽管如此,如果探针大致符合该区域的照明,没人会注意到一个不准确的探针。

    容错机制:只要反射颜色/明暗与场景匹配,轻微位置偏差不易察觉

所以,下面是我确定如何在场景中放置探针的方法:下面是我确定如何在场景中放置探针的方法。

基础反射探针

就算你不放任何探针,Unity也会用天空盒作为默认反射贴图。但就像用别人的自拍当镜子——效果通常很假!建议自己动手做个专属反射。

1. 基础反射探针三步创建基础探针

即使你没有反射探针,Unity也会捕捉天空盒材质到一个反射探针,并默认分发给所有对象。

首先,在场景里右键创建

Unity的天空盒真的代表了你的场景吗?可能不是,所以让我们改变它为我们自己设置的东西。

Reflection

首先,添加一个新的反射探针。将类型设置为“自定义”。Probe,把 Type 改成"Custom"(就像把相机调成手动模式)

  • 如果你已经将场景中的所有对象标记为静态,不要打开动态对象。
  • 如果你没有将你的场景标记为静态(因为你没有合并它,或者不能使用静态批处理)则打开动态对象。然后选择在底部烘焙,并将你的反射探针纹理放置在场景的相关位置。

    如果场景中包含动态物体,则打开“动态对象”选项,然后点击“烘焙”按钮生成反射贴图。

probe11.png

其次,从顶部的窗口菜单打开照明窗口。从那里,将环境反射设置为自定义,并拖动你的新探针进去。打开照明窗口(Window > Rendering > Lighting),将环境反射源设置为“自定义”,并将刚刚新创建的反射探针拖入。

probe12.png

完成这些后,你可以禁用原始探针。现在你的场景有了一个默认的反射,不会影响批处理。

probe13.jpg

2.

复杂反射探针

这样做的一个明显问题是有些地方你的反射会看起来不对。通常,这不是问题。如果你的反射匹配周围区域的颜色和阴影,它们不需要完全准确。但当差异太大时,它可能会以不好的方式突出。

probe21.jpg

这不是最坏的情况,但很明显被反射的东西并不在那里。在房间里的球上更糟,因为它没有反射周围的墙。

如果这是地图的一个重要区域,就在那里放一个额外的探针!在问题区域添加额外的反射探针。通过调整探针的影响范围,可以确保特定区域使用正确的反射贴图。

probe22.jpg

在这个截图中,我已经使用反射探针组件顶部的控制设置了探针区域。因为探针区域已经定义,旁边的钢球还在使用外部的反射,而内部的球则反射房间。房间反射它自己,所以天空不可见,尽管建筑通过后墙可见。

如果区域是箱形的,我们可以将探针的边界适应墙壁,并启用箱形投影。
对于封闭空间(如房间),可以启用“箱形投影”(Box Projection)功能。箱形投影能够根据空间的几何形状调整反射效果,使其更加真实。

probe23.jpg

箱型投影探针

箱形投影是一种强大的技术,可以将你的反射探针适应到一个箱子上。使用得当,它可以使反射看起来非常好,即使周围没有完全反光的表面来展示它。特别适合用于封闭空间。它通过调整反射探针的边界来适应场景的几何形状,从而提供更准确的反射效果。

3. 箱型投影探针说明

反射探针的边界定义了哪些对象受探针的影响。在边界的边缘,在边界处,对象会在原始探针和最重要、最近的探针之间插值。对于常规探针,这从内向外发生。对于箱形投影探针,这是从外向内。

  • 普通探针:从中心向外渐变混合(像墨水扩散)

  • 箱形探针:从边缘向中心混合(类似拼图填充)

  • 智能扩展:探针边界会"呼吸"——根据周围物体自动调整大小

推荐观看 ScruffyRules的箱形投影教程,动态展示比文字更直观!

注意事项

箱形投影探针的边界会根据周围物体的网格渲染器自动扩展。如果场景中存在非常大的网格,可能会导致探针边界被过度拉伸,从而影响反射效果。

一个展示箱形投影探针边界扩展的视频。感谢ScruffyRules!箱形投影探针视频链接为了避免这个问题,可以为大物体单独设置锚点,或者将其网格拆分为更小的部分。

箱形投影探针的边界实际上会扩展以包围它们周围的对象,这是基于对象的网格渲染器的边界的。这可能会因为大网格而造成大问题,因为对于一个大网格来说太小但优先级高的箱投影探针会被拉伸以适应更大的网格。