[Unity优化]资源导入设置--3D模型

本文转自:https://blog.csdn.net/ecidevilin/article/details/76616690,有个人轻微修改,请点击链接查看原文,尊重楼主版权。

Unity模型资源导入设置

如下图,是一个模型的导入设置:

[Unity优化]资源导入设置--3D模型_第1张图片

首先是Model切页:

  • Mesh网格设置:

  • Scale Factor:缩放因子,不同的建模程序生成的模型文件,尺度单位不同,为了在U3D里统一,就需要进行缩放。

  • 模型文件的缩放因子:
  • .fbx, .max, .jas, .c4d = 0.01
  • .mb, .ma, .lxo, .dxf, .blend, .dae = 1
  • .3ds = 0.1

  • File Scale:文件的默认缩放值。

  • Mesh Compression:网格压缩,会导致失真。官方的想法是,尽可能的压缩网格,只要模型看起来不至于太奇怪。

  • 检查Read/Write Enabled是否开启(优化时要注意的)
    开启Read/Write Enabled一般是用于运行时修改Mesh的顶点数据,开启这个选项会导致Mesh的内存占用翻倍。因此如果项目中不需要在运行时修改这些Mesh数据的话,我们建议把这个选项关闭。

  • Optimize Mesh:优化网格,如果开启,网格的定点和三角形会按照U3D既定的一套规则重新排序用以提高GPU性能。

  • Import BlendShapes:导入BlendShapes(用于表情动画)。

  • Generate Colliders:生成碰撞体。

  • KeepQuads:保持四边形,不转换为三角形。我们在U3D中使用的网格,大部分是把所有的面都转换成了三角形,但是某些特定的需求下,四边形会得到更好的效果,例如Tessellation shaders(细分曲面着色器)。

  • Swap UVs:交换uv,如果有光照贴图的对象UV通道不正确,则使用本项。会交换主uv和光照贴图uv(uv2)。

  • Generate Lightmap UV:为光照贴图生成UV。如果开启Generate Lightmap UV,会在该选项下面多出四个参数。

  • 关于这些参数的含义,可以参考这里

  • Normals:法线:
    Import:从文件导入。
    Calculate:根据平滑角度(Smoothing Angle)计算。
    None:禁用。

  • Tangents:切线(以及次法线):
    Import:从文件导入,前提是法线也是导入的。
    Calculate Tangent Space:计算切线空间。
    Calculate Legacy:计算切线。
    Calculate Legacy – SpliteTangents:如果法线贴图的光照被网格上的缝隙破坏,则选用此项。

  • Import Materials:是否导入材质。如果否,则不生成新的材质,默认使用“Default-Diffuse”。

  • Material Naming:材质命名方式。

  • Material Search:材质搜索方式。

然后是Rig切页:

[Unity优化]资源导入设置--3D模型_第2张图片

  • Animation Type:动画类型。
    None:无。
    Legacy:传统的。(Animation)
    Generic:一般Mecanim动画。
    Humanoid:人形Mecanim动画。

  • 检查Animation Type有没有设置成None(优化时需要注意的)
    Unity默认的Animation Type是Generic,对包含动画数据的FBX文件是适用这个选项的。但是如果FBX文件中没有包含动画数据,而只是普通静态Mesh的话,设置为Generic会导致引擎自动为这个Mesh的GameObject添加一个Animator组件,导致不必要的消耗。因此对于不包含动画数据的模型文件,我们建议把这个选项设置为None。

  • Avatar Definition:皮肤定义。
    Createfrom thismodel:从模型创建。
    Copyfrom other avatar:复制其他皮肤设置。(配置Avatar)

  • Root Node:根节点。(Generic)

  • Optimize Game Object:优化游戏对象,开启此项,可以优化有动画的角色的性能。

最后是Animations页签:

[Unity优化]资源导入设置--3D模型_第3张图片

  • Import Animation:是否导入动画。

  • Bake Animations:用于反向动力学(IK)和拟态。只对Maya,3dsMax &Cinema4D文件有效。

  • Resample Curves:重采样动画曲线。(详细解释可以参考AnimationClip中的对应设置)

  • Anim. Compression:动画压缩。
    Off:不压缩。
    KeyframeReduction:减少关键帧,移除相似的关键帧。
    KeyframeReduction and Compression:减少关键帧并压缩Clip数据。(Legacy )
    Optimal:最优化,(GenericorHumanoid))。

  • Rotation Error:旋转误差(度数)。

  • Position Error:位置误差。

  • Scale Error:缩放误差。
    (注:当对动画进行优化的时候,会根据以上三种来对动画进行删减。)

  • Clips:动画剪辑。

当Rig页签选择的Animation Type选择Legacy时,Animations页签稍微有些变化:
[Unity优化]资源导入设置--3D模型_第4张图片

其中Wrap Mode代表动画的循环模式,如果不是Default会覆盖掉所有Clip的循环模式:
Default:默认,根据Clip的模式。Once:只播放一次。Loop:循环。PingPong:结束之后,倒着播。Forever:结束之后,循环播放最后一帧。


代码自动设置模型导入选项:

资源导入后可以根据需要手动修改上述参数,也可以创建监听脚本,在资源导入后自动统一使用预定义的格式批量处理设置。

脚本继承至AssetPostprocessor, 存放在Editor目录下!
具体可参考:https://blog.csdn.net/qq_33337811/article/details/78879686

例如:放于Editor文件夹下的:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ModelPost : AssetPostprocessor
{
    void OnPreprocessModel()
    {
        Debug.LogError("prepare model");
        ModelImporter importer = (ModelImporter)assetImporter;
        importer.isReadable = true;

    }

    void OnPostprocessModel()
    {
        Debug.LogError(" model ok");
    }

    void OnPostprocessAllAssets()
    {

    }
}

可以设置的选项可参考https://docs.unity3d.com/ScriptReference/ModelImporter.html

你可能感兴趣的:(游戏优化)