【Unity3D】Mecanim 盲点学习记录(一)--Animator Controler Component

Layers :动画分层

【Unity3D】Mecanim 盲点学习记录(一)--Animator Controler Component_第1张图片

作用:Unity使用“动画层”来管理身体不同部分的复杂状态机。比如:你可以使用下半身(动画)层来管理走动/跑动;使用上半身(动画)层来控制投掷/设计动作。

Weight:动画层的权重,多个层时可以设置,权重取值0-1,默认的Base Layer必须为1。如果设置为0则当前层的动画不会播放,1则会播放,0-1之间会采用混合播放动画。

Mask:指定该层使用的身体蒙皮。在Create>Avatar Mask中可以创建。

Blending:动画混合方式;

  • Override:覆盖,表示当前层的动画会覆盖掉其它层的动画;
  • Additive:添加,表示当前层的动画的量添加到其它层的动画;

Sync:有些时候在不同层中能够重用一些 相同的状态机 是很有用的。比如:如果你希望模拟一个“负伤”的行为,并且这个“负伤”的动画是为代替走动/跑动/跳动中“健康”(的动画)。你可以点击某个层上的“同步”(Sync)复选框,并且选择你希望同步的那一层。这样的话,这些状态机结构将会保持一致,但是实际的动画剪辑会有区别。

勾选 Sync 选项后,会出现以下功能选项:

  • Timing:

    • 当前层和Souurce层同一个状态使用的动画时间长度不一致时,不勾选复制的层按Source层的时间播放(效果就是复制层动画可能会变快或变慢,Source层动画播放速度不变),勾选则Source层按复制层的时间播放(效果就是Source层动画可能会变快或变慢,复制层动画播放速度不变)。
    • 下图中默认的剪辑长度是90帧,而同步层的剪辑长度是299帧。如果同步层的剪辑长度不一致,同步层的动画剪辑长度就为90帧,就会出现加速的现象,如果勾选Timing,则会不受被同步层的帧数影响,会按照当前动画剪辑帧数播放
    • (左边是开启Timing,右边是未开启)

    【Unity3D】Mecanim 盲点学习记录(一)--Animator Controler Component_第2张图片

  • SourceLayer:
    • 指定被同步层,设定后当前层的状态会和指定层完全一致或完全同步,但是我们仍然可以修改同步层某一个状态的动画剪辑。

IK Pass:表示启动IK动画

  • IK(Inverse Kinematics) 即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学),而 FK 则倒过来,由骨骼子节点带动骨骼父节点,具体情况比如人物走路踩到了石头就需要由脚的子节点来带动全身骨骼做出踩到石头的响应。
  • 控制IK的脚本必须添加到 OnAnimatorIK 方法中才会生效。
  • 在需要用到IK的动画的属性窗口(Inspector)中,对于要使用IK的动画状态勾上 Foot IK 选项

Parameters:动画参数

Trigger:本质上是一个bool类型的参数,但是其值默认为false,且设置为true后系统会自动将其还原为false


动画状态界面

【Unity3D】Mecanim 盲点学习记录(一)--Animator Controler Component_第3张图片

Mirror:镜像可以反转当前动画
Cycle Offset:周期偏移,会影响动画开始的起始位置
Paramter:勾选后可以指定参数控制具体属性
Write Defaults:勾选后用默认动画剪辑属性覆盖到状态上
Foot IK:勾选上之后会有一个脚部IK修正


BlendTree混合树

【Unity3D】Mecanim 盲点学习记录(一)--Animator Controler Component_第4张图片

(暂时只记录一维混合树)

TimeScale时间缩放:可以使用动画速度数字字段(顶部具有时钟图标的列)改变动画片段 (Animation Clip) 的“自然”速度,从而可以通过使用值 2.0 作为速度,使行走速度是以前的两倍。调整时间尺度 (Adjust Time Scale) > 均匀速度 (Homogeneous Speed) 按钮可重新调整片段的速度,以便它们符合参数的最小值和最大值,但是保持最初具有的相同相对速度。
Mirroring镜像:可以通过启用最右侧的镜像开关来镜像运动列表中的任何类人动画片段 (Animation Clip)。此功能使您可以采用原始形式和镜像版本使用相同动画,而无需两次使用内存和空间。

Compute Thresholds:计算阈(yu)值
下拉菜单会从当前动画片段中的根运动获取的数据选择来设置阈值。可供选择的数据有速度 (speed)、速率 (velocity) x、速率 (velocity) y 或速率 (velocity) z 以及角速度 (angular speed)(以度或弧度为单位)。如果参数 (parameter) 对应于这些属性之一,则可以使用计算阀值 (Compute Threshold) 下拉菜单计算阈值。
注意,仅当所有运动都是动画片段 而不是子混合树时,调整时间尺度 (Adjust Time Scale) 下拉菜单才可用

属性: 功能:
速度 (Speed) 根据各个运动的速度(速率的量级)设置其阈值。
速率 X (Velocity X) 根据各个运动的速率 (velocity) x 设置其阈值。
速率 Y (Velocity Y) 根据各个运动的速率 (velocity) y 设置其阈值。
速率 Z (Velocity Z) 根据各个运动的速率 (velocity) z 设置其阈值。
角速度(弧度)(Angular Speed (Rad) 根据各个运动的角速度(以弧度/秒为单位)设置其阈值。
角速度(度)(Angular Speed (Deg) 根据各个运动的角速度(以度/秒为单位)设置其阈值。

也就是说,例如您的行走动画每秒行进 1.5 个单位,慢跑动画每秒行进 2.3 个单位,而奔跑动画每秒行进 4 个单位,那么从下拉菜单中选择速度 (Speed) 选项会根据这些值设置三个动画的参数范围和阈值。 因此,如果将速度参数设置为 3.0,则它会混合慢跑和奔跑动画,略偏向于慢跑。


参考资料:
https://docs.unity3d.com/Manual/AnimatorControllers.html
http://docs.manew.com/Components/class-BlendTree.html
https://www.cnblogs.com/hont/p/5099213.html?utm_source=tuicool&utm_medium=referral
Layers : http://blog.csdn.net/cbbbc/article/details/59109301
IK : https://www.cnblogs.com/hammerc/p/4829943.html
BlendTree : http://blog.csdn.net/yupu56/article/details/53585304


你可能感兴趣的:(unity3d)