Spine入门——IK约束

Spine?

Spine 是一款针对游戏的 2D 骨骼动画编辑工具。 Spine 旨在提供更高效和简洁 的工作流程,以创建游戏所需的动画。

本篇讲解 IK 约束,也就是大家期待已久的 IKPinning。此功能约束住 IK 链末 端,这样你可以通过操控父级反向驱动整条骨骼链。(好吧这也些都是屁话,其实 Spine 的 IK 约束只支持两根骨头,无所谓了。)

IK 约束本身没什么好讲的,不过官方就出了个演示视频,诈称以后会有更多细 节透露,不知道要等到几时,最近几天问这个的同学又比较多,就写出来大家分享 吧。这里通过两个简单的例子来演示 IK 约束的使用。

这个 IK 约束的功能,有点打补丁的感觉。不 MAYA,3DMAX 里的有点不同。 下面细说。

这里有你需要的资源

例 1 手臂

创建 IK 约束:

  1. 创建大臂,小臂:uparm, arm 这很简单。

  2. 创建用于固定的 IKpin 骨骼。这里要注意了,Spine 的实现方式有点怪异,竟 然是创建一个骨骼来做为固定点。这样这个用于固定的骨骼,就要不这条骨链 的父级平级戒高级,反正不能作为骨链的子级。(注意 IKpin 不 uparm 是平级 的都在 root 下。这里的两个骨骼图标不同,十字星的意思是长度为 0 的骨骼。 只是显示不同罢了)

  3. 创建 IK 约束,Spine 的 IK 约束只支持两根骨骼(可以不相临,但必须在一 条骨链上)

    首先:选中 uparm, arm,在层级树中点 Constraints 节点,下方出现创 建按钮“New IK Constraint”。想毛,点它。

    其次:这时,提示你选一个约束目标,点选 IKpin。弹出一个命名窗口,为 新创建的约束起个名字,我就取了个 ikpin 。好了,现在就完成创建了。

    最后:IK 约束创建完了,不过我想可能有的同学会发现,FKIK 不能无缝转换。 问题是这样的,你的 IKpin 骨骼位置没有完全匹配 arm 的末端关节处。具体怎么 才能匹配呢,其实也很简单,你可以先把 IKpin 放到 arm 下,成为 arm 的子物 体。然后把坐标系 Axis 换成父级 Parent,然后把 IKpin 的旋转位移全清零。(此 时 IKpin 就不 arm 完全重合了)现在选中 arm 在层级树下方的属性面板中看下 它的长度 Lengthnt,我这里是 103.0,那么把 IKpin 的位移 X 设置 103.0,IKpin 现在就在 Arm 的末端了。(其实这里也就是 hand 的所在不是么。哈哈)最后, 把 IKpin 拖到 root 下,把坐标系 Axis 换回世界 World。我习惯性的把旋转清零 了。得到如下效果,横平竖直,嗯!孤王龙颜大悦。哇哈哈哈哈

    (注意:其实像手臂、腿这种骨骼链,子骨骼最好都只有一个方向的位移, 通常也就是 X,保证 Y 为零。这样当 X 位移值不父级骨骼长度一样时,这两根骨 头,就正好首尾相连在一起。另外,通常我习惯绑定时,尽量把值设为整数,这 样动画时有一个好的开始,不是么^_^)

    这是 hand 的位置,其实把 hand 复制一份放到 root 下改下名就是 IKpin 了

使用 IK 约束:

  1. FKIK 融合:选中 IK 约束,这里会显示一个混合属性 Mix。为 0 时骨骼是完 全 FK 状态,100 时完全 IK 状态,中间值,则是 FKIK 两种融合的效果。(这 个不多废话,你左右滑两下就看明白了。两种状态下骨骼和约束图标也有 变化,以提示当前的状况。)

    弯曲 Bend,这里有一个属性控制骨链弯曲的方向,比如我们的肘部,只会 向一面弯,当你把手臂拉成平的直线,下次再弯曲时,Spine 就是通过它 来知道向哪边弯。(同理,点两下看看效果就知道了。)

  2. 来到动画模式下,ikpin 前的小点亮了,没错,我们可以对 Mix 和 Bend 值 K 帧。我相信大多数人就只是想定个脚吧,那更简单了,不用动它就是了。 哈哈。

例 2 官方演示里那只鸟腿

上面已经说的差不多了,这个就主要演示吧。

  1. 创建腿骨骼和 IK 约束骨点,腿的层级很好理解。约束骨点 toePin 不 upLeg 平级都在 hip 下。至于为什么 toePin 和 footPin 要这样设置层级,这是骨 骼绑定中很基础的一些逻辑,自己思考一下吧。

    创建 footpin 约束,如果发现关节翻转,选中 footpin,改变 Positive 属性。

    创建 toepin 约束

  1. 脚指扣地。很好,这样就创建完成了,不过有个小节约,演示中当 toepin 旋转时,脚指 toe 骨骼是不会转动的,就是垫脚的效果。我们来处理这个 问题,选中 toe 在层级树的下方属性面板中,去掉继承 inherit 中的旋转 Rotation,这样 toe 就不会跟着父级骨骼转动了,实现了脚指扣地的效果。

标签: spine

?>