我是如何用Blender制作赛马娘动画的?

您所在的位置:网站首页 赛马娘注目的舞女 我是如何用Blender制作赛马娘动画的?

我是如何用Blender制作赛马娘动画的?

2024-07-13 22:05| 来源: 网络整理| 查看: 265

首先我不怎么懂unity,也不会用MMD,主要在blender里用各种插件制作动画。

以下内容也不会涉及太复杂的技术,也存在很多尚未解决的问题。用这个方式处理的模型也无法应用到mmd。

所需的工具和素材:

赛马娘全套模型和贴图(显而易见)

Blender

MMD插件

MikuMikuRig插件(BV1Ja411r7DN)

Rigidbody-bone(可选,处理物理用)

DerbyFacialConventor1.1(可选,处理表情用,作者 @CroakFang)

PmxEditor(可选,处理表情用,最方便,需要配合最新版MMD插件)

Unity(可选,处理表情用,效果更好。脚本作者 @CroakFang)

插件和程序都打包在https://pan.baidu.com/s/1DWF0dz29mA96PrlHMfVVoQ?pwd=qscr 

首先要准备好全身的模型。以泳装黄金船为例。

看看头像。阿船编号为1007,她的泳装的编号是30。因此搜索出1007_30对应的文件夹pfb_bdy1007_30(身体模型)、pfb_chr1007_30(头部模型)和对应贴图。

黄金船身体模型与贴图涉及到:

头部和面部模型与贴图是:

尾巴都是通用模型,大多只有两种。比如阿船编号1007搜出tex_tail0001_00_1007_diff贴图。因此阿船的尾巴是tail0001所对应的pfb_tail0001_00.fbx。

尾巴模型的贴图则是:

基本所有人物模型涉及的都是这么几套(尾巴有两个是通用的),diff和shad_c分别是明暗贴图,而base和ctrl则是涉及到高光金属度透明度等,在材质里都要用上。

像波旁新宇宙比较特别的还有发光的emi贴图,此外还有肮脏的dirt贴图,潮湿的wet贴图……有需求的话就在着色器里自由发挥吧。

将身体和尾巴的模型全部导入blender。(头部先不用)

由于单位不同,导入时缩放会是0.01,alt+s恢复缩放就好。

将尾巴绑定在身体模型的hip骨骼上。

再在编辑模式用shift+s把后面几根骨骼首尾相连。再全部选中(最后选中最前端的骨骼),利用Rigidbody-bone给它们上物理。

然后在右边出现的新集合rigidbody_bone中,选中所有新出现的空物体,在物理属性、刚体约束、棱角里,将上限和下限都调成-5和5(或者你参考实际效果后需要的数值)

事后记得将rigidbody_bone这个集合设定为不可见。

不用担心空物体太多这一步太麻烦,只要你在输入数据后,按住alt再按回车,所有被你选中的物体的该数值都会变成你输入的数值。

然后你按下播放,选中最前面的骨骼,就能随意玩弄马尾巴了。

其他物理你也可以如法炮制,或者各显神通找别的方式解决,blender这方面替代方案很多。

之前发速子茶座的时候,决胜服和头发我也是用这个方式解决的,效果还算不错。但在数值上调了好几次。

关于怎么做材质,我之前琢磨过一套仿马娘渲染的节点,可以直接从工程文件里拿去用。

把刚才搜集来的贴图都逐一导入进去,按节点提示的在着色器里连上节点即可。

(分身体、头部、面部、眼睛、描边。)

这套节点组以一个日光物体为模拟日光,用兰伯特模型计算明暗。并且模仿马娘添加了高光边缘光金属光等。

然而赛马娘的着色器并不是简单的拼凑贴图就能模仿。这只能让画面第一眼看上去还像回事儿。↓

没有特别需求的话,调调反光颜色和强度就行了。有改进方案的话欢迎在评论区分享。

然后是控制器,众所周知这种骨架放到blender非常难用。

此时可以安装小威廉伯爵大佬编写的mmr插件,选中身体的骨架,将骨骼写入并创造控制器。然后动起来就会方便很多了。

绑定一次骨架比较麻烦,但绑好后马娘的骨架就全部通用。已经绑好预设的插件我会发出来。在预设里选择快乐米可,然后点生成控制器即可。

这样身体和尾巴的部分就大功告成了。

之所以头部要单独处理是因为要提取表情。

马娘的表情是通过运动头部骨骼实现的,存储表情信息的文档是ast_chrXXXX_XX_facial_target.json,根据编号和服装给它搜出来。

处理表情主要有两种方式。

第一种方式是先把头部的模型pfb_chr1007_30导入blender,利用mmd插件转换模型为mmd模型,再导出为pmx。

然后在DerbyFacialConventor输入对应的数值,将ast_chr1007_30_facial_target.json拖入到这个窗口。

然后对应部位的表情数据就会放到剪切板,选眉毛就是眉毛,选眼睛就是眼睛,选嘴巴就是嘴巴。新建txt保存后再改为csv就能用了。

打开PmxEditor,导入刚才导出的头部pmx,将这三个文件都拖到表情变换里就行了。然后重新导出pmx,用blender的mmd插件导进工程,在变形工具里就能看到对应的表情了。

在选择将变形绑定到.placeholder,等上一段时间,表情就能用了。

不过因为mmd缩放有差别,要先把头部的骨架缩小到0.8,应用,然后再放大到1.25倍,这样表情的比例就正常了。

然后给材质处理好,删掉多余的几个文件就行了。

M_Mayu也可以不删,之后用数据传递做眉毛

然后将头部的Neck加约束到身体的Neck,头部的Head加约束到Head。

这套方案效果还可以,但是绑定后blender会卡顿,而且表情不完善万圣节大米之类有虎牙的角色虎牙会飞出来。

第二种方案就是利用unity,有大佬编写了对应的脚本来处理。

其实在blender里也能写,只是我不会……

首先下载unity创建工程,在工程里导入头部模型、脚本Facialtest.cs、以及表情文件ast_chr1007_30_facial_target。

为了运行脚本,需要安装JsonNet.9.0.1.unitypackage。双击后在工程里点导入即可。

然后选中导入的头部文件,去掉转换单位的勾,勾上读取/写入,然后点应用。

把头部拖入场景里,选中后在右边拖入脚本为新的组件,按图里的填写好资产,按下ctrl+p运行。

运行过后再回到场景里拖一下show看看,你会发现表情已经导入了。

然后在包管理器里安装fbx插件,你就能右键导出这个头部模型。

然后就能导出了。因为能有效导出的只有默认的ASCII的fbx,所以你blender里还得装个能导入ASCIIfbx的插件。

然后导入的面部的形态键里就是所需的表情。

因为每个类别最前面的base是默认表情,在使用时先把所有的base拉满,否则还是会有虎牙突出的变形。

然后将头部的Neck加约束到身体的Neck,头部的Head加约束到Head……骨骼位置到unity过了一遍后还不一样了,还得调回来……

当然也可以是重新导入一个原始的头部fbx,保留骨架和头部,把面部替换过去。

这套控制器你不调回来也不影响用,只是强迫症难受。

然后是法线问题。显而易见的是如果你使用表情,阴影就会变得一团乱。

这个暂且没有找到解决方案,我现在是用法线编辑修改器,让修改器指向某个以头部head骨骼为父级的空物体。并且将该物体的z缩放调为6。还算能用吧

修改器上最大角度后面的锁必须先勾上!!(不然你把uv搞乱了的话就只能重新导入了,我这边就不小心搞乱好几次)

描边用实体化修改器即可。

如果要求比较高,可以先把模型都复制一个,全部合并重叠点,然后再上透明材质做实体化或全部法向翻转,沿法向放大

脸部描边需要专门弄个节点,利用ctrl的贴图。身体和头部如果有透明的地方,也需要用这个方式。

当然这样的描边还是有点问题的……比如穿透的部分会缺失描边,不知道怎么实现原版描边。如果有看上去不协调的地方,你也得手动修一下。

细心的玩家肯定知道赛马娘眉毛是前置的。

其实在合成里处理一下就行。首先把眉毛的面片都选中,按p分离出来(本来有自带的M_Mayu,不过导出的M_Mayu不带顶点组。如果你觉得点眉毛改形态键太麻烦的话,也可以用数据传递到M_Mayu)

需要注意眉毛在里面还有一部分,也不要忘了开形态键最前面的base,不然按这个操作出来的眉毛是有点问题的。

然后单独新建一个眉毛的集合放进去。

里面还有两块

给眉毛新建一个视图层,在新视图层里把眉毛以外的集合全部去掉

在合成里按图连一下节点,按f12就能看到合成眉毛在前面了的效果。

给眉毛单独复制个面部材质,开背部剔除,不然背对着也能看见眉毛

大功告成



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3