unity 遮挡剔除

Occlusion Culling

unity 中的剔除包括两种,一种是视角剔除,凡是不在摄像机视野内的物体,不进行渲染,第二种就是遮挡剔除,被挡住的物体不被渲染,即使它在相机视野内,两种方法可以共存

不进行视角剔除,也不进行遮挡剔除

只进行视角剔除

二者都进行

 

 

 Occlusion Culling使用两种存储方式, 一个为 View Cells (静态物体) 另一种为Target Cells (移动的物体).二者的数据分别单独存储

较大的物体不易当被遮挡物,较小的物体不易当遮挡物

可以通过‘overdraw’来观看场景中的遮挡情况,注意该模式下视野就代表摄像机,(没有使用遮挡提出的)

(使用之后的)

注意:黄色的区域为遮挡剔除区域,只有在这个区域内,遮挡剔除效果才会显现

 

.

Setting up Occlusion Culling

遮挡物要设置成 Occluder Static ,被遮挡物设置成Oculudee Static,如果你想快速的设置,你就把参与计算的物体这两个都打上勾,即是遮挡物也是被遮挡物,透明的物体不能遮挡其它物体,可以设置成Oculudee static

Marking an object for Occlusion

Occlusion Culling Window

在 Window > Rendering打开Occlusion Culling Window

Object菜单栏:scene Filter:文件过滤器,all 就是显示场景中所有的物体,renderers 显示场景中带有render组建的物体,occlusion Areas 显示场景中带有occlusion Area组件的物体

Occlusion Culling Window for a Mesh Renderer

选中一个物体后,也可以在这个面板设置它的Occluder Static和Oculudee Static

NOTE: Whenever your camera is outside occlusion areas, occlusion culling will not be applied. It is important to set up your Occlusion Areas to cover the places where the camera can potentially be, but making the areas too large incurs a cost during baking.

当你的相机在遮挡区域之外时,遮挡剔除将不被应用。设置遮挡区域以覆盖相机可能出现的位置是很重要的,但是在烘焙过程中,使遮挡区域过大会带来成本。

当使用l (LOD) 时. (LOD0) 作为 Occluder.也就是说如果当前时Lod1则不会发生遮挡

Occlusion Culling - Bake

Occlusion culling inspector bake tab.

Smallest Occluder:遮挡物的最小体积,小于这个数则不会遮挡其他物体

Smallest Hole:有的墙上有缝隙,你可以通过这个缝隙看到后面的物体,这个值是缝隙的直径

Backface Threshold:背面阈值,有些背面你是不可以到达的,比如说地形的下面,一个封闭房间的外面,这些地方你始终看不了,但是烘焙之后这些数据是包含在unity里面的,100代表不剔除这些数据,值越小数据就会越小,只是剔除背面数据

Clear:清除烘焙数据   Bake:烘焙数据

 

Occlusion Area

Occlusion Area 遮挡区域:应用于遮挡剔除移动的物体.  (移动的物体不能设置为 static). 你可以在一个空物体上面添加组件 Occlusion Area  (Component -> Rendering -> Occlusion Area ).

添加Occlusion Area组件之后, 点击 Is View Volume 检测遮挡移动的物体

Size:遮挡区域的大小

Center:遮挡区域的位置

Is View Volume:是否应用遮挡剔除移动的物体

遮挡区域可以有多个

在该区域内的物体,可以移动,不用设置静态,只要被遮挡就不会渲染,不被遮挡就渲染,事先也得烘焙

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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
发出的红包

打赏作者

TO_ZRG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值