MMD 制作总结

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:疯子的随想曲

最近突然对 MMD 制作产生了兴趣,于是查找了一些资料并尝试利用网上现有模型和动作制作了一个 MMD,大致体验了下流程。

最近突然对 MMD 制作产生了兴趣,于是查找了一些资料并尝试利用网上现有模型和动作制作了一个 MMD,大致体验了下流程。下面对这几天的制作经历进行一个总结。本文的许多内容来自 RedialC 的教程,相当于做个笔记进行一些要点记录。所以推荐有兴趣的朋友可以先去看一下这个教程:

一开始想在 Blender 上完成全部操作,后来参考了 RedialC 的教程后决定采用以下流程进行制作:

MMD 导入模型和动作 ==》MMD Bridge 导出 abc(Alembic) 文件 ==》Blender 导入 abc 文件;导入镜头数据 ==》Blender 内进行场景搭建、模型着色、布光 ==》Blender 渲染输出视频 ==》视频剪辑软件内合成音视频 ==》最终的 MMD 视频。

总地来说就是用 MMD 整合模型与动作,用 Blender 进行渲染,最后用视频剪辑软件剪辑和输出。下文也是按照这三个步骤进行介绍。

这一步骤涉及的软件是 MikuMikuDance(MMD) 和 MikuMikuDance bridge。这两个软件前者我下载自 MMD 吧,后者下载自教程附带的链接。解压后无需安装即可运行。如果遇到 “并行配置不正确” 的错误无法启动程序,可安装 MMD 目录下的 vc++2008 和 vc++2010 解决。

2.1 模型动作导入

打开 MMD,点击左下角模型操作面板内的载入按钮加载人物模型。然后点击左上角的文件点击导入动作数据选项加载模型动作,这里可以播放一下检查动作是否与人物模型匹配。最后保存为. pmm 文件。这一步有以下几个要点:

(1)不要导入相机数据;

(2)将默认的相机位置 XYZ 坐标、角度、距离全部清零;

(3)将相机操作面板上的骨骼追踪改为当前模型,位置改为头部。将相机调整至模型两眼间稍稍往里的位置,也就是镜头要插到脑袋里。。。。;

(4)调整完相机位置记得注册一下。

2.1 模型动作导出

用 MMD bridge 打开刚才保存好的 pmm 文件,设置导出的总帧数和分辨率,点击文件里的导出视频,导出之后要用到的 abc 文件。这一步的要点包括:

(1)有两个地方要设置总帧数,一是界面下方 play 面板那里,另一个是上面 MMDBridge 设定那里;

(2)MMDBridge 设定里的 “使用するスク” 要选择 "for_blender" 那项,“スクリプトの呼び出し” 要设定为 “実行する”。最下面的**帧率 30 帧不要改动;**

(3)导出视频的目录可以随意设定,我们最需要的 abc 文件等素材最后会输出到 MMD bridge 安装目录的 / out 目录下。

选 Blender 这个软件当然是因为它免费啦~~,软件安装什么的就不废话了直接去官网下载就行。安装完成后记得要安装一个叫 “Cats blender plugin” 的插件,这样才能够顺利编辑 MMD 的模型和动作文件。这个插件可以去 gayhub github 上下载,也可以在编辑 -》偏好设置 -》插件里搜索,最后安装启用即可。

3.1 文件导入

设置 Blender 界面右侧输出属性一栏的帧率,然后在 Blender 中通过文件 => 导入 => Alembic(.abc) 导入上一步生成的 abc 文件。随后在 Blender 中新建一个摄像机当然也可以用工程里原有的那个,总之选中一个摄像机,然后按‘N’键快捷键呼出右侧的工具栏,通过 MMD=> Motion:Import 导入合适的相机数据(.vmd)格式。相机导入成功后如果需要设置光圈调整景深就需要用到 2.1 中我们调整过的相机,因为大光圈意味着浅景深,人物模型在运动状态中非常容易跑到焦外造成失焦问题,因此相机的焦点需要时刻跟踪在人物附近,然而 abc 文件简单来说有一个缺点是相机无法准确追踪其模型的位置,所以我们需要在相机的属性界面将聚焦到物体选项设置为跟随 MMD 模型一起导入的那个相机上,从而保证人物能够始终在焦平面内。

总结一下,这一步的要点是:

(1)导入文件前,导入文件前!先检查 Blender 界面右侧**输出属性**一栏的**帧率**(如下图),要和刚才 MMD bridge 输出的帧率一致,这里就应该是 30 帧。否则会造成导入的帧数与实际帧数不一致的情况;

(2)导入的文件要进行缩放,如下图所示在文件选择界面同样按‘N’键可以呼出工具栏,缩放推荐值为 0.1 也可以改到 0.08 或者 0.06。要记住对导入的所有人物模型、镜头以及预制场景模型进行缩放!!

3.2 材质

上面繁琐的工序完成后,进入到 Blender 的 shading 界面,发现我们的模型是一副已经燃尽的形态,所以这一步我们需要为模型新建材质,为模型填加贴图和着色器(Shader)。当然模型有很多部位,不可能模型的脸和衣服采用相同的贴图和材质,所以我们需要对模型的不同部位分别进行设置。

之前导入的 abc 文件在 Blender 的大纲里显示的是许多个顶点组,每一组顶点组都对应模型的不同部位,如脸、衣服、头发等等,默认以 xform_xxxx” 的格式命名。点击顶点组,模型对应部位的边缘就会高亮,我们需要做的是在 Blender 的 shading 界面下,为每一个部位新建材质,选择对应的贴图和着色器。

对于贴图,因为有许多部位的贴图都整合在一个大图片里,所以不是很好找对应,我的处理方法是,另起一个工程用 MMD 插件也就是之前导入相机数据的工具,导入一遍原始模型,插件会自动为模型添加贴图和着色器,在这里对贴图和模型部位的对应做一个记录。回过头来再根据记录对现在的模型添加贴图。

至于着色器(Shader)则是一门很深的学问了,简单来说着色器能够告诉电脑如何用特有的一种方法去绘制物体,例如皮肤、金属、玻璃等材质都需要用不同的着色器才能体现出它们的一些光学特性。由于采用的模型是荧妹,于是我从 Blender 卡通渲染的角度查找了一些教程和资料,最后发现了一个原神风格渲染的预设,将这个预设作为人物模型的着色器。实际的

效果如下图所示:

3.3 场景搭建

人、动作、镜头、Shader 都是借的,就寻思着自己搭个场景吧。所以这一步就没什么要总结的了,简单介绍下心路历程。我最开始的想法是地面要那种非常老旧的水泥地面,但又是能够反光的,不知道我描述的是否形象,然后需要在人物背面放几个立方体、圆柱、球体之类的填充一下,试了几版感觉都不太合适,最后在蹲坑的时候突然想到可不可以撒一地发光体,应该会很有感觉。于是试着做了一下,又经历了一些调整最后效果如下图所示:

当然地面和我说的老旧反光水泥地面比起来更像雨天的泥地。。。不过整体效果上还是达到预期了吧。这些效果主要用到了自发光、层权重和颜色渐变、混合着色器节点,地面用到了马氏分型纹理节点,感兴趣的朋友可以自行查找下资料。

接下来就是布光了,首先我希望地面上有那种白色反光,于是在场景两边一边支了一个超大号面光,上图里也能看见一个。然后想到到舞台上人物都是用那种聚光灯打的,所以人物的斜上方左中右三盏聚光灯支楞起来。于是就变成了下面这样,hmmmmm 像极了胡茬。

补光前

为了消除阴影,我又在斜下方加了左中右三个面光变成了下面这样,虽然不知道这样是否合理,但是看上去确实顺眼多了。最后发现镜头有几段是拍背面的,背面有些暗所以又在后面加了一盏聚光灯从地面斜着向上照。

补光后

说实话一个人前后左右 9 盏灯,我怀疑这打光有些用力过猛。。。当然也确实出了一些问题,正面因为光太亮了导致头发以及衣服上特别是蓝色、黑色和金属件对比度偏低。上图是我处理之后的了,所以看上去还可以,处理方法是在着色器那里填了一个 RGB 曲线,适当拉低暗部的曲线,让颜色凸显出来。嗯。。这熟悉的感觉,不就是后期 PS 嘛,嗯,对,PS。

ps 拉曲线

以上就是我搭建场景和布光的一些思路,只是想借着这个机会学学软件操作,所以里面的一些想法和操作不一定合理,欢迎大佬们指正。

3.4 渲染导出

渲染没什么好讲的。就是漫长的等待,6006 帧渲染了 4 个小时,房间的平均温度都上升了。唉~ 当初一狠心整个 2070s 啥的是不是能更快点,感觉 1660s 不够玩儿了。。。。

这里我直接渲染为 mp4 格式的视频了,后来查资料说建议这一步最好生成图片序列,最后在视频编辑软件里导入图片序列生成视频,一来方便修正,可以直接从有问题的帧重新渲染,二是能保证画质。

最后,这一步要注意的就是 eevee 引擎的一些选项和参数设置,然后换个好电脑。主要是拉高渲染采样率,开启环境光遮蔽、辉光、次表面散射以及屏幕空间反射特性,达到良好的渲染效果,当然也可以最开始就设置好,预览的时候观感更好一些。具体的设置可以去开头提到的教程里看,这里就不赘述了。

我选择达芬奇 resolve 17 用作剪辑软件,是因为对这个软件比较好奇加之免费版功能看上去比较齐全,除此之外没有什么特别的理由。这一部分也没什么值得细讲的,就是将音视频对齐。我下载的动作里作者贴心的附上了说明应该在哪一帧进行音频同步,然而一开始没有注意到,还一遍一遍的在那慢放对口型。。。。

另外在浏览的过程中发现 00:09 秒左右这个镜头拉远的部分有点空,所以就用软件里面自带的两个转场特效和字幕做了一个显示曲名的效果。最后在达芬奇的交付界面设置各种参数导出最终的视频。

总的来说我对此次结果还是比较满意的,学到了挺多东西,捣腾的也很开心。当然这一次的主要目的是跑一遍大致流程,所以有许多细节问题需要改进:

1.  穿模,两个问题,一个是动作和模型不匹配的问题,荧妹模型头比较大,有几个动作手直接插进脑袋里了。另一个是布料和碰撞的问题。比如有几个动作手插进裙子里了。我的想法是在 MMD 内检查微调动作来解决第一个问题,利用 Blender 的物理引擎解决第二个问题。这些需要后续实践了才知道可行性。

2.  材质和渲染,材质上抠的不是很细,荧的衣服上的一些金属件还有头发感觉可以单独抠出来添加各向异性等特性获得更好的效果,另外导入 abc 文件的方式貌似没办法用 mmd_tools 插件自带的描边功能添加描边了,看起来没那么 “卡通”,不知道如何解决。渲染方面也是,eevee 引擎可以烘焙间接光照明达到更好的渲染效果,我这里只对场景左边的立方体用了一下,别的地方没有用,但是感觉在这种地面光滑加上满地光污染的场景下应该合理使用间接光照明。

3. 场景,一是布光,布光方面因为没有查资料全是凭感觉的,所以我也不是很确定这样是否合适,是不是将角色照的太亮了,是不是应该加入一些变化,让一部分镜头光照不用这么强?二是模型和场景契合度的问题,人物用的是荧妹的原皮外加仿原神的卡通渲染,而场景采用的是偏真实系的材质渲染,这样的一来人物是否契合场景?这两个方面我目前都不能够准确评价,毕竟是我做的嘛现在怎么看怎么稀罕,可能要过几个月把这事忘得差不多了才能比较客观的看待这个问题。

期待上述问题能在下一次迭代中解决吧,当然,下一次估计是等我换显卡之后了。

最后的最后附上视频链接

评论