美文网首页
渲染优化-合并网格

渲染优化-合并网格

作者: GameObjectLgy | 来源:发表于2020-11-03 15:31 被阅读0次

前提:物体使用同一个材质。
很大情况下,材质不同是因为贴图的不同,所以通常还需要进行贴图的合并。
合并步骤:
1、把需要合并网格的物体在场景中放到一个组。
2、在父物体挂载以下脚本。

/// <summary>
    /// 合并网格
    /// </summary>
    private void MergeMesh()
    {
        MeshFilter[]      meshFilters      = GetComponentsInChildren<MeshFilter>();   //获取 所有子物体的网格
        CombineInstance[] combineInstances = new CombineInstance[meshFilters.Length]; //新建一个合并组,长度与 meshfilters一致
        for (int i = 0; i < meshFilters.Length; i++)                                  //遍历
        {
            combineInstances[i].mesh      = meshFilters[i].sharedMesh;                   //将共享mesh,赋值
            combineInstances[i].transform = meshFilters[i].transform.localToWorldMatrix; //本地坐标转矩阵,赋值
        }
        Mesh newMesh = new Mesh();                                  //声明一个新网格对象
        newMesh.CombineMeshes(combineInstances);                    //将combineInstances数组传入函数
        gameObject.AddComponent<MeshFilter>().sharedMesh = newMesh; //给当前空物体,添加网格组件;将合并后的网格,给到自身网格
                                                                    //到这里,新模型的网格就已经生成了。运行模式下,可以点击物体的 MeshFilter 进行查看网格

        #region 以下是对新模型做的一些处理:添加材质,关闭所有子物体,添加自转脚本和控制相机的脚本

        gameObject.AddComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/Koala"); //给当前空物体添加渲染组件,给新模型网格上色;
        foreach (Transform t in transform)                                                              //禁用掉所有子物体
        {
            t.gameObject.SetActive(false);
        }
        gameObject.AddComponent<BallRotate>();
        Camera.main.gameObject.AddComponent<ChinarCamera>().pivot = transform;

        #endregion
    }

转载参考:https://blog.csdn.net/ChinarCSDN/article/details/80979275
合并前,未运行:

image.png
运行合并后:
image.png

原来Drawcall是51,运行后降低到了15,极大改善性能。

相关文章

  • 渲染优化-合并网格

    前提:物体使用同一个材质。很大情况下,材质不同是因为贴图的不同,所以通常还需要进行贴图的合并。合并步骤:1、把需要...

  • Android界面优化

    1.优化界面层次 针对可以合并的界面层次进行合并,减少界面的渲染,这个过程中主要使用的工具是开发者设置显示过度渲染...

  • 项目优化

    资源压缩 代码合并压缩 图片压缩 加载优化 ssr 首屏渲染,减少屏幕因为数据加载而闪动 懒加载loading占位...

  • 3DMAX学习-分离网格

    3D图形基本元素是网格,我们可以将两个网格合并成一个,也可以将一个网格分成两个。 之前说说过合并网格,我们这里只说...

  • 前端知识体系5.性能优化

    1.前端性能优化思路: 建立完善的开发规范,提高代码的渲染效率及可维护性。 压缩代码,合并代码,减少文件体积 减少...

  • 插件-资源

    Mesh Baker 工作原理是将网格与材质合并,降低DrawCall Texture:角色网格相似,可以将纹理合...

  • 前端性能初步优化

    性能优化有两个方向 优化页面渲染 减小页面体积,提升网络加载 优化页面渲染 对于优化页面渲染可以进行如下方案来进行...

  • IOS - UIView绘制流程 (displayLayer)(

    性能优化之 UI渲染优化 - 异步渲染 使用displayLayer进行异步绘制

  • iOS开发-视图渲染与性能优化

    iOS开发-视图渲染与性能优化 iOS开发-视图渲染与性能优化

  • iOS开发进阶:性能优化与稳定性优化实践

    页面卡顿原理与优化 离屏渲染原理与优化 复杂视图的渲染优化 崩溃监控方案

网友评论

      本文标题:渲染优化-合并网格

      本文链接:https://www.haomeiwen.com/subject/hcdeuktx.html