AEJoy —— 表达式之反向动力学(Inverse Kinematics)【三】【JS】

188 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

效果图

一个使用反向运动学表达式进行绑定的 “cut out” 人物的例子

099.gif

设计

一旦你有了锚点,定位身体部分并建立父子级关系。你要让躯干成为上肢的父级,上肢成为下肢的父级,下肢成为肢端的父级。然后你需要添加效应器层。我使用了 10x10 的纯色层(不要忘记制作这些指导层- 图层 > 指导层)。定位效应器层,使它们处于与肢端锚点相同的位置。现在留着没有父级的效应器(我们很快会回到这一点)。下图显示了我的角色各个部分的父子关系:

image.png

注意,我给角色的身体部分命名是参考我的左右,而不是角色的左右。这解释了为什么代码将左臂定义为逆时针弯曲(如果您想知道的话)。我发现这么标记更容易理解,但如果你觉得另一种方法更好的话,你也可以用其他方法。

下面是一个完整装配(添加了效应器层)的角色的示图:

注意:“ effector” 层(橙色点)用于放置手、脚*

image.png

一旦你完全绑定了角色,你可能想要锁定肢体和肢端层。这样当你试图移动效应器层时,你就不会意外地选择它们。

剩下要做的就是将表达式添加到每个上肢和下肢部分的旋转属性中。粘贴表达式后,确保编辑顶部的 6 个变量,以对应该肢体部分的图层名称、该肢体部分是否按顺时针方向旋转、以及该表达式是否用于上部的肢体。如果你已经正确地做了所有的事情,你应该能够移动效应器来定位四肢。这样设置的一个副作用是,如果你移动躯干,效应器不会移动(因为它们不是任何东西的父级)。这意味着当你移动躯干时,手腕和脚踝将尝试保持它们当前的位置(尝试一下 —— 很有趣!) 这可能有些作用(特别是对于脚),但当你移动躯干时,如果你想要角色保持它的姿势,你可以简单地 parent 效应器到躯干。下图显示了移动躯干的效果,首先(左侧)是效应器没有父级,然后(右侧)是手效应器以躯干作为父级:

image.png