MMD模型导入Blender后应用动捕BVH文件

如果你手里有一个MMD模型(.pmx),并且想在Blender将任务骨骼与某个动捕文件(.bvh)同步,即应用已有的动捕数据到mmd模型中,那么下面的教程可以帮到你。

插件准备

  • CATS
    • 读入.pmx文件(读入时候应该做了自动scaling,如果用mmd_tools读入则会默认大10倍)
    • 修正模型和材料(包括常见的紫色眼睛皮肤问题)
    • 重命名日文的骨骼、材料、mesh等到英文(在后面map动捕文件的各个骨骼到模型骨架时非常重要)
    • 精简骨骼(比如无效的外骨骼等会被优化,内部骨骼也会被简化为动捕等常用的骨骼形式,取消IK骨等)
    • 注意:不需要另行安装mmd_tools,CATS会默认pre-install。
  • Rokoko
    • 作用:map动捕文件的各个骨骼到模型骨架
    • 自动侦测骨骼间的对应关系,基本一键匹配后都是对的,即使名称什么有着较大区别也OK。
    • 一旦你自己做过了一次匹配,这组mapping就会被它自动记录,后续相似的模型都可以直接一键。
    • 如果不放心,或是某组匹配很常用想记录,可以直接export对应关系。

模型导入与处理

  • 首先是用CATS插件导入.pmx模型。这一步没什么问题,也不需要特别的操作,只管导入即可。如果右边的panel被隐藏了,显示的快捷键是N

    image-20220803233840197
  • 修正模型。刚导入的时候人物可能有各种小问题,但只要经过修正就都OK了。这个步骤是真的完完全全的“一键”操作,真的只用点一下Fix Model就好了。

    image-20220803234114008

  • 修正完成后,请一定记得点一下Start Pose Mode,否则如果后面直接把.bvh文件应用过来,你会发现一些常见的诡异问题,如:手指尖、身上的一些饰物被留在了原地不动,只有身体其他部分在动,导致剧烈变形(这是由于手指/其他位置可能在模型中有多块骨头控制,而.bvh文件中对应位置只有更少的骨骼数,这就导致了某些骨骼没有得到mapping);亦或是身体骨骼连接比较奇怪,如果旋转某块骨头就会连带其他一些意想不到的部位转动…… Anyway,解法就是简单的点一下Start Pose Mode,程序帮忙进行了一个骨骼和mesh间的绑定修正。这之后即使你再点击Stop Pose Mode也不会有问题,可方向用。

  • 处理好之后的模型如图:

    image-20220803234942232

与动捕文件匹配

动捕文件直接导入后会默认出现一个骨架,这个骨架往往很大,所以你可能看不见它,此时需要缩小view很多倍才能看到全貌。我们的任务就是让这个骨架和修正后的人物模型骨架相匹配。

  • 导入.bvh文件。如果你知道其正常的缩放比例,如0.1或0.01,可以在load的时候选择。如果想后面看着动态调节,可以在导入并选中动捕骨骼后按下快捷键S,只需要移动鼠标即可进行等比例缩放。如果想缩放某个特定坐标轴,按下S后再单独按X, Y, 或Z即可。

    image-20220803235859075

  • 导入成功后,你将得到一个类似这样的结果:

    image-20220804000011284

  • 下一步,让动捕骨骼处于放松(Rest)状态,即T字状态。有两种方式:

    1. 直接点击骨骼Panel的Rest Position即可。好处是方便,坏处是一旦点了这个你就无法在此基础上进行调整。

      image-20220804000607036

    2. 删除动捕骨骼的所有变形。注意这个是Temporary的,只要你不打帧上去,这个并不会影响你这一帧的实际位置,所以不用慌。

      image-20220804001114077

      操作步骤:选择动捕骨骼->选择Pose Mode->按下A键全选动捕骨骼->在下拉菜单Pose中清楚全部Transform。完成后,你将得到一个T字动捕骨骼。

      image-20220804001253169

  • 然后分两种情况:如果人物的默认放松姿态也是T字,那么就可以直接进入下一步。否则,进行如下操作:先缩放动捕骨骼到和人基本重合的size,然后分别调整左右大臂的旋转角度,使得动捕骨骼和人物骨骼的手臂平行或重合。这一步是为了保证二者在这个用于对齐的帧有着相似的骨骼形态。注意:不能调整人物的大臂来贴合动捕文件,这个即使调了也无效。

  • 骨骼匹配:

    image-20220804002622271

    1. 打开Rokoko Panel,在Retargeting选项卡里选择动作的源和目标。这里源就是动捕文件,目标就是模型的骨骼。

    2. 点击Rebuild Bone List进行骨骼匹配。注意这里如果有些骨骼互相没有匹配好,需要手动匹配。方法是切换到Pose Mode后点选目标骨骼,确认其名称,然后填写到Panel对应的下方映射表格中。

    3. 骨骼匹配完成后,记着点击Use Pose栏的Current选项,表示用于对齐的是当前动捕骨骼的状态,而非Rest状态。

    4. 最后,点击Retarget Animation,All Set。

      image-20220804004103963

常见问题

  • 如果.bvh文件比较“飘”,脚不在地上,且偏离O点太远,我们可以做的是,先在Object Mode下平移动捕骨骼到合适的中心位置,然后按下Shift+C将cursor重置与O点,接下来选择Set Origin to 3D Cursor把动捕骨骼的中心点设定到坐标原点。在做完这一步之后再执行上面的Retarget Animation

    image-20220804012518890

Reference