实验笔记:IK 骨(IK Bone)的二三事

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:岸田夏海MK2

想给某个模型的尾巴补 IK 骨的时候四处翻教程没翻到,最后还是在 dA 上才翻到一份写的相对详细的版本。

想给某个模型的尾巴补 IK 骨的时候四处翻教程没翻到,最后还是在 dA 上才翻到一份写的相对详细的版本。

这次说说 PE 里的 IK 骨,虽然现在有不少好用的 IK 辅助插件(IKmaker,以及之前专栏提到过的一键生成视线 IK / 腕 IK 等),不过有的时候,为了特殊需求还是得自己动手。

友情提示:

本文更倾向讲解过程与原理,因此如果只是为了那几个经常用到的 IK(左足IK、右足IK、左つま先IK、右つま先IK)的话,可以用偷懒的方式跳过这一步:

在有腿部骨骼(左足→左ひざ→左足首、右足→右ひざ→左足首)的目标模型上导入一套 MMD 标准骨骼的 pmx,然后把几个 IK 骨移到对应腿部骨骼的位置即可。

个人用的自带 IK 的 basic bones,如果没有的话从 tda 之类的模型里拆一个出来,或者根据自己的习惯做一个,改模的时候能方便不少。

或者更简单粗暴点,用 PE 开个有 IK 的模型看看别人是怎么设置的,基本也就会做腿部 IK 了。

好了,正文开始。

IK—Inverse Kinematics(反向运动)

IK 骨的作用但凡接触过 3D 软件的基本都知道,也在游戏里或多或少的见过,

比如将手伸到某个地方,或者将脚停在台阶上(而不是直接一脚踩下去导致穿模)

真没见过的话,随便开个找个模型的 IK 骨位移一下就知道了。

而其最终的作用,就是通过计算一连串骨骼的旋转 / 位移,从而让这一系列骨骼的末端尽可能的落在 IK 骨的位置上。

接下来让我们打开 PE。

在开始之前,首先确认一下要做的 IK 序列与目标骨骼——哪些骨骼的旋转会受到 IK 骨的影响,以及最终以哪个骨骼的位置进行定位。

IK 序列里不能包括全亲骨或者其他类似的全模型定位骨骼,原因后面会提到。

这里就以一组简单的骨骼做示范。

每个骨骼的亲 bone 均为位于其上面的那个骨骼:

这次以最上面的 bone0 到 bone3 为 IK 序列,以 bone4 为目标骨骼做个 IK。

那么,先开始创建 IK 骨:

直接对着目标复制,从而追加一个同位置的骨骼。

一般情况下,IK 骨的位置是和目标骨骼重合的,和目标骨骼不放在一起也可以,但是在预览的时候(MMD 里和 TransformView 里)会直接显示 IK 演算完毕的结果。

注意:新复制出来的骨骼不继承原骨骼的权重,因此建议在复制完之后立刻将新骨骼改名以便区分,如果搞错顺序,导致最后带权重的原骨骼做 IK 的话...emmmm...

为复制出来的新骨骼勾上 “性能” 里所有的选项。

把序列里的所有骨骼用 index copy 的功能复制到右边的栏位里,PE 里经常会和这个功能打交道:

当心别把目标骨骼也复制进去。

这一步之后,被复制到右侧的所有骨骼都会在视图中变成橙色:

空 IK 骨和对应序列创建完成,接下来就是让它起效果。

将视线移向右侧:

Target: 基本上就是和 IK 骨同一位置的目标骨骼,也就是位于最下面的 bone4。

Loop: 用来计算骨骼旋转的循环次数,loop 越高结果越精确(最终偏移会更小),一般都写个 20 或者 40 之类的。(这个属性不理解也没什么问题,只要知道小了会导致骨骼瞬移就行了)

单位角: 进行上述计算的偏移角范围,如果调小了就会让骨骼旋转的幅度相对应的变小,这一项根据需要调节。

在上一步生成 IK 骨的时候,默认的单位角是 57.29578°,可以发现这个角度就是弧度制下的 1 rad=180°/π≈57.3°,因此如果对 IK 序列骨的旋转幅度没有需求的话,单位角基本选用该值的倍数——这也就是为什么不少模型都在足IK和つま先IK两个 IK 上的单位角分别为 229.18°(4rad) 或 114.59°(2rad) 的原因。

接下来看向下面 Link 区域的 “角度限制”,把“角度制限” 这个按钮点亮,才能让限制生效。

和 joint 的角度限制一样,两个空格分别为最小值和最大值,根据需要调节,如果在单位角较大的情况下,角度限制不合理会导致相当鬼畜的效果。

角度限制旁边那个按钮可以快速一键清零,小 心 手 滑

与此同时,为了让其他骨骼移动的时候 IK 相关骨骼不进行移动,需要将 IK 的亲骨骼设为 root 或者其他可以定位的骨骼,依旧以常见的足 IK 为例:

足(左 / 右足IK),序列为 “左 / 右足”→“左 / 右ひざ”,target 为 “左足首”,亲骨骼为 “全ての親”,角度制限 - 180°~-0.5°

脚尖(左 / 右つま先IK),序列为 “左 / 右足首”,亲骨骼为 “左 / 右足IK”,无角度限制

因为左 / 右足的亲骨骼都为 “下半身”,而下半身的亲骨骼是 “センター”,所以在センター移动的时候,亲骨骼为全ての親的足部 IK 没有移动,从而为脚进行了定位。

一边调的同时一边在 TransformViewer 里预览效果:

于是一个简单的 IK 骨就做好了。

操作很简单,常见的腿部 IK 的设置基本只要几分钟就可以解决,长一点的也差不多,比如作为本次专栏的头图的超长骨骼:

其他地方的应用也同样如此——

比如一开始提到的,萝莎莉亚小姐的尾巴。

多调调,多改改,基本就能熟悉这个东西。

评论