Skip to main content

3. 如何为遮挡剔除设置场景

默认情况下,Unity会将整个场景放入一个称为视图体积的大空间块中。

如果你在场景中放置一个通过在场景中划定特定的遮挡区域Unity将只为该空间内部计算遮挡数据,这可以使遮挡数据大大减小。如果你的场景被分割成多个独立区域,考虑用遮挡区域覆盖它们,而不是让Unity计算整个场景作为一个大体积。我们可以让 Unity 仅在这些区域内进行遮挡数据的计算,从而大幅降低所需处理的遮挡数据量。如果您的场景被划分为若干独立区块,您可以使用遮挡区域来覆盖这些区块,而非让Unity对整个场景统一处理,这将会是一种更为高效的方法。

你可以从对象的静态标志或遮挡窗口进行遮挡设置。您可以在对象的静态标签或遮挡窗口中进行遮挡剔除的设置。

image-1643384082055.png

遮挡剔除的简单推荐设置

只有大的、实体的东西该是遮挡物只有体积大的实体对象才适合作为遮挡物

这是一个简单的经验法则。如果它小,或透明,或者有洞,它就不应该是遮挡物。树不应该是遮挡物,因为它们有叶子,这些叶子会创建许多微小的洞,这些洞无法通过遮挡来表示。复杂的边缘是不好的。若物体尺寸小、透明度较高或存在空洞,则不适合作为遮挡物。例如,树木不应作为遮挡物,因为其叶片会形成许多微小空隙,这些空隙难以通过遮挡剔除准确计算;同样,边缘结构复杂的对象也不适宜作为遮挡物。

如果它总是可见的,不要使其成为被遮挡物对于始终处于可见状态的对象,无需将其纳入被遮挡物的范畴。

如果你有一个天空盒或由巨大平面构成的海洋,让它被遮挡是没有意义的。误报的数量将超过性能的增益。例如,天空盒或由大片平面组成的海洋等,将其纳入遮挡剔除并无实际意义,而且错误地将它们判定为被遮挡物所带来的性能损失可能超过由此带来的性能收益。

使较小的对象成为被遮挡物,但不是遮挡物应该使较小的对象成为被遮挡物,而不是遮挡物。

仅仅因为某物小并不意味着它不会从遮挡剔除中受益。即使是小型对象,也可以作为被遮挡物从中获益。

使用EditorOnly标签来创建假遮挡物使用“EditorOnly”标签可以创建虚拟的遮挡物。

如果一个对象有“EditorOnly”标签,它不会在游戏中渲染。它不会在游戏中或运行状态下被渲染。然而,在烘焙过程中仍将考虑它。在烘焙过程中它仍会被视作遮挡物。

image.png

我如何预览遮挡剔除?我如何预览遮挡剔除的效果?

在Unity 2018中,遮挡剔除影响场景相机。除此之外,如果你在遮挡窗口中选择可视化,你可以从场景中相机的角度看到遮挡剔除是如何工作的。遮挡剔除将影响场景相机的渲染。此外,通过在遮挡窗口中选择可视化选项,可以从相机视角观察场景中遮挡剔除的实际运作情况。

当你选择可视化时,场景层次结构将被过滤以仅显示带有相机组件的对象,并显示当前活动相机视角的遮挡剔除。你可以看到相机使用的光线投射和光线投射对抗的低分辨率场景,以确定什么被遮挡以及在哪里被遮挡。此时,场景层级结构将被屏蔽,仅展示含相机组件的对象和当前相机视角下的遮挡剔除结果。你可以观察到相机所使用的光线投射技术,以及它是如何确定哪些物体被遮挡,和被遮挡的具体位置。

要恢复正常,请切换到遮挡窗口中的其他标签或关闭它。若要恢复正常的场景显示,只需切换至遮挡窗口中的其他标签或关闭窗口即可。

"烘焙"设置是什么意思?

在遮挡窗口中,有一个包含一些设置和一块文本的“烘焙”部分。有一个包含了若干预设的选项和一段说明文本的部分。正如文本所指出的,你实际上不需要更改设置,因为它们已经调整为速度和性能之间的良好平衡。这些设置已针对速度和性能进行了优化,因此不建议随意更改。

最小孔洞设置了被视为“孔洞”的几何间隙的阈值,可以通过该孔洞看到。可通过该孔洞看见外部。这个值越小,生成遮挡的时间就越长。将此值设置为适合你的场景的值,烘焙遮挡的时间就越长。您可以将此值设置为适合你的场景的值,理想值在0.05到0.5之间(5cm到50cm)。

最小遮挡物设置了烘焙遮挡数据将考虑多少细节。设定了在计算遮挡时所考虑的细节等级。这个值越小,计算遮挡时会考虑更多的小物体,并且在运行时计算可见内容时,遮挡将进行更多的计算。并且在运行计算可见内容时,遮挡的计算量会更大。将此值设置为略大于平均玩家大小的值,因此为2-6(大约为2-6米(2m到6m)。

如果你想了解更多关于它们的信息,请访问Unity博客上的这篇文章,以便更深入地解释了它们。