Unity里面occlusion area或者叫occlusion culling,设置一块区域,区域里设置一些物体作为遮挡物,那么在该区域内被遮挡物遮住的一些物体不会被渲染,从而降低GPU和帧率损耗。occlusion culling的详细介绍可以在Unity官方帮助里面找到,我这里就简单介绍一下怎么用吧。

首先确认你的相机的“Occlusion Culling"勾选上。

unity调试 HoloLens unity locomotion_下拉列表

打开Window——Rendering——Occlusion Culling,在右侧栏框中出现Occlusion选项卡,

unity调试 HoloLens unity locomotion_下拉列表_02

然后在Occlusion选项卡里选Object——Occlusion Areas——Create New Occlusion Area,

unity调试 HoloLens unity locomotion_帧率_03

然后Scene视口中就出现一个这样的图形并在Hierarchy中出现名为“Occlusion Area”这样一个东西,Hierarchy里的“556”和“方格阵(occlusion测试)”分别是下面测试的被遮挡物和遮挡物,

unity调试 HoloLens unity locomotion_下拉列表_04

选择Hierarchy中的Occlusion Area,调整大小直至囊括遮挡物和被遮挡物,因为只有遮挡物、被遮挡物和摄像机三个都在Occlusion Area囊括的范围的遮挡才有效,所以我把Occlusion Area范围做大一点(图中半透明的区域是Occlusion Area范围),

 

unity调试 HoloLens unity locomotion_unity调试 HoloLens_05

点选视口中的遮挡物,在属性观察器中点Static——Occluder Static,将我的“556”物体(一块大板)设为遮挡物,将来用来遮挡“方格阵(occlusion测试)”。

unity调试 HoloLens unity locomotion_选项卡_06

在属性观察器里选Occlusion选项卡,然后在Hierarchy中点中Main Camera(其它相机也行),点Bake开始烘焙,遮挡要在运行前就烘焙好,运行时无法实时烘焙。

unity调试 HoloLens unity locomotion_帧率_07

在Hierarchy中选中相机,在视口的“Occlusion Culling”的下拉列表中选“Visualize”,打开“Camera Volumes"、"Visibility Lines"、”Portals"可以查看遮挡的作用范围(从名字大致可以知道那些线是做什么的)。

unity调试 HoloLens unity locomotion_帧率_08

拖动相机可以观察遮挡效果,可以看到方格阵的一些方格被遮挡住了。这里我的相机在最上面,遮挡物在中间,被遮挡的小方格在下面。

unity调试 HoloLens unity locomotion_选项卡_09

你可能会问所有的方格都被遮挡物遮住了不是应该全部小方格都不渲染(不显示)出来吗,因为这里的小方格和墙(遮挡物,下面我都叫它叫墙)不够大,Unity检测不到。你可以设置Unity检测的最小尺寸,将Bake选项卡——Smallest Occluder设小一点,再点下面的烘焙Bake,然后转到Visualization选项卡,在视口中拖动相机,这时许多小方格都不渲染了。

unity调试 HoloLens unity locomotion_帧率_10

unity调试 HoloLens unity locomotion_帧率_11

Byebye