2.2 Model导入设置及优化
2.2.1 Model导入流程
2.2.2 DCC中Model导出设置
- 统一单位;
- 导出网格为多边形拓扑,不能是贝塞尔曲线、样条曲线、细分曲面等;
- 在导出前确保所有的Deformers都烘焙到网格模型上;
- 不建议模型使用的纹理随模型导出(导致资源目录难以管理,并且降低导入效率);
- 如果需要导入Blend shape normals时,必须指定光滑组Smooth groups;
- 导出时不应当携带摄像机、灯光、材质等信息;
原始模型影响性能点
- 最小化面数(不应当通过增加面数而表现细节),不需要微三角形面,三角形面尽量分布均匀;
- 合理的拓扑结构和平滑组,尽可能是闭包;(避免烘焙错误和额外三角形面和顶点的产生)
- 尽量少的材质个数
- 尽量少的蒙皮网格
- 尽可能少的骨骼数量(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左右,因此,运行时模型内存的占用优化才是我们重点考虑的问题。
链接
|