本笔记是对于 @岸田夏海MK2 大佬的文章动捕/游戏动作部分当中的“IK骨”这一块内容的个人研究。

本文章并非教程,只是一个记录了自己研究过程的笔记,并且我不保证适配于任何的无IK骨动作的动捕数据。

(其实研究这玩意儿的主要原因还是因为MotionSupporter的IK动作生成功能所整出来的IK骨动作经常出现腿抖一类的毛病)

鸣谢

@Kimochi@Harry@Seto:开服早期就进行了Project Sekai数据提取的大佬们,解答了我对于动作提取和后期处理这方面不少的疑惑。

@Nuthouse01: IK骨动作烘焙脚本的编写者,同样编写了大量实用的pmx与vmd的处理脚本。

下面是脚本的仓库地址:https://github.com/Nuthouse01/PMX-VMD-Scripting-Tools

过程

首先,你需要一份已经基本处理完毕并可以套用在mmd模型上正常使用的无IK骨动作(仅有FK骨动作)的动捕数据。

这一类数据一般都是游戏内提取得到的,如果不知道要怎么提取并转换的可以参考@岸田夏海MK2的这篇文章进行操作。
(补:其实还有利用动捕设备捕捉出来的动作数据)

同样的,你还需要两份模型。
一份是你测试动作时所套用的,来自同游戏的改模,在套动作的时候不应该出现不适配的弹窗。
另一份是带有IK骨的一般模型,Sour,YYB,TDA都可以。
在以上条件全部具备之后,就可以进行接下来的步骤了。

首先,你需要清楚这份动作使用的FK骨骼有哪些,以及具体的帧范围。
用我所转换的Noman来举个例子:

这份数据使用了左右足骨、左右ひざ骨和左右足首骨这六个骨骼,帧范围是从0到3149帧。
在确认完这些后,运行graphic_user_interface.exe,
在上方的选项卡中选择make_ik_from_vmd.py,
之后点击RUN来执行脚本。
界面长这样
首先选择你需要烘焙ik骨动作的vmd文件,

之后选择转换动作时使用的游戏模型,记为模型X;

再然后选择带有IK骨的模型,记为模型Y;

如果一切顺利的话,你应该能看到以下的弹窗:

现在,你需要将模型Y中的IK骨骼和它所对应连接的骨骼(这些骨骼在模型X中当然也要存在并且有帧数据)关联起来。
具体要连接哪些骨骼可以在PE当中IK骨面板内的“link”区域找到 。
在这里
按照(IK骨名称/需要连接的骨骼名)这样的格式填入即可。
(就是不能一次性全输完很麻烦)
需要注意的是:只有出现了如下图所示的“ACCEPT”信息才说明你的IK骨正常关联上了,出现其他的任何信息都为关联失败。

当你关联完了所有的IK骨与其连接骨骼后,直接点击Submit,告诉它你输完了就行。
接下来脚本会全自动的烘焙一份IK骨的动作,期间不需要任何其他操作。

烘焙完毕后,动作同目录下会多出一份名为(动作名ik_for你用来适配的模型文件名.vmd)的动作文件。

MMD内操作

接下来打开MMD对两份动作进行合并。
首先载入适配IK骨动作用的模型和你需要添加IK骨动作的数据。
之后用MMD的帧范围选择选中0-结束帧范围内的所有FK相关帧,(即左右足骨、左右ひざ骨和左右足首骨这些骨骼的全部运动帧)
.
将其全部删除。
随后在第0帧导入刚刚烘焙好的IK骨动作数据。
1DGSA_0~@ZH4_HM_4U7LS~O.png
最后在导入一遍原本的动作数据,将FK骨的运动数据添加回来,
大功告成。
_3_0O5_1_IZ_DF_OZ~KD1EX.png

注意事项

1.此方法只适用于脚未一直离地的动作。
2.关于带有瞬移的动作(如CGSS的部分动作)是否能适用本方法,我没试过,也欢迎大家自行尝试。
理论上绝大多数游戏内提取动作/动捕动作都是可以使用这个方法生成IK骨动作数据的。

尾声

最后感谢你能看完这篇笔记。
文章内的很多语言我不确定是否专业和贴切,也欢迎大佬们随时指正。
之后也会继续提取啤酒烧烤动作给大家用的。