unity_Occlusion_Culling遮挡剔除学习

unity_Occlusion_Culling遮挡剔除学习

文档:
https://docs.unity.cn/cn/2019.4/Manual/occlusion-culling-getting-started.html

没彻底搞明白,但是会用,虽然也不熟练

设置遮挡剔除

打开遮挡剔除面板

在这里插入图片描述

在这里插入图片描述

设置场景物体。设置为静态

在这里插入图片描述

设置场景

在这里插入图片描述

烘焙场景

在这里插入图片描述

运行查看效果

在这里插入图片描述

遮挡剔除面板参数

在这里插入图片描述

Objcet

点击一个模型之后Object 窗口可以有信息
在这里插入图片描述

Occluder Static(静态遮挡物)

如果游戏对象是动态的,这个游戏对象可以在运行时充当被遮挡物,而不能充当遮挡物。
这些游戏对象不会移动,但会阻挡后面的游戏对象
适合作为静态遮挡物的游戏对象包括中型到大型的实体游戏对象(例如墙壁或建筑物)。要被设定为静态遮挡物,游戏对象必须满足以下条件:

    具有 Terrain 或 Mesh Renderer 组件
    不透明
    在运行时不移动

Occludee Static(静态被遮挡物)

这些游戏对象不会移动,但会被静态遮挡物遮挡。
任何可能在运行时被遮挡的游戏对象都适合设定为静态被遮挡物,包括小的或透明的游戏对象。要被设定为静态被遮挡物,游戏对象必须满足以下条件:


    具有任何类型的 Renderer 组件
    在运行时不移动

动态的遮挡物

如果游戏对象是动态的,这个游戏对象可以在运行时充当被遮挡物,而不能充当遮挡物。
要确定动态游戏对象是否充当被遮挡物,可以在任何类型的渲染器组件上设置 Dynamic Occlusion 属性。启用 Dynamic Occlusion 后,渲染器在摄像机的视图中被静态遮挡物 (Static Occluder) 阻挡时,Unity 会剔除渲染器。禁用 Dynamic Occlusion 后,渲染器在摄像机的视图中被静态遮挡物 (Static Occluder) 阻挡时,Unity 不会剔除渲染器。
在这里插入图片描述

与LOD
如果使用了 LOD 组,则 Unity 会使用静态遮挡物的基础细节级别游戏对象 (LOD0) 来确定要遮挡的对象。如果游戏对象的轮廓在 LOD0 和其他 LOD 级别之间变化很大,这个游戏对象可能不适合设定为静态遮挡物。

效果

动态遮挡物

在这里插入图片描述

在这里插入图片描述

遮挡者与被遮挡者

如果物体可以遮挡其他物体就是遮挡者,如果不想让遮挡其他物体就是被遮挡者。
在这里插入图片描述

在这里插入图片描述

遮挡区域

如果有一些地区需要细致的检查遮挡,则使用这个。
在场景中创建一个空物体,然后附加:Occlustion Area 设置大小即可,unity会细致的检查这个区域内的遮挡关系。
在这里插入图片描述

Bake

在这里插入图片描述

Small Occluder

设置阈值,当大于这个值的物体物体会被设置为 遮挡着,遮挡其他物体.
决定了单元格的大小,数值越小越细致,但是更加消耗性能
所以考虑使用“遮挡区域 ” 来绘制需要着重注意的区域,而不是调整小这个值。

Smallest Hole 最小洞

允许unity在遮挡剔除过程中忽略非常小的洞,比如透过门缝看不到屋内的物体,必须打开门或者这个洞足够大

Backface Threshold

背面阈值, 建议使用默认参数,渲染的时候显示背面的比例。

Visualization 可视化

在运行的时候可视化遮挡剔除的数据

Camera Volume 摄像机体积

在这里插入图片描述

Visibility Line

在这里插入图片描述

Portals

在这里插入图片描述

Occlusion Portal_遮挡入口

如果它是开放的,那么这个体积不会作为遮挡者起作用,而当我们关闭它时,一它就像一个遮挡者,并且可以遮挡其后的物体。

简单来说是:如果想遮挡 遮挡入口 后面的东西,就关闭,不想让其遮挡则开启。
在这里插入图片描述

遮挡剔除原理

遮挡剔除会在 Unity Editor 中生成有关场景的数据,然后在运行时使用该数据来确定摄像机可以看到的内容。这种生成数据的过程称为烘焙。

在对遮挡剔除数据进行烘焙时,Unity 将场景划分为多个单元,并生成描述单元内几何体以及相邻单元之间可见性的数据。然后,Unity 尽可能合并单元,以减小生成的数据的大小。要配置烘焙过程,可以在 Occlusion Culling 窗口中更改参数,并在场景中使用遮挡区域。

在运行时,Unity 会将这些烘焙的数据加载到内存中,并且对于每个启用了 Occlusion Culling 属性的摄像机,将会对数据执行查询以确定该摄像机可以看到的内容。请注意,启用遮挡剔除后,摄像机将执行视锥体剔除和遮挡剔除。

“遮挡剔除”过程可防止 Unity 为那些被其他游戏对象完全挡住(遮挡)的游戏对象执行渲染计算。

遮挡剔除的作用

防止无意义的渲染操作可以节省 CPU 和 GPU 时间。Unity 的内置遮挡剔除在 CPU 上执行运行时计算,这可能会抵消其节省的 CPU 时间。因此,当项目因过度绘制而具有 GPU 密集型特征时,遮挡剔除最有可能提高性能。
Unity 在运行时将遮挡剔除数据加载到内存中。必须确保有足够的内存来加载此数据。
当场景中一些界限明确的小区域被实体游戏对象彼此隔开时,遮挡剔除的效果最好。一个常见的例子是通过走廊连接的房间。

如果被剔除了是否可以运行代码?

在这里插入图片描述
在这里插入图片描述

在game 视图看不到,但是还是会运行代码。

### 回答1: Unity实时遮挡剔除是一种用于性能优化的技术,通过在渲染场景时动态地检测和移除被其他物体遮挡的不可见物体,提高渲染效率和帧率。 实时遮挡剔除的原理是通过摄像机的视锥体来确定被剔除的物体,只有在视锥体内的物体才会被渲染,而视锥体外的物体则会被剔除。这样可以避免不可见物体的渲染,减少对GPU、CPU和带宽的压力,提高游戏的性能和流畅度。 Unity实时遮挡剔除的步骤主要包括: 1. 确定摄像机的视锥体,即摄像机能够看到的范围。 2. 对于每个物体,判断其是否在视锥体内。如果在视锥体外,就剔除它。 3. 如果物体在视锥体内,继续检测是否被其他物体遮挡。如果被遮挡,也将其剔除。 4. 对剩下的可见物体进行渲染。 Unity实时遮挡剔除有助于提高游戏的渲染性能,尤其是在大型场景或者复杂的游戏世界中。它可以减少渲染物体的数量,加快渲染速度,使游戏更加流畅。此外,通过合理的遮挡剔除设置,还可以减少GPU和CPU的负担,让游戏在更低的硬件要求下运行。 总之,Unity实时遮挡剔除是一种重要的性能优化技术,能够提高游戏的渲染效率和帧率,为玩家提供更好的游戏体验。 ### 回答2: Unity实时遮挡剔除(Real-time Occlusion Culling)是一种用于提高游戏性能的技术,旨在减少对不可见物体的绘制。在游戏场景中,有些物体可能被其他物体遮挡,这些被遮挡的物体在渲染时不需要显示,因此可以将其剔除,从而节约计算资源。 Unity实时遮挡剔除的实现原理是通过预先计算场景中不同物体的可见性。首先,进行场景的静态分析,生成一张场景中所有物体的可见性图(Occlusion Map),记录每个点是否可见。接下来,通过相机的视锥体(视野范围),对于视锥体内的物体,通过检查其在可见性图中的位置来判断其可见性。如果物体被视锥体外的其他物体遮挡,那么它将被剔除,否则将进行渲染。 通过使用Unity实时遮挡剔除,我们可以提高游戏的渲染效率,减少不必要的绘制操作,从而改善游戏的性能和流畅度。这对于那些需要处理大量复杂场景的游戏特别有用,因为它可以在运行时动态地确定哪些物体需要渲染,减轻了GPU和CPU的负担,使游戏更加流畅。 Unity实时遮挡剔除虽然对场景的可见性进行了优化,但也有一些限制。例如,在动态物体或需要频繁更新的场景中,无法准确地预计可见性,因此需要使用其他技术进行补充,如级别细化(LOD)和动态批处理等。 综上所述,Unity实时遮挡剔除是一种采用预先计算可见性的技术,旨在提高游戏性能。通过剔除不可见的对象,减少了对它们的渲染,使游戏在复杂场景下运行更加流畅。 ### 回答3: Unity的实时遮挡剔除是一种技术,可以在场景中动态隐藏不可见的物体,从而提高渲染的效率。这个技术可以有效地避免不必要的渲染,减少GPU的负担,从而提高游戏性能。 在Unity中,实时遮挡剔除是通过一个叫做视锥裁剪器(Frustum Culling)的技术来实现的。视锥裁剪器实际上是一个虚拟的摄像机,它只渲染在视锥体内的物体。通过将在视锥体外的物体从渲染队列中剔除掉,可以减少不必要的渲染操作,提高渲染效率。 Unity的实时遮挡剔除还使用了一种叫做遮挡剔除Occlusion Culling)的技术。遮挡剔除是通过判断一个物体是否被其他物体遮挡住来进行的。当一个物体被其他物体遮挡住时,该物体的渲染操作就会被剔除掉,从而减少不必要的渲染。 Unity的实时遮挡剔除在编辑器中可以通过配置设置来应用。通过在场景中添加遮挡剔除区域,可以指定哪些物体应该被剔除。而且,Unity还提供了一些调试工具,可以帮助开发者进行优化,如场景的可视化遮挡剔除图和性能分析器。 总之,Unity的实时遮挡剔除是一种有效的渲染优化技术,可以提高游戏性能,减少不必要的渲染。通过视锥裁剪器和遮挡剔除的配合使用,可以在保证画面质量的同时提高游戏的帧率和流畅度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值