当前位置:   article > 正文

Unity---动画系统学习(6)---Avatar Mask动画融合、Layers动画分层、IK反向动力学

new avatarmask

1. 介绍

Avatar Mask(动画融合)

前面我们一直介绍的都是动画混合,一般用于解决边跑边转弯的问题。而动画融合一般用于解决例如边跑边挥手的问题。
简单说就是让跑步去控制腿的骨骼,挥手控制手的骨骼,两个动画融合在一起来播放。

右键新建一个Avatar Mask,Inspector只设置两只手臂的IK。
1355434-20190427161028165-1105931527.png

Layer(动画分层)

状态机的左侧新建一个Layer层用于控制搬木头
1355434-20190427161334843-647674481.png
Weight:权重
Mask:骨骼遮罩
Blending:有重写和添加,如果上一层也对手臂有操作操作的话,下一层的添加就无效了
IK Pass:是否使用IK

IK(反向动力学)

IK可以设置5个部位:头、左右手、左右脚
是一种根据骨骼的终节点来推算其他父节点的位置的一种方法。
比如搬木头,就不能让手的位置一直放在一个地方,因为Idle动画时,手也会乱动。这时我们就需要把手一直放在木头上来控制握持位置。

2. 实现

当未用Ik动画,而是只用分层来融合两个动画时,效果是这样的,如果人物不动效果也看不出来什么区别。
但一旦人物运动,就穿模了,可见这样是不行的
1355434-20190427163005437-545907456.gif

使用IK

  1. 设置好如上图一样
  2. 把木头放在大概头的位置
  3. 在人物的子物体手臂位置新建两个空物体命名左右手,并在场景中,先放在大概要搬木头的头的位置

3. 代码

OnAnimatorIK方法是Unity自动调用的,每一层Layer每一帧都会调用,方法名不能改变。

anim.SetIKPosition(AvatarIKGoal.LeftHand, leftHand.position):此方法挺好理解的,就是把手的位置放在某个地方

  1. //unity调用的,哪一层勾选了哪一层每帧都会去调用,layerIndex是哪一层勾选了0-1-2-3
  2. private void OnAnimatorIK(int layerIndex)
  3. {
  4. if(layerIndex == 1)
  5. {
  6. int weight = anim.GetBool(isHoldWood) ? 1 : 0;
  7. //说明当前是被Hold Wood这一层调用的
  8. //把某个骨骼设置在某个位置上,左手,右手
  9. anim.SetIKPosition(AvatarIKGoal.LeftHand, leftHand.position); //设置手的位置
  10. anim.SetIKRotation(AvatarIKGoal.LeftHand, leftHand.rotation); //设置手旋转一样
  11. anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, weight); //设置位置权重
  12. anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, weight); //设置旋转权重
  13. anim.SetIKPosition(AvatarIKGoal.RightHand, rightHand.position);
  14. anim.SetIKRotation(AvatarIKGoal.RightHand, rightHand.rotation);
  15. anim.SetIKPositionWeight(AvatarIKGoal.RightHand, weight);
  16. anim.SetIKRotationWeight(AvatarIKGoal.RightHand, weight);
  17. }
  18. }
  19. //最后在运行游戏的时候微调左右物体的位置和方向,来让手的位置效果最好

使用IK后的效果,可以看到手和木头很好的融合在了一起
1355434-20190427164305007-574855258.gif

转载于:https://www.cnblogs.com/Fflyqaq/p/10779273.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/117867
推荐阅读
相关标签
  

闽ICP备14008679号