您的位置:首页 > 移动开发 > Unity3D

unity 性能优化之遮挡剔除(Occlusion Culling)

2018-01-25 10:59 344 查看
1.当场景中包含大量模型时,造成渲染效率的降低(即帧速率FPS的降低),采用遮挡剔除技术,可以使得那些被阻挡的物体不被渲染提高渲染效率

2.原理:在场景空间中创建一个遮挡区域,该遮挡区域是有单元格(Cell)组成;每个单元格是构成整个场景遮挡区域的一部分,这些单元格会把整个场景拆分成多个部分,当摄像机能够看到该单元格时,表示该单元格的物体会被渲染出来,其他的不去渲染

3.遮挡剔除步骤:

(1)场景

(2)除了主角,摄像机,直线光,地面。把层级视图中的所有游戏对象标记为“遮挡静态”(Occluder Static/Occludee Static)

(3)执行菜单命令“Windows”—>“OcclusionCulling”,弹出“遮挡剔除”面板,单击下方的“Back”按钮,开始烘焙

(4)单击“遮挡剔除”(Occlusion)窗口的“Visualizatior”,运行程序

4.若场景中存在大量的小“物件”,使用“层消隐距离”来优化场景

(1):原理:较远距离将小物件剔除,减少绘图调用的数量

(2):方法:将小物件放入一个单独的层(Separate  Layer)中,并使用Camera.main.layerCullDistances函数设置层的消隐距离
(3)例如:void Start(){
                  Float[] distances=newfloat[32];
                  //这里定义的数组下标“8”表明第8层
                  distances[8]=10;
                 Camera.main.layerCullDistances=distances;
        }
当摄像机距离这些小物件超过10m的时候,就不可见了

渲染视野内的游戏物体 视野之外的不渲染

1.选中需要遮挡剔除的游戏物体

2.点击Static里面的Occlude Static



3.点击Window里面的Occlusion Culling



4.选择Occluder Static



然后点击Bake生成网格是用来遮挡剔除计算的

在视野内显示视野外不显示

添加新物体需要重新烘焙



5.选择主相机





4.选择Occluder Static



然后点击Bake生成网格是用来遮挡剔除计算的

在视野内显示视野外不显示

添加新物体需要重新烘焙



5.选择主相机

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息