新浪博客

Unity对于导入模型动画的操作

2018-12-25 19:45阅读:
一、模型规范:

  • 对于Unity导入的模型,带有动画时,命名一般采取模型名@动画名的方式,如下所示:



Unity对于导入模型动画的操作


二、参数介绍:


  • 在Project面板选中模型后,在Inspector面板中选择Rig(装备)标签,我们可以看到Animation Type(动画类型
)属性分4种类型,分别是:
  1. None(无动画类型)
  2. Legacy(老动画类型)
  3. Generic(一般的,通常的动画类型)
  4. Humanoid(人类的动画类型)



  • 不同的动画类型在Animations标签下的内容也不同,如下图所示:


[Animation Type:None]


Unity对于导入模型动画的操作


[Animation Type:Legacy]


Unity对于导入模型动画的操作


[Animation Type:Generic]


Unity对于导入模型动画的操作


[Animation Type:Humanoid]


Unity对于导入模型动画的操作


  • 特别说明一下Animation Type为Huamanoid时的Animations属性:


Unity对于导入模型动画的操作


  • Import Animation:勾选后才可以导入动画到 Unity 工程中;
  • Bake Animations:这个选项只在使用 Humanoid 动画并且使用到了 IK 特性的时候才可用;
  • Anim.Compression:这个是关于动画压缩选项的
    1. Keyframe Reduction :默认,压缩关键帧,就是 Unity 会自行重采样动画的关键帧;
    2. Off :关闭动画压缩
    3. Optimal:最优化压缩
  • 当Anim.Compression为Keyframe Reduction 或者 Optimal 时,才会出现以下三个用于控制压缩选项的系数配置(这个三个参数默认都是 0.5,越小精度就越高,动画的失真度就越小):
    • Rotation Error
    • Position Error
    • Scale Error
  • 对于单个动画片段,我们可以执行以下操作:
    • Loop Time,勾选这个选项之后,该动画会循环播放,如果我们不勾选这个选项,动画播完后会定格在动画的结束帧,直到我们通过Animator状态机切换到其他的动画;

    1. Loop Pose:用于控制动画循环播放时,从结束帧切换到起始帧时,动画的动作是否可以无缝的衔接上;
    2. Cycly Offset:用于设置控制循环的时候起始帧偏移量
  • Root Transform Rotation :根节点旋转信息
    1. Bake Into Pose:勾选后,该物体的 Transform 中的 Rotation 值不会因为动画中物体做了任何旋转而发生改变。
    2. Based Upon (at Start) 或者 Based Upon,根节点旋转的参考基准;
      1. Original:动画文件中指定的旋转值
      2. Root Node Rotation:动画文件中指定的根节点旋转信息
    3. Offset:旋转角度与参考基准的偏移
  • Root Transform Position (Y) :根节点位移信息(Y轴)
    1. Bake Into Pose:勾选后,当我们的角色在场景中Y 轴上有位移时,例如向上或者向下移动,该角色的 Transform 中的 PositionY信息不会发生改变,会跟动画播放之前的 PositionY保持一致;
    2. Based Upon 或者 Based Upon (at Start):注意,在选中 Bake Into Pose 之后会变成 Based Upon (at Start),不勾选的时候是 Based Upon。
    3. Offset:垂直方向上的偏移;
  • Root Transform Position (XZ) :根节点位移信息(水平面,XZ轴)
    1. Bake Into Pose:勾选后,当我们的角色在场景中水平面上有位移时,该角色的 Transform 中的 PositionX、PositionY信息不会发生改变;
    2. Based Upon 或者 Based Upon (at Start):注意,在选中 Bake Into Pose 之后会变成 Based Upon (at Start),不勾选的时候是 Based Upon。
  • Mirror:左右镜像,比如一个动画是往左前方跑,勾选Mirror后,该动画网右前方跑。
  • Additive Reference Po:一个参考姿势。


实践一:对于一个翻转动画的操作:(规律:勾选Bake Into Pose后,角色还在进行自己的动作,Transform所对应的值不变
  • 当不勾选Root Transform Rotation的Bake Into Pose时:

Unity对于导入模型动画的操作 Unity对于导入模型动画的操作


  • 当勾选Root Transform Position (Y) 的Bake Into Pose时,角色不会记录第一次播放结束时Y的值,下一次播放都会从y=0处开始。但由于水平面上Root Transform Position (XZ) 未勾选Bake Into Pose,所以角色会一直向前,只是每次播放垂直面上会重置。



Unity对于导入模型动画的操作 Unity对于导入模型动画的操作


以下这个例子效果更好:


Unity对于导入模型动画的操作



  • 当不勾选Root Transform Position (Y) 的Bake Into Pose时,Transform.Position.y数值会变化,即角色会记录第一次播放结束时Y的值,下一次播放都会从Y值开始继续向上。


Unity对于导入模型动画的操作 Unity对于导入模型动画的操作


以下这个例子效果更好:


Unity对于导入模型动画的操作


  • 当勾选Root Transform Position (XZ) 的Bake Into Pose时:Transform的x、z值不变,但是角色还会在水平面上有位移,所以播放一次后,会回到原来的位置重新播放。(所以行走、跑步等循环动画不勾选)


Unity对于导入模型动画的操作 Unity对于导入模型动画的操作


实践二、对于一个Walk动画:


以Walk动画为例,在Project面板选中Walk动画,我们可以在Inspecter面板中预览Walk动画。我们会发现人物在行走过程中在x轴方向上有一定的偏移量,这时我们需要调整Offset偏移量,使Average Velocity(平均速度)属性在x轴的运动量为0。这样就可以保证人物模型沿着x轴直线跑动而不产生角度偏移了。


Unity对于导入模型动画的操作 Unity对于导入模型动画的操作


修改Offset参数:


Unity对于导入模型动画的操作 Unity对于导入模型动画的操作




我的更多文章

下载客户端阅读体验更佳

APP专享