性能优化学习笔记二

层级细节LOD Group

随着场景变大,性能将成为越来越重要的考虑因素。管理此情况的方法之一是根据摄像机与对象之间的距离,使网格具有不同的细节级别。 我们将此级别称为__级别__(Level of Detail,缩写为 LOD)。
细节
LOD Group 用于管理游戏对象的细节级别 设置LOD的等级级别显示,当距离在LOD 0时显示的是精度最高的物体,当距离在LOD 1时显示精度中等的物体,当距离在LOD 2时显示精度较低的物体,当距离在Culled时不显示物体
LOD 0时
在这里插入图片描述
LOD 1时
在这里插入图片描述
LOD 2时

在这里插入图片描述
Culled时
在这里插入图片描述

遮挡剔除

当对象被其他对象阻挡(遮挡)而不能被摄像机所看到时,遮挡剔除 (Occlusion Culling) 功能会禁用对象的渲染。
视锥体剔除:常规视锥体剔除仅渲染摄像机视野内的对象,将摄像机范围外的物品剔除。
遮挡剔除:受益于视锥体剔除将视野外的物品剔除,如果有对象被更近的对象完全遮挡,则遮挡剔除可进一步从摄像机渲染工作中移除这些被遮挡的对象。

设置遮挡剔除

将游戏类的可被遮挡剔除的遮挡物标记为(Occluder Static),不太可能遮挡其他对象的小型对象应标记为被遮挡物 (Occludee)
在这里插入图片描述
将需要剔除的游戏物体在Occlusion给他烘焙游一下在这里插入图片描述
在这里选择需要烘焙的摄像机
在这里插入图片描述
烘焙完成在Game窗口进行查看
在这里插入图片描述
在这里插入图片描述
在图片1中物体的三角面(Tris)比图二少了1700个

遮挡区域

要将遮挡剔除应用于移动对象,必须创建遮挡区域 (Occlusion Area),然后修改其大小以适合移动对象所在的空间(当然,移动对象不能标记为静态)。,通过将遮挡区域 (Occlusion Area) 组件添加到空游戏对象来创建遮挡区域(菜单:Component > Rendering > Occlusion Area)。
创建__遮挡区域__后,请选中 Is View Volume 复选框以遮挡移动对象。
在这里插入图片描述
在这里插入图片描述

Mesh合并

void MeshCome()
    {
        MeshFilter[] filters = GetComponentsInChildren<MeshFilter>();
        //用数组来获取他的所有子集上的MeshFilter
        CombineInstance[] comb = new CombineInstance[filters.Length];
        //创建一个CombineInstance来接收子集上MeshFilter
        for (int i=0;i<filters.Length;i++)
        {
            comb[i].mesh = filters[i].sharedMesh;
            //
            comb[i].transform = filters[i].transform.localToWorldMatrix;
            //计算transform矩阵,将子对象本地转世界的矩阵和本对象世界转本地的矩阵相乘,就得到了子对象转换到本对象本地的矩阵。
        }
        Mesh Meshfinel = new Mesh();
        Meshfinel.CombineMeshes(comb);
        GetComponent<MeshFilter>().sharedMesh = Meshfinel;
    }

获取所有子对象的MeshFilter并创建出一个新的Mesh
在这里插入图片描述
原物体的Mesh Reader关闭并给予物体新材质
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值