当前位置: 首页 > news >正文

Unity其他--【MMD】如何在Unity中制作MMD

小菲摇

·之前学习了在Unity中使用动画状态机控制人物,以及用Shader去对氛围图形进行渲染,然后又刷到一些MMD的视频,我就想着MMD能做的事情感觉Unity应该也都能做而且更方便的吧,所以就尝试做了一下。当然这里主要是记录一下自己是怎么做的,方便以后有需要的时候查看回顾。

主要的学习来自这个视频:【Unity教程】如何使用Unity制作MMD/如何在Unity里面使用MMD模型


一.准备插件与资源

①准备MMD4Mecanim:去这个博文中的百度云盘下载的【Unity3D】如何用MMD4Mecanim插件将pmx格式模型转换为fbx格式模型

它用于把MMD的pmx转化为Unity中的可用模型和动作

②准备PmxEditor:PmxEditor中文版

用于在查看丢失贴图的材质原本对应的贴图是什么

③准备动画渲染的Shader:https://github.com/XiaoYuName/UnityURPToonLitShaderExample

④准备模型与动作:

模型(这里我用的是小菲的模型):https://www.aplaybox.com/details/model/AlyBjBpBrhif

动作(这里我用的是Miku摇的动作):https://www.aplaybox.com/details/motion/0xI6349Do7fe

表情(是来自另一个Miku摇动作里的):https://www.aplaybox.com/details/motion/JlVRymPA8fnd


二.新建Unity工程并导入资源

1.新建工程

我这里版本是2022.3.62f1c1,模板选URP的(不是也行)

2.导入插件

先导入MMDMecanim这个插件(在导入模型动作资源前一定要先导入这个插件)

3.导入资源

3.1.Shader资源

然后把动画渲染的Shader直接拖到Assets文件夹下即可

3.2.模型动作资源

接着我们把模型文件夹也直接拖入到文件中

把动作文件也拖入到文件中

然后MMDMechanim插件会自动帮助我们生成这样一个资源,我们需要在右侧阅读使用模型的注意事项后打勾并点击Agree即可

之后它会变成这样,我们在下面找到VMD,把对应的动作文件拖入其中,即可。然点击右下角的Apply再点Process

然后会弹出这个,稍作等待,不用动它,等他把数据装载后之后会自动消失(这个可能会花上大概两三分钟或者更多)

之后我们就可以得到这个装载了模型和动作资源的文件的小菲啦!

4.修复资源

我们可以把小菲拖到场景中去,可以发现此时小菲全身都是紫色的。这是因为MMD4插件用的材质太老了,不适配比较新版本的Unity,这不好的喵,此时就需要我们手动去给他切换正确的材质的。

一般加载完我们可以看到上面有一个Materials文件夹,里面装载了这个模型用到的材质球

打开这个文件夹,并且全选里面的材质,把它切换成我们之前导入的卡通渲染的Shader

此时小菲就全身变成白色的了喵,这是因为材质上的贴图丢失了导致的。有的人可能会问,这不是还有问题嘛?别急喵,我们之前下载的PmxEditor这个时候就有用了。

我们打开PmxEditor(我们电脑现在应该大多都是64位了吧)

把小菲的pmx文件拖入到这里面,选择OK

然后我们就可以在这里每一个材质中查看对应的贴图了

之后我们给小菲每个材质贴上对应的材质即可(嗯对的,一个一个贴上去,虽然听起来很麻烦,但是目前我只会这种解决方案的)

注意逐个材质是发现纹理,需要切换它的纹理类型(不过其实在那个卡通渲染的Shader中似乎并没有放置法线纹理的位置,之后也是放入Base Color那里的)

全部材质都贴上之后可以看到小菲正常显示出来了

注意:

小菲的裙子这里会有些很奇怪的斑点闪烁,似乎是因为这个裙子是分里外两层的,然后渲染的时候有冲突。这里我们先无视这个问题

②重新加载项目,导入新插件之类的时候,MMD4那个插件似乎总是会自动把模型又切换回原来的材质,导致模型又变成紫色的。此时我们再按之前的方法手动把材质都切换为卡通渲染Shader即可。(这里只提供治标的方法,治本的方法之后再研究)


三.添加动作与表情

好啦,现在模型和动作都已经准备好了,我们可以通过Unity的动画状态机来控制动作

1.添加动作

这里我们演示用动画状态机来给小菲住添加动作

我们随便在一个文件夹里右键创建动画状态控制器

双击这个动画状态机打开,并把模型下的子资源中的动作拖入动画机窗口中

接着我们给小菲创建动画机组件

并把我们之前制作的动画控制器拖入到其中

然后点击上方的运行按钮,就可以看到小菲动起来啦!

2.添加表情

2.1.表情修复插件

对于表情,我们需要再去下载一个插件

https://www.bilibili.com/opus/908867611583840278

这个插件用于帮助我们制作表情(MMD4没办法顺利生成表情不知道为什么)

下载完解压之后,进入这个路径,找到这个包去把插件装入Unity中

2.2.表情修复

装完后在上方点击打开窗口

这个位置对应的是小菲的脸(似乎还能控制耳朵的)

把对应的控制小菲脸部的位置和表情拖入其中。改名是给生成的动画起的名字,方便我们查找。

然后点击生成按钮我们就可以看到在对应的路径下生成了我们需要的表情动画了

2.3.用TimeLine添加表情

我们打开Timeline窗口

选中小菲的脸部

点击创建TimeLine

在弹出的窗口中选择保存的位置,保存的文件名并保存

然后我们先按老样子创建一个控制表情的动画控制器

然后给小菲脸部加上一个动画机组件并把这个动画控制器拖到上面去

之后选中脸部,在这个Timeline下面创建一个动画轨道

把小菲脸部物体拖入其中

然后再点击播放,此时我们可以看到小菲已经是有表情的啦

至此小菲的动作和表情就都设置好了


四.简单布置场景

小菲摇的很可爱,但是场景什么的似乎有些单调。这里我们可以简单地给他修改下天空盒,加个地板,调整摄像机位置什么的。

4.1.创建地板

在Hierachy视图中右键,给小菲创建一个简单的平面作为地板

4.2.移动摄像机

在场景视图移动到一个看起来还算可以的视角

然后选中摄像机,按快捷键【ctrl+shift+F】

就可以把摄像头显示在我们想要的位置了

4.3.添加天空盒

天空盒我们可以随便百度搜一个

https://gitcode.com/Premium-Resources/af321/?utm_source=article_gitcode_universal&index=top&type=card&&uuid_tt_dd=10_30857020650-1754276752878-264643&isLogin=1&from_id=147648845

这里我是去这个地方下载的天空盒素材

下载完解压后按之前的方法导入Unity中(注意可能导入之后小菲的模型会又变紫,不要惊慌,我们只需要把小菲的材质再切换到卡通渲染用的Shader即可

之后我们打开这个面板

在这里选择我们觉得合适的天空盒材质即可


五.音乐

这里音乐用的哈基摇我是去网易云下载的,大家也想用去网易云搜索就可以找到并下载的。下载到拖入到Unity的文件夹中即可

我们选中小菲的模型,给她添加这么两个组件

之后把音乐和组件拖入到各自的位置即可

这里有时候如果模型的物理特性没有的话,我们可以把这个选项选为Bullet Physics

之后点击运行就可以看到小菲在载歌载舞啦!

小菲摇

如果想让它看起来更像那种抖音小视频,我们可以在这里添加修改分辨率的宽高比(不过这样的话其实之后用插件内部录制的时候清晰度有点不好,所以可能还是不调了用后期剪辑比较好)


六.录制视频

我们可以去Package Manager中下载这个插件进行录制(注意下载完之后小菲模型又会变紫,我们再耐心调整一下材质)

然后我们打开录制窗口并进行录制。我们这里用1080P的分辨率进行录制,不要用我们之前修改了的短视频分辨率,不然会很糊,像上个世纪的老片。

设置完成后点击左上角的录制即可,它会变灰然后自动运行场景并开始录制。当我们再次点击的时候就结束录制了


七.其他

缺点与不足:

①每次导入新插件等会让工程重新编译的时候,MMD4都会自动又把模型再设置为默认的材质导致模型变成紫色。这个问题之后再研究怎么解决比较好。

②缺少运镜,因为我还不太熟悉Cinemachine这个插件的使用,也还没有找到比较方便的插件来控制摄像头的运动,等后续学习了之后再用到这上面来。

http://www.dtcms.com/a/347067.html

相关文章:

  • Go数据结构与算法-常见的排序算法
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘arviz’问题
  • Boost.Asio 库中的 async_read_some用法
  • JAVA核心基础篇-操作符
  • 嵌入式LINUX——————网络TCP
  • 如何在Ubuntu中删除或修改已有的IP地址设置?
  • 在Excel和WPS表格中快速插入多行或多列
  • 生成一个竖直放置的div,宽度是350px,上面是标题固定高度50px,下面是自适应高度的div,且有滚动条
  • LeetCode算法日记 - Day 19:判定字符是否唯一、丢失的数字
  • 可转换债券高频交易Level-2五档Tick级分钟历史数据分析
  • 什么?OpenCV调用cv2.putText()乱码?寻找支持中文的方法之旅
  • Vue3+ElementPlus倒计时示例
  • 入校申请|基于SprinBoot+vue的入校申报审批系统(源码+数据库+文档)
  • [激光原理与应用-332]:结构设计 - Solidworks - 特征(Feature)是构成三维模型的基本单元,是设计意图的载体,也是参数化设计的核心。
  • LeetCode 面试经典 150_数组/字符串_找出字符串中第一个匹配项的下标(23_28_C++_简单)(KMP 算法)
  • 「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日
  • 构建真正自动化知识工作的AI代理
  • 日志搜索系统前端页面(暂无后端功能)
  • 【leetcode】92. 反转链表2
  • k8s总结
  • Sentinel相关记录
  • 语义通信高斯信道仿真代码
  • uniapp对接一键登录
  • 【数据结构】布隆过滤器的概率模型详解及其 C 代码实现
  • uniapp 页面跳转及字符串转义
  • uniApp对接实人认证
  • uniapp mixins的使用
  • Java接口响应速度优化
  • Python SystemVerilog (Python SV)
  • mysql没有mvcc之前遇到了什么问题