OcclusionArea介绍
遮挡剔除。通俗地讲,就是将距离相机当前位置最近的一组非透明物体完全遮挡(看不到)的物体,动态地禁用渲染(禁用渲染一些物体,游戏视图的渲染负担就会减轻,作品跑起来就会流畅一些),一般摄像机渲染先渲染远处的物体,后再渲染近处的物体
视锥体剔除
在Unity中3D类型的游戏,摄像机常设置的投影模式为透视投影(Perspective),它具有近大远小,有距离之分。而这种模式下,摄像机视野的空间形态是一个四棱锥,Unity称为“棱锥”,Unity默认情况下,只会渲染视锥体(视野内)以内的物体,一般情况下我们看不到,但运行时会自动启动
如下图
视锥体剔除效果展示
取消勾选Occlusion Culling面板(这个面板就是遮挡剔除,调出这个面板的方式,可查看遮挡剔除创建过程)下的Occlusion culling,就变成视锥体剔除
如图所示:视锥体移动前物体
摄像机移过去后
可以观察到视锥体外的物体没有被渲染出来
遮挡剔除
使用方法
1.设置摄像机的Occlusion Culling
勾选摄像机的Occlusion Culling
2.打开Occlusion窗口
window->Occlusion Culling 或者window->Rendering->Occlusion Culling
3.创建Occlusion Area
在打开的Occlusion窗口->Object->Occlusion Area->Create New Occlusion Area,即可创建,Hierarchy可看见
4.设置Occlusion Area
Occlusion Area的大小范围就是遮挡的范围
返回Hierarchy进行设置
如下图:
绿色区域就是设置的Occlusion Area的大小,也就是可以进行遮挡的范围
5.对遮挡物进行烘培
这一幕和寻路好像😀
勾选所需要的遮挡物
设置它们为Static
或者单独勾选Occluder Static和Occluder Static
Occluder Static:遮挡物
Occluder Static:被遮挡物
这两个最好都勾选
举个例子:
假如A B C三个立方体,排成一列, 摄像机在A的正前方,从摄像机的视角中看不到B和C,因为它俩被A挡住了。
如果这时候A是“遮挡物”,B和C是“被遮挡物”。那B和C就不会显示在场景中(不仅是摄像机看不见,而是完全不在场景中出现)。
但如果摄像机穿过A,而移动到B的正前方,B和C都会显示。为什么?因为B是“被遮挡物”,却没有被“遮挡物”挡住(此时作为遮挡物的A,在摄像机背面,并没有挡住B)
那C为何会显示呢?因为B只是“被遮挡物”,而不是“遮挡物”,所以它无法遮挡C。摄像机里看不到C,但C依然会显示在场景中。
如果此时把B同时勾选为“遮挡物”。那么C就不会显示了。
对设置的static的遮挡物进行烘培
打开Occlusion面板->Blake。即可烘培。和寻路一样的😀
6.打开Scene的Occlusion Culling
可在不运行游戏的情况下,查看遮挡渲染效果。和上面棱锥体遮挡观察一样
打开Occlusion面板
即可在Scene右下角上看到Occlusion Culling
设置为Visualize
勾选Occlusion Culling
勾选Occlusion Culling就是遮挡剔除,不勾选就是上面的棱锥体剔除
勾选Camera Volumes可查看摄像机的范围
7.可以查看效果
点击摄像机(不需要运行哦),即可查看遮挡剔除渲染效果。记得要一直打开Occlusion面板或者Scene右下角的Occlusion Culling显示,否则没效果哦
如图所示:为移动摄像机前
移动摄像机后
遮挡剔除将会删除被更近的渲染器完全遮挡的渲染器。也就是说被遮挡物遮挡的事物不会被渲染出来。比如:你在室内,被墙遮挡(墙不透明),室外的事物就不会被渲染出来
OcclusionArea部分功能讲解
Occlusion面板
Oject选项卡
用以筛选 Hierarchy 窗口的内容。
比如选择Renderers,就会筛选包含Renderers组件的对象
选择Occlusion Areas筛选包含Occlusion Areas组件的对象,也可创建新的遮挡区域
Bake选项卡
可以微调遮挡剔除烘焙过程的参数
- Set Default Parameters:可将参数重置为默认值
- Smallest Occluder:可以遮挡其他游戏对象的最小游戏对象的大小
- Smallest Hole:摄像机可以看到的最小间隙
- Backface Threshold:Unity的遮挡使用了一个数据大小的优化,通过测试背面来减少不必要的细节。100是最好
Visualization选项卡
当 Visualization 选项卡可见时,如果在 Scene 视图或 Hierarchy 窗口选择一个摄像机,则 Unity 将更新 Scene 视图,从所选摄像机的视角显示遮挡剔除的效果。
如下图:选择其他选项卡时,Scene试图变化
选择Visualization选项卡时
Occlusion Area组件
可以计算遮挡剔除系统中的视图体积,也是遮挡剔除功能实现的一部分
- Size:设置遮挡区域的大小,就是场景中的绿色区域
- Center:设置遮挡区域的中心
- Is View Volume:启用这个遮挡剔除效果才会启动。用于计算遮挡剔除系统中的体积
Occlusion Portal组件
用来实现Camera对密闭空间的动态可控性渲染
如:在室内的门窗上添加Occlusion Portal组件,设置好大小,就可以控制渲染室内的GameObject,打开门渲染,关门停止渲染。
- Open:如果启用此属性,Occlusion Portal将打开并且不会遮挡渲染器。如果禁用此属性,Occlusion Portal将关闭并且会遮挡渲染器。
- Center:设置Occlusion Portal的中心。默认值为 0,0,0。
- Size:定义Occlusion Portal的大小。
当前就写到这.......😀