Unity - 性能优化实战02 - 模型设置优化

Unity模型导出导入流程

下图主要是美术需要在建模软件进行导出,并在Unity进行导入相关的流程,导出导入很重要,关乎在Unity的使用是否正常

DCC工具导出设置

Unity 支持多种标准和专有模型文件格式(DCC)。Unity 内部使用 .fbx 文件格式作为其导入链
  1. 导出FBX

  1. 优化原始导入模型文件,删除不需要的数据
  • 统一单位,这样可以保证在DCC中和Unity中的单位统一时也让资源目录难以管理
  • 如果需要导入Blend shape normals时,必须指定光滑组Smooth groups,当然也不是任何时候都需要这样
  • 建议导出时不携带如摄像机、灯光、材质等场景信息

  1. 原始模型影响性能点
  • 最小化面数,不需要微三角形面(一个三角面包含个位像素),三角面尽量分布均与
  • 合理的拓扑结构与平滑组,尽可能是闭包
  • 尽量少的材质个数
  • 尽可能少的蒙皮网格
  • 导出的网格必须是多边形拓扑,不能是贝塞尔曲线、样条曲线、细分曲面、NURBS(非均匀有理B样条)、NURMS等,因为这些在导入Unity后都不支持
  • 在导出之前确保所有变形体(Deformers)都烘培到网格模型上,如骨骼的形变烘培到蒙皮的权重上
  • 不建议模型使用的纹理随模型导出,这会降低Unity导入效率,同
  • 尽可能少的骨骼数量
  • FK与IK节点分离,导出时删除IK骨骼节点

  1. 模型优化
  • 尽可能的将网格合并到一起
  • 尽可能使用共享材质
  • 不要使用网格碰撞体
  • 不必要不要开启网格读写
  • 使用合理的LOD级别
  • Skin Weights受骨骼影响个过多
  • 合理压缩网格
  • 不需要rigs和BlendShapes尽量关闭
  • 如果可能,禁用法线或切线

模型导入设置

  • Mesh Compression :一般我们在保证网格准确的情况下,可以启用更激进的压缩方式,可以使网格磁盘空间占用的更小,注意运行时内存不会减少。开启后需要自行测试下
  • Read/Write:启动此选项会在内存中额外复制一份此网格,一个副本会保存在内存中,另一个副本会保存在GPU显存中。只有在运行时需要动态修改网格数据时才需要开启此选项。Skinmesh如果绑定骨骼动画也需要开启此选项
  • Optimize Mesh/Generate Colliders:一般保持默认,除非需要禁止优化或做网格级碰撞
  • 无动画时,取消勾选ImportAnimation
  • 无附加材质时,选择为None

UPR优化建议

  • 检查读/写标志:开启FBX资源的读/写标志会导致双倍的内存占用
  • 检查动画资源压缩方式:动画资源使用最佳压缩方式可以提高加载效率,对于不需要动画的模型来说,AnimationType直接选择None

  • 检查FBX资源顶点数:这个需要根据实际情况和美术沟通
  • 检查FBX资源骨骼数:这个需要根据实际情况和美术沟通
  • 检查动画资源的OptimizeGameObjects选项:如果AnimationType选择的是Humanoid,则应该勾选Optimize Game Objects


PlayerSetting设置

  • Vertex Compression:设置每个通道的顶点压缩,可为模型除位置、光照贴图、UV之外所有内容启动压缩
  • Optimize Mesh Data:可根据网格所启用的材质删除不必要的数据,如材质中没有使用到的切线、法线、颜色以及UV等

Memonry视图

  • Mesh占用为449.2M
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容