URP渲染管线场景优化实战 2.2静态资源导入及优化——Model

2.2 Model导入设置及优化

2.2.1 Model导入流程

在这里插入图片描述

2.2.2 DCC中Model导出设置

  1. 统一单位;
  2. 导出网格为多边形拓扑,不能是贝塞尔曲线、样条曲线、细分曲面等;
  3. 在导出前确保所有的Deformers都烘焙到网格模型上;
  4. 不建议模型使用的纹理随模型导出(导致资源目录难以管理,并且降低导入效率);
  5. 如果需要导入Blend shape normals时,必须指定光滑组Smooth groups;
  6. 导出时不应当携带摄像机、灯光、材质等信息;

原始模型影响性能点

  • 最小化面数(不应当通过增加面数而表现细节),不需要微三角形面,三角形面尽量分布均匀;
  • 合理的拓扑结构和平滑组,尽可能是闭包;(避免烘焙错误和额外三角形面和顶点的产生)
  • 尽量少的材质个数
  • 尽量少的蒙皮网格
  • 尽可能少的骨骼数量(CPU和GPU双性能瓶颈)
  • 原始模型中的FK与IK节点分离,导出(Unity不支持导入的IK骨骼,做好分离方便导出时删除IK骨骼节点)

2.2.3 Unity导入设置

Scene属性中

一般而言,图中的所有属性都不需要勾选:
在这里插入图片描述

Mesh属性中

  • 尽可能的将网格合并到一起(Mesh Compression)
    • 一般制作规范的模型出错的概率更小
    • 一般闭包的模型出错的概率更小
  • 禁用读写选项(Read/Write)。启用后会在内存中额外复制一份此网格,一个副本会保存在内存中,另外一个保存在GPU显存中,只有在运行时需要动态修改网格数据时需要开启此选项,另外SkinMesh也需要开启此选项。
  • 尽量不要使用网格碰撞体。即:保持Optimize Mesh 和 Generate Colliders关闭。

Geometry属性中

  • Index Format选项,如果顶点数不超过65535,可以使用16位索引;
  • 如果不使用法线或切线信息,可以尝试直接关闭另外的所有选项;
  • 如果不需要光照烘焙,可以关掉第二套光照UV生成;
  • 使用合理的LOD级别;
  • 合理压缩网格;
  • 不需要rigs和BlendSHapes尽量关闭;
  • 如果可能,禁用法线或切线;

2.2.4 资源检查报告——FBX部分问题解读

  • 检测标准中的500个顶点数过于严苛,可以忽略;
  • 两项建议与模型动画有关,而测试项目中所有模型资源都不涉及动画,
    • 可以将Rig标签下的Animation Type设置为None;
    • 并关闭Animation标签下的Import Animations选项,
    • 设置Materials标签中的Material Creation Mode为None。
  • 开启Project Settings =》Player=》Optimization下的
    • Vertex Compression(对每个通道的顶点压缩,可为模型除位置,光照贴图UV所有内容进行压缩)
    • Optimize Mesh Data选项(可根据网格使用的材质对没有用到的数据进行删除,如材质中没有使用到的切线,法线,颜色,UV等)

2.2.5 优化成果

在这里插入图片描述
将所有的模型转变为上述导入设置后,包体大小减少77MB:
在这里插入图片描述

  • 运行时模型内存中加载量减小,优化的空间在于运行时CombinedMesh开销的节省。后期运行时模型资源优化才是重点。

在这里插入图片描述

在这里插入图片描述
在上述设置下,内存总体占用减小大约100M,主要优化应该来源于Mesh Compression。
场景中的模型资源较少大约在50MB左右,但是在内存中占用在300MB左右,因此,运行时模型内存的占用优化才是我们重点考虑的问题。

链接


版权声明:本文为weixin_42221907原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。