MMD-Blender指南:60帧3D动画工作流
记录下目前固定下来的一套3D动画工作流。60帧相当耗时,看情况使用。
其实在写这篇文章很久之前,就已经可以高速产出3D小人跳舞动画了。因为学的东西很乱很杂,出的问题也五花八门,并没有很好地根据进程总结经验。这周打算直接开始写结论型文章,不管之前尝试了哪些做法,反正现在这么做一定没问题。
本篇文章将介绍4K60帧的3D动画动作流。主要使用工具为MMDBridge和Blender,可兼容所有MMD动作和模型文件,以及所有Blender素材文件。
MMDBridge烘培ABC
本人曾经尝试了各种Blender直接做物理的办法,最后觉得还是MMD等级的物理就够了。烘培ABC这一步,是要通过MMD物理烘培出带有所有动画信息的ABC文件,然后导入Blender,让Blender只用负责画面渲染的部分。
调整穿模问题
将模型和动作文件导入MMDBridge,导入后必须从头到尾播放一遍,确认是否发生穿模。一旦发现穿模问题,如果不摆烂的话,需要进行对应处理。
根据穿模的严重等级不同,从上至下分为若干种解决方法。
只是略微穿模。可以修改下这段动作的镜头,不让画面中出现穿模部分。
整段穿模,但这段动作后可以恢复不穿模的状态。单独修改这段动作的动作帧,适当移动或缩小部分动作。
整段穿模,且穿模后无法恢复,例如大腿永远在裙子外。一般是模型本身的物理就不robust,动作幅度太大就容易雪上加霜。可以关闭物理同调,对这一段动画直接手K,然后注册物理帧。
压根没有不穿模的时候,比如ASOUL乃琳的模型,7000帧的舞蹈有6000帧在穿模。能到这种地步,一般是人物模型的物理复杂度完全超出了MMD物理可以hold住的范围。要么重做模型的物理,要么手k6000帧的穿模。
当然,直接换套衣服也是可行的办法。可以用PMXEditor换身体部件,也可以用MarvelousDesigner做衣服解算。但这一操作超出本文范围,在此不会介绍。
开始烘焙ABC后,动作和物理数据就完全不可以再调整了。目前还没发现能在Blender里编辑ABC文件动画信息的有效方案。所以,所有对模型和动画的调整想法,都要在这一环节里处理完毕。
在这里附赠两个邪门方案,仅供参考。
①暂时修改重力参数。如果裙子飞起来会穿模,就暂时加大或修改这段期间的重力方向和重力大小,让裙子不要飞起来就好。
②拉长动作,注册好物理帧后再弄回去。有段动作太激烈,裙子无论如何都会穿模的话,可以手动把这段关键帧拉长,例如3帧拉长到8帧,然后再自动演算,穿模现象会好得多。演算完了注册好物理帧,再把中间的帧数删掉,从8帧变回3帧。
设置对焦用的摄影机
画面渲染用的摄影机会在Blender里处理,但为了能够对焦人物,需要在MMBridge里设置一个位于人物脸部的摄影机。
你可能会问:那我在Blende里直接对焦ABC文件里的脸部就好了,为什么要单独弄个摄影机呢?中间的理论环节略,反正你只要操作过一次,就会发现这种做法无法对焦,因为ABC蒙皮文件的真正位置永远只在原点。所以,我们需要一个跟着脸一起动的摄影机,让Blender能通过它读到人物脸部的真正位置。
切换到Scene/Camera/Accessory,将Camera的所有位置信息都归于0,然后绑定外亲骨于人物脑部的某根骨骼,例如眼球。挪动相对位置挪到人物脸上进去一点,然后注册。
注册完毕后可以play一次,确定摄影机确实是跟着人物脸部在移动。
Q:我有多个人物,但Camera只能绑定一个人,怎么办?
A:可以分别导出几次,每次的摄影机在一个人物的脸上。如果是多人画面,建议直接在Blender里处理。
设置导出参数
到了这一步,模型、动画和对焦用摄影机都已经配置好了,只差开导。
在菜单栏里,MMDBridge→Plugin设定,选择mmdbeidge_alembic_for_blender.py,改为实行。如果要导出60帧动画文件,帧数范围填写0~动画帧数*2,并将30fps改为60fps。如果导出30帧,帧数范围填写0~动画帧数即可。
设置完后,点击OK,再通过菜单栏打开文件→导出视频,这一步是确定AVI视频的到处路径,视频并不是我们需要的东西,所以随便找个地方即可。点击保存后会弹出AVI-OUT设置,recording一栏要写0~动画帧数,不要乘以二。
在点击OK开始导出视频前,先确认MMDBridge源目录下的out文件夹里没有文件。ABC文件和材质贴图会导出到这里,如果没有out文件夹或之前还有其他文件,导出ABC可能会出现问题。
一切准备就绪,开导!
Blender导入ABC
上一步完成后,可以在out文件夹获得一个默认命名的ABC文件。其他文件和AVI视频都可以全部删除,将ABC文件剪切走并重新命名,不然日后工程多了,重名的ABC文件会互相冲突。
新建Blender工程,需要将帧速率改成60,然后导入刚刚的ABC文件。此时Blender内的动画帧区间,应该是0~动画帧数*2。play后确认没问题的话,接下来开始导入摄影机。
在Blender里选择一个摄影机,import对应动画的摄影机motion,导入后会发现Blender的帧速率又变回了30帧,此时要手动改回60帧。
导入的摄影机动画帧只有0~动画帧数区间,需要手动拓展成60帧的摄影机动画。MMD_Camera的本质是在MMD_Camera骨骼下绑了个Camera,所以需要对两个Camera都进行拓展操作。
分别选择MMD_Camera和Camera下的所有动画帧,按S(Scale),拉大为2倍。现在的关键帧间距被放大为元贝的二倍。被放大二倍后,原本相邻的关键帧中间会多出一帧空白帧,需要手动将这些部分的关键帧重新放到一起。
全部操作完毕后,动画和摄影机的60帧部分就没问题了。剩下的场景、渲染、特效和材质着色等,按照Blender的标准操作进行处理即可。这部分内容不在本文范围内,后续会单独开文章总结一点心得。
画面全部做好后,就可以开导了。Render→Render Animation,此时会导出2倍动画帧数的图片序列。
PR合成图片序列并导出视频
图片序列有一万种办法能合成导出视频,本人比较喜欢用PR进行处理。
PR新建项目,导入→0000.png(图片序列勾选),就会自动合成动画素材。
需要注意的是,动画素材的帧速率不一定是60。如果不是60帧,需要重新解释素材,将帧速率手动改为60帧。改完重新拖入轨道,再加上BGM音频,一个60帧老婆跳舞动画就完成了。
PR本身有光流法补帧,可以将30帧补到60帧。但实际效果一般,插帧会有糊一下的效果,只适合画面稳定镜头不乱动的视频。
导出时直接选择H.264 高码率4K预设即可,以这个配置上传B站,是必出现4K高码率的选项的。反正续了大会员,叔叔的带宽不用白不用。
MMD-Blender指南:60帧3D动画工作流