上一回我们介绍了Unity2D Animation的骨骼绑定,这一回我们讲讲IK。
1. 什么是IK
IK是Inverse Kinematic的缩写,也就是反向动力学。是根据骨骼的终节点来推算其他父节点的位置的一种方法。比如通过手的位置推算手腕、胳膊肘的骨骼的位置。逆向动力学的过程在一些场景下十分有用,例如一个机械臂,你需要它去抓取一个放置在特定的空间位置的物体,那么就需要利用逆向动力学去计算出机械臂各个关节的旋转角度,进而驱动机械臂去抓取物体。与之对应的FK是正向动力学,是Forward Kinematic的缩写。正向动力学是根据父节点的运动来影响到子节点的位置的一种方法。
IK系统能够极大程度的提高角色行走,跳跃,跑步等动画的制作效果和效率,是骨骼动画系统不可缺少的一个功能。大多数的2D骨骼动画软件中都有IK系统,比如Spine,DragonBones等。Unity 2D Animation中也引入了IK系统。
2. 在Unity中安装IK插件
Unity2020版本及以上的版本中的2D Animation中内置了IK系统,所以不需要专门安装。Unity2019版如果想使用2D IK系统则需要安装插件。
打开Unity2019的版本,选择Package Manager包管理器,搜索IK,如果没有搜索到结果的话,需要将Package Manager设置为Preview预览模式。此时Unity会提示你是否确定使用预览包,点击确定。
打开预览包设置好了之后可以搜到IK插件,点击Install安装。
安装IK插件3. 给角色添加IK组件
在场景中创建一个空物体(Create Empty),将其命名为你的角色名称(Player),选中上一节中我们创建好的角色,将其拖入到这个空物体中。IK系统,以及后面要用到的Animation动画系统,都需要在这个空物体“壳子”上挂载组件,既方便管理有能够保证后面加入的别的组件不会影响到动画或者IK系统。
新建空壳在Player上添加组件——IK Manager 2D(2D反向动力管理器)。
添加IK组件添加完成后可以看到一个IK Solvers的列表,初始状态是空的(List is Empty),这个就是每一个IK关节的控制单元。
IK solvers点击左下角的加号,创建一个IK控制单元,选择Limb(肢体)选项,该选项对应了一般动物和人类的四肢,默认是控制两个骨节。而Chain(链条)则是控制多个骨节的单元,CCD是双向可动链条,FABRIK是单向可动链条。我们创建的是人物骨骼,所以选择Limb。
创建IK Solvers选择之后会创建一个新的节点New LimbSolver2D,我们先从左腿开始做IK,所以可以将此节点命名为LeftLegSolver。
创建Limb Solver然后选中左腿对应的骨骼,在这个骨骼上创建一个空物体作为IK控制的点。将这个点移动到肢端。
创建空节点选中上一步创建的LeftLegSolver,将刚刚创建的空物体拖入到Limb Solver 2D组件的Effector(作用点)中。
Limb Solver点击Create Target生成目标点。
创建Target生成好目标点后可以看到如下结果,左腿两节骨骼均有绿色的点,肢端上有圆圈,圈中也有绿色点。此时表明IK目标点就生成好了。点击目标点进行拖动,可以实现腿部的IK运动效果。
生成左腿的IK系统拖拽脚尖处的圆圈(Target)就可以实现如图显示的IK效果。
IK运动演示重复上述操作,添加其余三个肢体的IK Solver。需要注意的一点,当创建出来的关节反向了,需要点击下图右侧的Flip单选框,反转当前的关节。
反向关节四肢都添加了IK之后们就是如图显示的效果。
四肢都进行了IK绑定4. IK效果演示
在进行演示的时候一定要选中根节点骨骼进行移动,否则会将关节拉脱位。这样就能看到如下图所显示的IK动作了。
IK动作演示
网友评论