Unity场景遮挡剔除

版权声明:转发,使用请留言告知 https://blog.csdn.net/qq_37310110/article/details/86154444

实现如下图:

移动相机,在相机的视锥范围内GPU就会渲染出场景,而在相机视锥范围外以及被遮挡的场景GPU就不会渲染出来

一.搭建有大小差异的场景

1.新建不同的物体,摆放位置要有层次,大小要有差异

2.打开 window>OcclusionCulling>Object 创建OcclusionAreas,类似碰撞框,区域要涵盖搭建的场景

3.设置场景物体静态,最好手动勾选

二.设置参数,烘焙场景

1.设置Back面板的cans参数

2.烘焙场景

Smallest Occluder:设置最小遮挡物的尺寸,当遮挡物的长度或者宽大于设定值时,该物体才能够遮挡住后面的物体。 Smallest Hole:设置最小孔的尺寸,当穿过物体内部的孔或者多个物体堆叠形成的孔的大小小于设定的值时,遮挡剔除烘焙将忽略该孔的存在。 
Backface Threshold:设置背面移除阈值,用于优化场景,当该值为100时,摄像机拍摄不到的背面信息也会完整保留;当该值较小时,系统将对背面信息进行优化甚至去掉背景信息。

遮挡区域,用于场景较大而摄像机运动范围相对较小的情况。为摄像机活动的区域设置Occlusion Area,可以减少烘焙的数量,从而节约烘焙时间。可以在未选中场景中物体的情况下,在Occlusion面板的Occlusion Area选项夹下点击Create New后的Occlusion Area,并可以在场景中调整其位置和大小。当需要进行遮挡剔除的区域被覆盖之后就可以对其进行烘焙。在此区域内可以对静态和动态的物体进行遮挡剔除。

三.查看效果

1.选中Occlusion>Visualization>All或者Camera

2.调整相机的位置,即可在scene视图看到效果

3.注意:使用Occlusion Culling需要预先烘培好运行时所需的场景数据。Occlusion Culling相关数据无法动态实时生成。

猜你喜欢

转载自blog.csdn.net/qq_37310110/article/details/86154444