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.pswp.cn/web/94352.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从技术精英到“芯”途末路:一位工程师的沉沦与救赎

作者:邱戈龙、曾建萍【长昊律所】 专注于商业秘密、软件著作权的专业型律师事务所,擅长民事、行政、刑事多重救济途径,为众多科学技术领域的商业秘密、软件著作权类案件提供侵权维权、辩护、司法鉴定、司法审计、调查取证等高品质专项法律服务…

刷题日记0824

两眼一睁就是刷!今日计划5道3/5昨天遇到了几件令人心情不好的小事,今天还要处理一下。一早上的好心情被小小的破坏了一下。1056. 易混淆数 简单有思路,心情好。耶比耶比,算是一遍过,这次考虑很周。写完了有一种一遍过的…

Qt c++开发中的delete QThread操作需注意

1、析构函数中,不能执行QEventLoop,会造成 重入问题:事件循环可能触发其他事件,导致已析构的对象被再次访问信号槽连接:正在析构的对象可能还有未断开的信号槽连接未定义行为:对象状态不确定,可…

Seaborn数据可视化实战:Seaborn图表定制与数据可视化入门

高级图表定制 学习目标 通过本课程你将掌握如何使用Seaborn库进行高级图表定制,包括图表的标题、图例、注释的添加,以及图表布局和大小的调整。这些技能将帮助你更有效地展示数据,使你的数据故事更加生动和有说服力。 相关知识点 Seaborn高级…

nano命令使用方法

nano 是 Ubuntu 等 Linux 系统中常用的轻量级文本编辑器,轻量易用,特别适合适合快速编辑配置文件、脚本等。以下是其核心使用方法:一、基本操作:打开 / 创建文件bash# 打开已存在文件(若文件不存在则创建) …

C#_gRPC

6.3 gRPC:高性能跨语言服务间通信 gRPC是一个高性能、开源、通用的RPC(Remote Procedure Call)框架,由Google开发并基于其多年的内部使用经验(Stubby)。它现在是Cloud Native Computing Foundation&#xf…

Ubuntu 多版本 librealsense 与 realsense_ros 编译并兼容 L515 等设备

这篇博客用来记录如何在 Ubuntu 下编译多个版本的 librealsense 并使用 L515 和 D435i 等设备。核心在于 L515 这款设备已经停止维护,直接安装的方案不支持这个设备,只支持 D435i 等后期产品。如果想要同时使用新老的 realsense 产品,需要单独…

Java 泛型 T、E、K、V、?、S、U、V

目录 一、概述 二、为什么使用泛型 三、常见泛型类型参数的含义与用途 示例一:使用 T 定义泛型类 示例二:使用 E 表示集合元素 示例三:使用 K 和 V 表示键值对 示例四:使用 ? 通配符处理未知类型 四、通配符 ? 的扩展用…

1688拍立淘接口数据全面解析详细说明(item_search_img)

一、接口概述 1688拍立淘接口是阿里巴巴1688平台提供的基于图像识别的商品搜索服务,允许开发者通过上传商品图片来搜索平台上的同款或相似商品。该接口的主要功能是接收用户上传的图片(或图片的相关信息),并通过1688平台的图像识…

【Docker项目实战】使用Docker部署轻量级LetsMarkdown文本编辑器

【Docker项目实战】使用Docker部署轻量级Markdown文本编辑器一、LetsMarkdown介绍1.1 LetsMarkdown简介1.2 主要特点二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3检查docker compose 版本四、拉取容器镜像五…

Node.js自研ORM框架深度解析与实践

Node.js自研ORM框架深度解析与实践 前言 在现代Web开发中,对象关系映射(ORM)框架扮演着至关重要的角色。它们为开发者提供了一层抽象,使得数据库操作变得更加简单和直观。本文将深入解析一个基于Node.js和MySQL的自研ORM框架&…

汇总图片拖进ps中 photoshop同时打开几个文件夹

如果你有许多文件夹,你想选中一部分,然后把里面的图片全部拖进photoshop当中,但是文件夹又不能直接拖进去,那么你可以尝试使用一下这个工具,首先测试一下直接拖文件夹。选中你要处理的文件夹,直接拖进photo…

mysql 5.7 查询运行时间较长的sql

开发过程遇到sql 执行时间长,又取消不了的情况 可使用 kill query ID 杀死进程获取正在运行的sqlSELECT ID, -- 进程ID:MySQL服务器分配给每个连接的唯一标识符,用于区分不同的客户端连接USER, …

MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作

目录 一、MongoDB 基础准备 1. 官方资源获取 2. 安装步骤解析 二、MongoDB 核心指令详解 1. 数据库操作指令 2. 集合操作指令 3. 文档操作指令 查询文档 插入文档 修改文档 删除文档 三、进阶查询技巧 1. 运算符的灵活运用 比较运算符 逻辑运算符 范围与成员运算…

CVPR2025丨遥感领域,全模态与秒超高清遥感建模重大突破,性能提升创新点

关注gongzhonghao【CVPR顶会精选】刚入门遥感建模时,总好奇别人为什么总能提出新方法?慢慢摸索后才发现,创新点并不是硬憋出来的,而是要从数据特性、传感器差异、地物细节以及环境变化中发现机会。不同波段、不同分辨率、不同时相…

HTML5详篇

前端三剑客 前端三剑客是指HTML、CSS和JavaScript: HTML超文本标记语言(Hyper Text Markup Language):简单理解描述网页结构的;用于网页内容的语言。它通过使用不同的HTML标签来定义页面中的各种元素,例如标题、段落、图像、链接等【无羽毛的小鸟模型】 CSS层叠样式表(…

【Transient-Free 3DGS】delayed densification + coarse to fine增加GS的鲁棒性

25年最新连接去除场景瞬态对象工程与3DGS的pipeline,改进了spotlesssplats,已开源: [2506.02751] RobustSplat: Decoupling Densification and Dynamics for Transient-Free 3DGSAbstract page for arXiv paper 2506.02751: RobustSplat: De…

【MySQL】CRUD基础详解

CRUD基础前言:数据库的层级结构一、新增(Create)1. 单行数据 全列插入2. 单行数据的简写插入3. 指定列插入4. 多行数据插入二、查询(Retrieve)1. 全列查询2. 指定列查询3. 查询结果为表达式(1)…

互联网大厂Java求职面试实录:核心技术栈与业务场景解析

互联网大厂Java求职面试实录:核心技术栈与业务场景解析 面试场景设定 本文通过一个严肃的面试官和搞笑的水货程序员大面条之间的对话,模拟互联网大厂Java岗位的技术面试过程。面试涵盖Java SE、Spring生态、数据库、微服务、缓存、安全、消息队列、AI等多…

response对象的elapsed属性

在Python的requests库中,当我们发送一个请求后,会得到一个Response对象,这个对象有一个elapsed属性,它返回一个timedelta对象,表示从发送请求到收到响应所经过的时间。response.elapsed.total_seconds() 是 Python req…