这段时间研究了一下遮挡剔除,看了几个文档并整理得稍微详细些,为了方便自己和大家学习,项目中用的东西也很简单也很好还原,就相机和Cube就够了。
1.准备工作
先在场景中布置若干个cube(正方体),上面的材质是我自己加的,本次主要是演示遮挡剔除的效果,材质有没有都无所谓。记得其中一个cube设置大一些,用来遮挡后面的小cube。然后将其全部设为静态(这个很重要!)。然后依次点击Windows -> Occlusion Culling
之后在属性栏会出现这个界面
在Scene面板中同时会出现Occlusion Culling
点击Edit会出现会出现一个Visualize选项,但这时候这个选项是灰色的无法点击的!原因是我们还没有进行烘焙(Bake)。我们点击Bake会出现如下几个设置。分别是:
Smallest:可以被剔除的物体的最小尺寸,简单来说你的物体如果比设置的尺寸还小,那就不会进行遮挡剔除。
Smallect Hole: 如果物体身上有带孔的话,通过这个孔我们可以看到后面的物体,这个参数的作用就是当孔的大小小于这个参数值时就会被忽略这个孔的存在,那孔后的物体就会被剔除。
Backface Threshold : 设置背景剔除的阈值。当值为100时就不剔除背景,当小于100时U3D对背景进行优化甚至去掉背景。
此处参考:https://www.cnblogs.com/spiderljx/p/11587029.html
了解一下就好,基本不用动设置。然后点击右下角的Bake进行烘焙,然后再点击Visualization选项,你会发现右下角也有一个Bake,也点击他。请记住顺序!!每次移动物体或修改物体时都需要重新烘培,要先点击Bake的烘焙再点击Visualization的烘焙。
全都烘焙完之后再去点击之前说的Edit选项,会发现另一个选项Visualize可以点击了。点击后界面会变成:
细心的同学可能会发现一个细节,就是红圈中的小cube因为在相机视野之外已经被遮挡剔除了!而上图的这个黄色框框则是根据你静态物体的摆放自动生成的,如果你静态物体的间隔越大这个黄色框框也会越大。而接下来是重点!!只有当你相机同时处于黄色框框中,才能实现被遮挡的物体的遮挡剔除。否则就只会出了相机范围才会进行遮挡剔除。如果感觉难理解的话下面直接上图演示:
相机在黄色框框中的效果很明显就像我们人眼一样,看不见的物体被遮挡剔除,但是红色区域的Cube和蓝色区域两个被剔除的Cube有显著的差别。
红色区域是因为出了相机的视野范围才被剔除!!而蓝色区域的两个Cube是因为被前面这个大Cube挡住了才被剔除。
接下来看相机出了黄色框框的效果:
这样子应该大家都懂了吧?当相机出了黄色框框的时候黄色框框同时消失,而蓝色区域的物体也出现了。因为它并没有在相机的视野外,所以不会被遮挡剔除。
当我们点击图中OcclusionCulling选项中的VisibityLines时,会出现如下效果:
这个是相机的可视范围,而红色线范围的那一块射线区域是相机被大Cube遮挡的视野盲区。当你不断调整也会不断改变。
而遮挡剔除就是用来优化的,而具体效果可以看下图:
可以很明显看到遮挡了一个和遮挡了三个Cube时Batches的变化,说明我们的遮挡剔除已经实现成功。因为材质原因,自己测试的结果可能和我的不一样。