跳至正文

Unity制作MMD不完全教程

多图预警

视频正在准备录制中(2022.3.23 我给忘了 原来我说过这种话吗)

前言

参考资料:
专业引擎unity比mmd还简单好用?【附带插件包】
https://www.bilibili.com/video/BV1Db411e74e

这个视频里用的是比较旧版本的Unity
而且做出来的效果其实比较有限
我在大佬的教程基础上做了一些补充

我所使用的Unity版本是2019.4.f
可能已经有了更好的替代方案可以去做
如果有路过的大佬可以在评论区帮忙补充

UP主自己也是萌新
如果教程中有错误的地方麻烦大家在评论区中指出

视频中所用的插件和素材在这里

链接:https://pan.baidu.com/s/1s6cR4Zmw3uKi9ckyhlTh1A
提取码:xxpj

大家可以自行下载

最后希望大家务必遵守模型作者的使用规约


模型的导入

打开素材包里会看到一个unitypackage文件

MMD4Mecanim

这个是大佬开发的将mmd模型转换为unity能使用的模型

直接拖进unity的资源管理器里进行导入

全部import就完事了

中间可能会提示你更换api问你是否做好备份,这里直接选是

导入完成后就可以把人物模型和场景模型导入进来了

进入到模型文件夹会看到这样的图标

选中之后会看到这样的界面

意在告诉你要遵守使用规约(特别是不可商用)

这里我们三个都打上勾,同意

这里第一项第三项都不用管了,第二项把事先下载好的动作文件拖进去

按下process它会自动绑定模型转化为unity能用的动画文件

稍微耐心的等待一段时间,等到鼠标能自由移动的时候就导入完成了

场景模型同理,但是不用添加动作


人物骨骼

你可以先把这个导出来的模型拖进去看看效果

上图点击三角按钮展开

里面应该有动画文件了

把动画文件拖到模型上

正常情况下按下运行任务应该可以做出动作了

但是现在绑定的模式是generic也就是通用模式

我们需要把它转成t字形后面cinemachine的追踪才有效

//这里我也在思考是不是一定需要更换骨骼种类

//如果不用更换的话运镜也能做出效果来就好了

//至少目前我还没找到合适的办法

//当然如果对于运镜要求不是特别高我觉得不转骨骼应该也没问题

(这是已经转完的图)

Animation Type一项改为Humanoid

剩下的一般不用更改,然后点击apply等待一段时间

当切换完成后configure会出现√

这个时候你可以点击configure对转绑后的骨骼进行确认

如果哪里不大对劲就对照着骨骼的英文重新绑一绑

但最后一定要是T字形

运行前这里的Apply Root Motion一定要勾上

否则人物就会原地踏步

当调试正常之后人物模型就可以暂且等一等了


场景材质修改

这里首先要提出的是shader forge在现在来说是一个相对过时的产品

在这里之所以使用shader forge是因为可以对模型材质直接进行修改

而不用去更改渲染的管线

2018之后当Unity自家的图形化shader编辑器shader graph出现后

urp和其它管线标准已经是主流了

更改管线整个场景都会变成洋红色而且自动修复没啥用

最后还是得自己一个一个改太麻烦了

所以理想的解决办法就是直接用unity能用的场景模型而不是mmd

然后就是像这样直接用shader forge了

详细的教程可以参考这个https://www.cnblogs.com/jaffhan/p/7389558.html

(点击查看大图)

shadersetting里面可以更改路径path

之后在材质里选择shader时就可以直接看到自己创建的路径

那个UMP9就是我自己设的路径

在右边的空白区域里按下键盘上的c键就会出现一排备选项

选择color就可以添加颜色

以此类推,按下t选中texture2d是贴图

value则是反光效果,数值越大反光强度越大

多效果混合需要用到multiply

你可以像我这张图中设置的那样子去更改材质

然后最后用上原来的贴图

新建一个material,shader更改为你刚创建的

直接拖动material到场景中就可以更改材质


摄像机景深

windows——package manager——post processing

install这个组件

之后就可以添加相关的脚本了

选中main camara

add component

添加Post process layer

Layer就是应用的层

你可以在上方的layer里添加新的层来更改范围

mode里是几种渲染模式

经常打游戏的朋友应该都听FXAA SMAA

我们需要在main camara这层里新建一个空物体

添加上面这个post process volume脚本

profile选择new

下面选择add effect

选择depth of field(景深)

几个数据从上到下分别是

焦点距离

光圈大小,值越大景深越强

视长(开始变清晰的距离),值越大景深越浅

虚化半径,会影响性能

这几个数据需要你自己根据情况来调整

总之就是你随便拖试出来觉得Ok就行


天空盒

新建一个material

shader选中Skybox/Panoramic

这里需要HDR的素材

就需要小伙伴们自己去找了

如果你找到的是六面的图的话

选择的时候就改成six sides

之后回到main camera

添加skybox组件

材质就选择你创建好的这个

在game窗口里就可以看得到天空了


点光源

各位打光大师可以尽情发挥创造力的地方

Create —— Light —— Point Light

Range灯光范围

color灯光颜色

剩下的让大家自己摸索了

这边就不细讲了

经过上面这波操作呢

场景应该能变得稍微能看一点了


让头发重新飘起来

我们这里用到了spring bone

据说商店里的dynamic bone用起来更好用

不过20美刀对于我这个学生党来说有点小贵

所以最后还是用了免费的spring bone

首先先在模型根目录下挂spring manager

其实这里不一定要在根目录下挂,假设你更改的部位下属头部

你就可以在头这一层级下挂,管理的就只有头这一层次里的骨骼

以此类推可以对不同部位管理

第一个按钮弹出来的菜单暂时没研究懂(日文苦手)

第二个按钮选中所有骨骼

第三个按钮更新骨骼(添加完新的骨骼后要更新才能生效)

最底下可以改变不同组件的代表颜色

一般我们只用最上面这排按钮

这是9的左右两边的马尾

从00开始添加spring bone这个脚本

基点的地方就把下面的01拖进去

也就是说每一个bone的基点都是下一块

这样才能连起来

然后最末尾的一块啥都不用添加

连好之后点击运行就可以看到头发开始飘了


选中添加好的骨骼修改半径可以更改碰撞的半径

现在还会穿模所以我们需要添加碰撞体来防止穿模

碰撞体主要有三种

一种是capsule也就是胶囊体

一种panel是方体

最后一种sphere是球体

在你需要添加碰撞的部位上新建空物体

或者直接在该部位上添加也行(但是不能移动调整位置)

大概是上图那个效果

最后你要选中所有的spring bone在判定位置添加碰撞

例如你放了2个球体,那么size里就填2

就会出现两个空白的地方让你选择哪个球体

之后再运行就会有碰撞的效果了


制作运镜效果

同样是在package manager里面找到

cinemachine和timeline这两个插件

在main camara上右键选择cinemachine——virual cinema

Follow就是让摄像机跟随你选中的物体

look at就是看向谁(锁定视角)

下面的body和aim是分别来调整这两个的视点的

如果你想做一个固定视角的相机这两个都留空

如果你想让相机保持这个位置但是会跟踪视角那么只填lookat

如果你想让相机一直拍摄到脸部那么两个都要填

之后可以根据需要建立一连串的镜头来调整位置

先来说说Time line

创建一个空物体

然后windows——sequencing——timeline

打开时间线窗口

选中这个空物体

时间线窗口会提示你create新的timeline

就像这样,删除现在有的这个组件

把人物模型拖到左边这个地方

选择animation track

然后把人物动画拖到右边去

再把main camara也拖到左边

选择cinema track

然后把刚刚建立的CM拖到右边来

以此类推

如果想做出镜头平滑切换的效果

需要选中左边上面的三角

然后右边时间轴里互相覆盖就会形成三角

意思是这两个镜头需要平滑切换

如果没有歌曲觉得不好运镜

可以再添加一轨audio track

然后把音乐拖进去行了

//前面忘记讲了

要添加音乐需要在main camera添加组件audio source

把音乐拖进去

上面timeLine这轨只是用来对镜头用的

要记得删掉,不删就会重叠两个声音


导出视频

packagemanager

需要把加载测试包这个选项给勾上

然后搜索unity recorder

在timeline里左边右键添加recorder track

右边右键添加recorder clip

拖动你想要录制的部分

选中clip

将select recorder那一栏改成movie

按下运行键即可

录制出的视频一般会放在工程文件夹recording里

一般都是60帧

注意窗口的maximize on play记得勾上


教程暂时先更新到这里了

希望以后还有更好的办法来实现这些效果

发表评论

您的电子邮箱地址不会被公开。