美文网首页unity3D技术分享Unity游戏开发经验分享
Unity - 性能优化实战02 - 模型设置优化

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

作者: 能不写代码么 | 来源:发表于2023-08-07 12:28 被阅读0次

    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

    相关文章

      网友评论

        本文标题:Unity - 性能优化实战02 - 模型设置优化

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