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
。修正模型。刚导入的时候人物可能有各种小问题,但只要经过修正就都OK了。这个步骤是真的完完全全的“一键”操作,真的只用点一下
Fix Model
就好了。修正完成后,请一定记得点一下
Start Pose Mode
,否则如果后面直接把.bvh
文件应用过来,你会发现一些常见的诡异问题,如:手指尖、身上的一些饰物被留在了原地不动,只有身体其他部分在动,导致剧烈变形(这是由于手指/其他位置可能在模型中有多块骨头控制,而.bvh
文件中对应位置只有更少的骨骼数,这就导致了某些骨骼没有得到mapping);亦或是身体骨骼连接比较奇怪,如果旋转某块骨头就会连带其他一些意想不到的部位转动…… Anyway,解法就是简单的点一下Start Pose Mode
,程序帮忙进行了一个骨骼和mesh间的绑定修正。这之后即使你再点击Stop Pose Mode
也不会有问题,可方向用。处理好之后的模型如图:
与动捕文件匹配
动捕文件直接导入后会默认出现一个骨架,这个骨架往往很大,所以你可能看不见它,此时需要缩小view很多倍才能看到全貌。我们的任务就是让这个骨架和修正后的人物模型骨架相匹配。
导入
.bvh
文件。如果你知道其正常的缩放比例,如0.1或0.01,可以在load的时候选择。如果想后面看着动态调节,可以在导入并选中动捕骨骼后按下快捷键S
,只需要移动鼠标即可进行等比例缩放。如果想缩放某个特定坐标轴,按下S
后再单独按X
,Y
, 或Z
即可。导入成功后,你将得到一个类似这样的结果:
下一步,让动捕骨骼处于放松(Rest)状态,即T字状态。有两种方式:
直接点击骨骼Panel的
Rest Position
即可。好处是方便,坏处是一旦点了这个你就无法在此基础上进行调整。删除动捕骨骼的所有变形。注意这个是Temporary的,只要你不打帧上去,这个并不会影响你这一帧的实际位置,所以不用慌。
操作步骤:选择动捕骨骼->选择Pose Mode->按下
A
键全选动捕骨骼->在下拉菜单Pose
中清楚全部Transform。完成后,你将得到一个T字动捕骨骼。
然后分两种情况:如果人物的默认放松姿态也是T字,那么就可以直接进入下一步。否则,进行如下操作:先缩放动捕骨骼到和人基本重合的size,然后分别调整左右大臂的旋转角度,使得动捕骨骼和人物骨骼的手臂平行或重合。这一步是为了保证二者在这个用于对齐的帧有着相似的骨骼形态。注意:不能调整人物的大臂来贴合动捕文件,这个即使调了也无效。
骨骼匹配:
打开
Rokoko
Panel,在Retargeting
选项卡里选择动作的源和目标。这里源就是动捕文件,目标就是模型的骨骼。点击
Rebuild Bone List
进行骨骼匹配。注意这里如果有些骨骼互相没有匹配好,需要手动匹配。方法是切换到Pose Mode
后点选目标骨骼,确认其名称,然后填写到Panel对应的下方映射表格中。骨骼匹配完成后,记着点击
Use Pose
栏的Current
选项,表示用于对齐的是当前动捕骨骼的状态,而非Rest状态。最后,点击
Retarget Animation
,All Set。
常见问题
如果
.bvh
文件比较“飘”,脚不在地上,且偏离O点太远,我们可以做的是,先在Object Mode
下平移动捕骨骼到合适的中心位置,然后按下Shift+C
将cursor重置与O点,接下来选择Set Origin to 3D Cursor
把动捕骨骼的中心点设定到坐标原点。在做完这一步之后再执行上面的Retarget Animation
。
Reference
- Retargeting using Rokoko (COMPLETE guide) - Blender 2.8, 2.9, 3.0:最重要的一个参考,本教程大部分来源于此。
- Rokoko官方Wiki
- CMU Bvh动捕数据集
- Key 3D Rigging Terms to Get You Moving - 关于 3D Rigging 的一些术语
- MMD to Blender 教程,快来动手制作你的 MMD 吧~(材质篇) - 哔哩哔哩
- 【MMD/Blender】联动渲染基础教程 - 哔哩哔哩
- Blender 2D 渲染材质分享及经验总结 - 哔哩哔哩
- Move 3D cursor back to center hotkey?
- How to Quickly Set Object Origin in Blender 2.9 (Tutorial)