将mmd模型改造成游戏可用模型

2020年02月21日 20:00 2 点赞 1 评论 更新于 2025-11-21 21:32

MMD模型通常具有精美的外观,但一般情况下并不适合直接作为游戏模型使用。不过,有一篇文章很好地解决了这个问题,为游戏模型的获取开辟了新途径。此外,泰课上有一个关于用Unity实现MMD功能的视频,感兴趣的读者可以点击链接查看:https://www.taikr.com/my/course/503

插件介绍

本文使用了mmd4mecanim(以下简称mmd4)插件,在此特别感谢作者nora先生。该插件能够完美地将MMD模型导入到Unity中。作者的Twitter链接为:https://twitter.com/Stereoarts 下载链接:http://stereoarts.jp/ ,注意需要翻墙访问。

mmd4插件可以将MMD模型及其动作转换为FBX文件,这种格式便于导入3ds Max、Maya、C4D等3D建模软件进行修改。

导入MMD模型到Unity的步骤

步骤1:导入mmd4插件

导入完成后,应该会看到红箭头所指的3个文件夹。

步骤2:准备MMD模型

一般MMD模型的格式为PMD和PMX,下载的MMD模型通常是一个包含PMD或PMX文件以及一堆贴图文件的文件夹。注意不要改变文件夹结构,直接将该文件夹放入Unity工程中。此时,mmd4插件会自动为PMX和PMD文件生成一个.MMD4Mecanim文件。

步骤3:模型转换

选中.MMD4Mecanim文件后,在Inspector窗口中会看到模型使用条约,全部勾选并点击同意,即可看到转换界面。点击“Process”,稍等片刻,模型就会生成。生成的模型会存放在对应的PMX或PMD文件的同一文件夹下,同时会生成一个“Materials”文件夹,其中包含该模型的所有材质。

步骤4:添加模型到场景

将生成的模型拖到场景中,就能看到漂亮的MMD模型了。

步骤5:调整Shader

由于mmd4中的Shader是完全模仿MMD效果的Shader,并非基于物理的Shader,因此需要将生成的Shader全部调整为Unity 5中的Standard Shader。选中“Materials”文件夹中的所有材质球,将Shader改为“Standard”。

由于没有仔细调整,模型可能会出现显示异常的情况。MMD模型的材质命名大多是日语的罗马音,懂日语的人会更容易找到对应的材质球。稍微调整材质球后,可得到一个看上去比较正常的模型。

优化模型细节

步骤6:添加AO贴图

上述效果虽然不错,但细节部分仍有不足。Unity可以使用Lightmap来烘焙静态物体,使其阴影表现良好,但对于动态物体则需要添加AO贴图,在Standard Shader中即Occlusion贴图。因此,需要获取一个较好的Occlusion贴图。

步骤7:重新分UV

使用3ds Max打开FBX文件,查看模型的UV,会发现其UV非常混乱,并且存在镜像和重叠的情况。这是因为MMD模型原本是为制作视频而设计的,可能未按照游戏模型的制作标准进行UV分割和贴图制作。而Occlusion贴图的烘焙必须依赖正确的UV,所以需要重新对模型进行UV分割。

步骤8:焊接顶点

一般MMD模型有两个网格部分,即脸部和除脸部以外的其他部分。选择除脸部以外的部分,选中可编辑网格中该部分的所有顶点,将焊接值设置为0.001,然后进行焊接。焊接后顶点数量应该会减少。

步骤9:平滑面并导出

选择除脸部以外的部分,由于焊接顶点可能会导致面的平滑度出现问题,因此选择该部分网格的所有面并进行一次自动平滑处理。选中该部分,选择“导出选定对象”,并导出为OBJ文件。

步骤10:导入Zbrush进行UV拆分

将导出的OBJ文件导入到Zbrush 4R6中,准备使用Zbrush 4R6里的uvmaster进行自动拆分UV。

步骤11:执行UV拆分

在Zbrush中找到Zplugin,选择uvmaster,并使用其中的unwrap命令。稍等片刻,uvmaster会自动完成模型的UV分割。

步骤12:检查UV分割结果

稍等之后,在右边的Tool工具栏中选择texturemap,选择“create -> newfromUVcheck”查看分割好的UV。如果看到正常的UV图,则说明UV分割成功。将模型导出为OBJ文件保存,使用3ds Max打开导出的OBJ文件,并添加UVW展开修改器检查UV是否正确。此时的UV应该会比之前清晰很多。

步骤13:加载新UV

将UV从3ds Max中导出,回到最初OBJ模型的3ds Max工程中,选择身体部分的网格,添加UVW展开修改器,将贴图通道选择为2。在弹出的窗口中选择“移动”,点击“加载”,选择新的UV。加载后可能会出现一些显示错误,不过没关系,打开UV编辑器,随便框选几个顶点即可恢复正常显示。

步骤14:还原模型贴图

由于从Unity导入到3ds Max中会丢失模型的所有贴图,因此需要将导入到3ds Max中的模型还原到Unity中的正常样子。具体方法是调整3ds Max里的材质球,使其对应正确的贴图。

步骤15:烘焙漫反射贴图

在3ds Max菜单中选择“渲染 -> 渲染到纹理”,添加渲染元素为diffusemap,渲染通道选择为2,填充设置为16,分辨率设置为2048x2048。选择好保存位置后点击渲染,渲染出来的贴图可能看上去有问题,但用Photoshop打开或放到Unity中后是正常的。

步骤16:清除通道信息

确保漫反射贴图正确后,打开“工具 -> 通道信息”,选中贴图2并点击“清除”,之后会多出一个uvw清除修改器。

步骤17:塌陷修改器

将UVW展开和uvw贴图清除修改器移动到蒙皮的下面、可编辑网格的上面,然后将这两个修改器右键点击“塌陷”,塌陷完成后将只留下蒙皮和可编辑网格两个修改器。

步骤18:合并新UV

塌陷完成后再次添加UVW修改器,确保贴图通道为1,再次加载之前保存的UV,这样就完成了漫反射贴图的烘焙和新UV的合并。由于烘焙漫反射贴图会将之前的多个材质球合并为一个,接下来需要还原原本的多个材质球以便调整单个部位。

步骤19:吸取材质

打开材质编辑器,点击吸管,移动到模型身上吸取材质。

步骤20:复制材质球

将吸取到的材质球赋值给第二个新的材质球,方法选择“实例”。

步骤21:还原材质球

最后将材质球拖到模型身上,完成材质球的还原。

步骤22:导出模型

将新添加的UVW展开修改器塌陷后,即可烘焙AO贴图。最后将这个模型导出为FBX文件,重新放入Unity中。

经过上述处理,模型的最终效果会比最初有显著提升。

版权声明:本文为CSDN博主「篱笆外的狐狸」的原创文章,原文链接:https://blog.csdn.net/sdqq1234/article/details/45604499

作者信息

九觞

九觞

共发布了 3994 篇文章