前无古人,后无来者 ——杂谈使用MMD模型借助游戏引擎渲染动画技术的发展历程
TerayTech
2017年10月20日 23:08

前言:

 (。・∀・)ノ゙嗨大家好,我是TT。本文的内容基本在我的教程中都出现过,只是写给那些比较无聊的人看一看,总结一下我们走过的路。全程无图,没有耐心可以不用看的。如果有内容不准确,欢迎私信我反馈,感激不尽!

那时大概是2015年的夏天,我刚入坑MMD的时候。我受一家漫展主办方的拜托,为漫展制作一段MMD动画。那个时候我对于CG方面还没有一丁点了解。

在网上寻找了各种各样的资料之后,我第一个打开的软件就是Cinema4D。现在基本上所有玩过MMD的同学都应该对这个软件有所了解吧,可能大部分人都能看到C4D渲染出来的一些动画的画面非常漂亮。但他们可能不知道的是,这种渲染的效率很低。如果你拿一些热门的GPU渲染器,比如blender的Cycle、Octane、Redshift进行比较,你很轻松就能体会到效率上的差距了。

我当时刚刚入坑CG,从来没有接触过任何一台相对来时能算得上是“高性能”的计算机。第一次安装C4D是在一个联想的笔记本上,这台笔记本还是学校在2012年发给教职工使用的办公笔记本。CPU是i3-380M,2C4T,主频为2.53GHz。带有GeForce 310M独立显卡,显存512MB。就是在这样的一个条件下,我开始了对MMD的研究。现在想想果然还是当时太年轻了呵呵。

动手******D项目,参照zzb311的教程,很快就能做出来了,渲染第一张差不多花了十几分钟吧,当时zzb使用的也是像我这样的笔记本,CPU系列也是i5,具体是哪个型号记不太清了,但是也是第一代处理器。所以我们的用时基本上都差不多。的确,那个时候看着橘黄色的小框框一个一个的把图片渲染出来,是一件很神奇的事情。那个时候我才刚刚高一。

到了差不多八月,看了极客湾做的节目,推荐和很多百元神U。于是攒了一些零花钱,购进了一片AMD X4 955处理器,接口为AM3+。之后买了一张ASUS M5A78L-LE的主板。买了一块NVIDIA Quadro FX3800的专业图形卡。当时也是属于太无知了,不知道游戏引擎可能使用游戏显卡会更好一些,才买了这张专业显卡。再加上两根AMD专用内存,继续学习各种东西。当时的CPU已经是4C4T了,主频高达3.2GHz。有时候渲染喜欢超频到3.8甚至4.0GHz(当然现在的我肯定会认为超频渲染是一种十分愚蠢的行为)。这一次的升级,对我的CG学习效率有了很大的提升。当然C4D的渲染速度也就快了许多。但是很快的,他的渲染能力不再能满足我的需求了。

一种能代替C4D原生渲染器的更高效的渲染器成为了当时我寻找的目标。

也可能是比较巧吧。七月底的时候,在MMD百度贴吧出现了一个新的帖子。帖子的内容,正是MMD与虚幻4联动教程。教程的作者是bahadaXXZM(现名Arno_)吧哈达是我的好朋友,比我大了两岁,正在大学就读。就是他考完高考的那年暑假,他和一名台湾人霓虹猫(NeonCat)共同编写了这篇教程。而这,便是国内UE4联动解决方案发展的开始。

 

第一章:模型处理

从MMD到游戏引擎,需要解决的最大问题就是模型问题。(其实模型动作表情摄像机都有问题..没一个是正常的。)下面我就来分析一下,从MMD模型到虚幻4的几种不同的方法。

首先就是最原始的Pmx2FBX导入法。PMX2FBX最初起源于Unity的MMD插件——MMDMecamine。可以简单的认为,PMX2FBX的程序就是从该插件中提取而来的。Github上可以下载到这个程序。后来由吧哈达编写了一个批处理文件,使其更加方便的执行。你只需要在批处理文件中输入你想要转换的模型名称以及你想写入模型文件的动作数据名称,就可以一键转换为可以导入并且带有动画的模型文件了。但是这个插件有一个很大的缺陷。那就是完全无法使用表情。虽然这个插件导出的模型的确带有顶点变形目标(morph targets),但是导入之后其顶点变形目标没有任何关键帧。如果你懂一些虚幻开发有关的知识与开发能力,并且不需要表情关键帧或者是你有其他的硬件或是软件可以用于驱动表情关键帧,那么你完全可以使用这种转换方式,简单高效又便捷。

IM4U导入法。IM4U是Github上的一位开发者。从大约UE4.3的版本开始,他就已经开始开发IM4U系列的导入插件。IM4U也是全球最先开始使用虚幻渲染动画的插件之一。通过一系列修复手段,例如单独导出表情动画关键帧、对模型表情部分进行修改、使用虚幻的动画蓝图等功能,的确是可以成功的修复使模型带有表情动作。但是我并不提倡大家这么做。有几个原因,第一,整个过程极为复杂,步骤繁多,很容易出错。我第一次操作的时候,重新制作了四五次,反反复复的询问吧哈达一些出现的问题,才最终成功制作出一个项目。当时也是觉得这种方法难度极大,光靠文字教程不一定能让大多数人看得懂,于是我便提出了制作视频教程的想法。然而制作视频的过程中还是出了许多次问题,最终一一解决,才做出了完整的一套教程,如需参考,可以简单的看下联动教程的第一集到第四集。

Blender导入法。Blender是一款小巧开源而又功能强大的3D工具。在blender中,有一个非常优秀的插件名为MMD-Tools,在git上可以很轻松的找到。MMDtools不仅可以正常的导入普通的MMD模型,而且还可以帮助所有动画关键帧烘焙物理效果,是目前所有专业3D软件中,出现bug最少的工具了。而且blender的2D渲染能力也是很棒的,有兴趣的同学可以尝试一下blender,极力推荐。虽然blender在MMD模型导入方面看似已经比较完美了,但是它在导出方面仍然有一定的瑕疵。MMD模型在导入过程中,会出现骨骼重名的现象。这个现象在blender输出fbx文件时成为了一个很棘手的问题。UE4的模型定义方式不允许模型出现重名的骨骼,如果有重名便会报错,导致整个模型导入UE4失败。于是git上就在MMDTOOLS的下方,出现了一个python脚本,正是用于导出UE4时解决骨骼重名问题的脚本。这个脚本的工作原理很简单。就是把平时很容易出现重名问题的一部分骨骼重命名,通过这种方法来解决报错的问题。但是即便你正确的运行了这个脚本,完成了重命名,也仍然不一定能够成功的导入UE4,这边是许多同学反映的问题,即便运行了脚本,尝试了多个模型,也只有少数模型可以使用。(我尝试了几个icemega的模型,都是可以的)还有一种解决方案,就是在运行脚本的基础之下,手动寻找并修改重名的骨骼,也是有一定几率可以成功的,祝君好运。

MMDBridge全帧烘焙法。这个方法主要是日本地区的朋友们在使用。我也不是很清楚为什么我们的电脑无法烘焙。MMDbridge想必使用过C4D的朋友们都不会陌生吧。Bridge有好几种工作方式,可以输出不同类型的文件,主要是两种类型,一种是alembic几何体缓存文件(abc)一种便是VMD文件。他输出的VMD文件不同于普通vmd文件,bridge在输出文件时,会按照所有的关键帧,搭配补间动画,烘焙出每一帧每一个受控物体的位置。这种方法也被用于解算物理。据我猜测,可能是因为日本地区和我们使用的文字编码不同,从而导致了在写入vmd文件时出现的错误,最终得到的vmd文件中什么数据都没有。如果你可以成功的烘焙所有的关键帧,此时使用IM4U导入这个模型以及动作,就可以达到你想要的结果了——带有表情动画的MMD模型。

 

  (未完待续)