给纸偶绑骨骼,让它走起来

在纸偶的部件上画骨骼,用 IK 弯膝盖,打四个姿势,再把它们循环成一段走路。

要做出什么

  • 拆成部件的角色:每块一张 PNG,按侧面画好,关节对齐。本教程用一个面朝右的纸偶,共 14 块:头、躯干,以及两侧各一套大腿、小腿、脚、大臂、小臂和手。
  • 名字写明前后,从前往后编号:01 前手 … 14 后手。导入按名字排图层,近侧的四肢就在上面。
  • 支持 WebGPU⁠ (外部网站,在新标签页打开) 的浏览器,例如新版的 Chrome、Edge 或 Safari。

1. 导入部件

  1. 把整只纸偶作为一张图拖到空合成的开始卡片上,合成会采用它的尺寸,这里是 1080 × 1080。

  2. 把部件文件夹拖到上传文件上,选择导入 14 个。每块部件成为一个图层,位置和画的时候一样。

  3. 删掉整张图的图层,由部件代替它。

编辑器里纸偶的 14 块部件作为图层,叠成完整的人形
  1. 部件对齐拼成纸偶。
  2. 每块部件一个图层,前面的在上。

2. 先给身体一根脊梁

  1. 在项目面板底部选择新建图层,再选骨架。

  2. 选择骨骼工具(J),从髋部向上拖到脖子。这第一根骨骼带着整个身体,移动它就移动全部。

  3. 在查看器里点躯干,把它挂到这根骨骼上。

  4. 从脖子拖到头顶画第二根骨骼,再点头部。

从髋部开始而不是从头:走路时身体在髋部起伏、转动,带动全身的骨骼就该从这里出发。从选中骨骼上开始的拖动,会从它长出新骨骼。

3. 先绑远侧的四肢

  1. 在时间轴里用眼睛图标隐藏 6 块前侧部件和躯干。点击会挂上指针下最上面的部件,而前侧部件恰好盖住后侧的。

  2. 点躯干骨骼的末端选中它,从髋部拖到膝盖,再点后大腿。

  3. 接着从膝盖拖到脚踝,点后小腿和后脚。选中这根下段骨骼,在骨骼选项里选择添加 IK。

  4. 把后腿的三块部件也隐藏,再选中躯干骨骼,用同样的方法画后臂:肩到肘挂大臂,肘到腕挂小臂和手。

  5. 把所有部件重新显示出来。

时间轴里隐藏了前侧部件,后腿上画了两根骨骼,下段带 IK
  1. 前侧部件的眼睛,绑后侧时关掉。
  2. 后腿:髋到膝、膝到踝。
  3. 下段骨骼的选项,已加 IK。

4. 再绑近侧的四肢

  1. 选中躯干骨骼,在后腿上面再画一遍前腿:髋到膝、膝到踝。挂上前大腿、前小腿和前脚,给下段骨骼加 IK。

  2. 用同样的方法画前臂,挂上前大臂、前小臂和前手。

纸偶上的全部十根骨骼,选中最后画的小臂,它的选项在查看器顶部一行
  1. 骨骼工具。
  2. 十根骨骼:脊梁、头、两条腿、两条手臂。
  3. 属性面板里每根骨骼的位置、旋转、缩放与长度。

前侧骨骼和后侧的完全重合,指针下有两根骨骼时,选中后画的那根。先绑远侧,点在共用关节上时才会选到近侧的骨骼。

想检查一根骨骼,就用选择工具拖它关节处的圆环转一转:该跟着动的部件都会动,留在原地的就是挂错了骨骼。检查完撤销这次旋转。

5. 让膝盖向前弯

  1. 在属性里,每条 IK 链有一个目标,就是脚踝要到的位置。改它的 X,腿就弯过去够它。

  2. 两节的腿可以往两边弯。膝盖往后弯时,勾选翻转弯曲方向。纸偶面朝右,两条腿都要勾。

纸偶两脚分开,两个膝盖都向前弯,属性面板里两条 IK 链都勾选了翻转弯曲方向
  1. 前脚的 IK 目标。
  2. 翻转弯曲方向:膝盖改往另一边弯。
  3. 两个膝盖都向前弯。

6. 打四个姿势

  1. 一个走路循环是两步,每步两个姿势:接触,两脚分开都着地;经过,一条腿直立在身体下方,另一条抬起从旁边摆过去。

  2. 在第 0 帧输入下表第一个姿势的数值,再打开这些属性的秒表。依次到第 6、12、18、24 帧输入各个姿势,每次修改都会打一个关键帧。

  3. 第 24 帧就是第 0 帧,循环由此闭合。目标用骨骼图层的坐标:X 0 在髋部正下方,Y 435 是地面。

  4. 手臂和腿反着摆:前大臂(骨骼 9)第 0 帧 200°、第 12 帧 160°、第 24 帧 200°;后大臂(骨骼 5)正好相反。180° 是自然下垂。向前摆时让小臂多弯一点,显得比大臂慢半拍。

帧姿势前脚目标后脚目标骨骼 1 位置 Y
0接触,前脚在前80, 435−80, 43572
6经过,后脚抬起0, 4350, 39560
12接触,后脚在前−80, 43580, 43572
18经过,前脚抬起0, 3950, 43560
24回到接触80, 435−80, 43572
第 6 帧的经过姿势:后脚抬起越过着地的前腿,时间轴里是 IK 目标的关键帧
  1. 前脚在第 0、6、12、18、24 帧的关键帧。
  2. 第 6 帧前脚的目标:在髋部正下方。
  3. 后脚抬起,正在经过。

这些关键帧保持线性。着地的脚要匀速向后滑,正好抵消身体向前走的速度;缓动会让它在一步中间慢下来,脚就像在打滑。

7. 把循环接起来

  1. 对每个有关键帧的属性,选择它的 Σ 按钮,输入 loopOut("cycle")。

  2. 选择预览,再选应用。过了第 24 帧,属性会从第 0 帧重新开始,合成有多长就走多久。

前脚 IK 目标的表达式里输入了 loopOut("cycle")
  1. 表达式:重复这些关键帧。
  2. 预览之后应用。

这里有七个属性带关键帧:两个目标、髋部的位置和四个手臂的旋转。关键帧仍然可以改:改一个姿势,每一圈都跟着变。其他重复方式见表达式参考⁠ (在新标签页打开)。

8. 播放并检查

  1. 按空格播放,再用方向键从第 0 帧逐帧看到第 24 帧。

  2. 着地的脚贴着地面并匀速后滑。往下陷或悬空,说明它目标的 Y 不在地面上。

  3. 腿不会突然绷直。目标比腿能够到的地方还远时,腿被拉直,脚也离开目标:缩短步幅或降低髋部。

  4. 身体在接触时最低、经过时最高。没有这点起伏,纸偶就像在滑行。

  5. 每只手臂和同侧的腿反着摆:前脚在前,前臂就在后。

  6. 第 24 帧和第 0 帧一样。循环重新开始时跳一下,说明最后一个关键帧和第一个不同。

9. 导出

  1. 选择右上角的导出视频或图片,选一种格式:分享循环用GIF 动画,视频用 WebM 或 MP4。

  2. 导出整数个循环,例如起始帧填 0、结束帧(不包含)填 48,文件循环播放时就不会跳。

接下来可以做什么

  • 深入骨骼。骨骼链、父级、让脚保持水平,以及用网格弯曲图片。 角色绑定
  • 为什么用骨骼图层。一个图层里的绑定,和用图层加表达式搭出来的绑定有什么不同。 不写脚本的骨骼
  • 另一篇教程。从一张 AI 图里抠出角色,让它跳一跳。 把 AI 插画做成动画

接着看