前言:
5分钟极速版视频教程:https://www.bilibili.com/video/BV1t7uSz4EG2
主要是关于MMD导入到七日杀里,主要是利用脚本优化了许多繁琐费时的工作
然后(我和豆包)自制的小工具箱,应该能减少一些繁琐/容易出错的操作,提高一些转换的效率:
https://github.com/maoxig/VroidMMDTools/releases/
或者度盘链接: https://pan.baidu.com/s/1v3XOD7oDSOZ3HF6xBxZNFA?pwd=a9qe 提取码: a9qe
(抄了不少VRChatAvatarToolkit和MMD6UnityTool的代码/思路)
MMD4Mecanim: http://stereoarts.jp/
(或者如果已经有PMX2FBX直接设置下路径就行)
前置mod和工程文件:https://www.nexusmods.com/7daystodie/mods/3501
感谢以上项目,此外感谢七日杀中文网的相关大佬,本人工作基本上是在前人基础上小修小改以及整合
关于MMD,本视频/工具仅仅是整合了一些已有的工具/思路,在转换、使用时请遵守原MMD的相关规定,尊重相关著作权。如有对二次使用者造成的损害,与本人、本工具无关。
下面是图文教程,最后面还会有原理,或者可能出现的问题,你可以先跟着图文过一遍,如果有问题优先看原理、存在的问题,然后想办法解决
图文教程:
0. 准备好Unity, MMD4Mecanim这俩就行(可选,但是得有PMX2FBX),转换MMD是不需要Vroid mod的工程文件的(如果有namespace报错,是因为引用了Vroid mod的工程文件的类,如果你只想转MMD而不转人物,把报错的那两个文件删掉就行
1. 把要处理的MMD 动作.vmd,(镜头.vmd,表情.vmd)和音频文件夹放到项目里(可以创个Workspace整洁一些)。后面会简单说下资源获取的问题。
2. 导入我(和豆包)写的工具箱之后,会在窗口上面多两个选项
其中VMD To Anim Convter是单纯的vmd转anim的工具,里面也有一些配置,可以检查一下三个路径。其他的是前人的遗产,我就没动放那了
3. 打开VMD Morph Camera Animator Tool,导入vmd文件,然后点击生成动画剪辑(因此,也提供了直接使用anim的导入选项,这里的anim是只包含人物运动数据的anim)。此外,这里说明一下,里面提供的配置默认都是设置好的,如果不知道要不要改那就是不要改
4. (可选但不建议)导入镜头vmd(有些MMD的镜头和动作放在一个vmd里面,这时候还是拖前一个vmd就行),不建议是因为多人下会强行锁定所有玩家的镜头
5. 导入表情vmd(通常MMD的表情和动作放在一个vmd里面,这时候还是拖前一个vmd就行,但是有一些是分开的,所以拆开来了)
6. 预览形态键映射设置,选择你需要添加的曲线,然后点击添加到动画并创建控制器
这里如果创建失败,我目前已知的有些问题是如果形态键写入的太多有时候会报错,我也没找出原因,可以试试取消选择一些形态键映射。
其实到这一步就已经可以添加音频并打包输出了,但是我们稳妥一些检查两步(此外注意,你得检查音频轴和动作轴是对上的,不然音画不同步就很难受,对不上的话手动改一下)
7. (可选)找到新创建的动画,预览一下,确保人物面对的方向(红色箭头)和蓝色箭头基本上对齐,不对齐的话可以修改第一个offset
8. (可选)利用一个已有的人物检查一切正常(可以用vrm的人物预览一下),主要是关注骨架、动作、表情、镜头(可选)。镜头的话得在人物节点创建一个一定规范的镜头,我已经提供了一个脚本一键创建符合规范的镜头。
一切无误就可以点击打包按钮打包导出了。我直接把打包输出路径设在了mod的dances路径下,这样打开游戏就能检查是否有问题
原理
(个人理解,也许不对欢迎指正)
让角色在游戏里跳舞,主要是依赖于一个human controller(和其对应的anim,并且包名、assets名都得一样)。
作者的指引是这样的
所以其实非常简单,只要有anim和controller就行。如果要搞MMD的话,MMD4Mecanim本身就能利用pmx和vmd提取出anim,只需要用这个anim创一个controller,然后把资源命名好然后打包就行了。
我们后面的工具都主要是为了实现 1. 表情 2. 镜头
表情功能应该是由勇气佬搞出来的,其原理就是在controller对应的anim添加一段曲线,指定控制模型Body下的Skinned Mesh Renderer组件,控制相关的形态键在某一帧的权重:
因此其实这是一个双向的过程,既需要人物模型在Body下的Skinned Mesh Renderer组件有相关的形态键,舞蹈本身又得对此做出控制调用。(因此你也能想到,如果有更多的约定规范,可以据此实现更多操作)
镜头功能应该是由-二三佬搞出来的?原理也很简单,就是平时在人物模型下挂一个平时禁用的镜头,然后舞蹈开始激活,结束时关闭:
(注意,角色带的这个镜头得关掉Audio Listener,不然声音会一大一小)
根据前面说的,要能有镜头,需要角色和舞蹈双向符合规范(即Camera_root/Camera_root_1/Camera下的Camera组件,路径是任意的,但这个是前人规范,我们选择遵守),因此只有同时满足 1. 角色在这个路径带有镜头 2. 舞蹈按照约定调用了镜头,才会激活镜头并运镜。
但是现在的问题就是激活的时候会强制把其他玩家的镜头强制锁定在当前镜头,多人下就很难搞。我试了一俩天还是没办法解决(包括但不限于使用不同的name等,但是只要激活就会锁定)。(如果有大手子有办法/建议可以说一下)。
因此本来一开始没想着添加镜头,但是想着说不定以后就有办法,然后就把MMD6Unity那个给抄过来了然后改了改。
总之大概的方法、思路、原理应该就是这样,然后工具的代码都是开源的(除了PMX2FBX那个工具),而且逻辑还算清晰,有问题的话也可以自己试试改一改(说实话我之前也没写过c#,我是臭写python的),然后有些常量可能写死在文件里了,总之可以看看,随便改改都无所谓。在使用工具时有问题可以提,有时间我改改
最后是教程里制作的MMD舞蹈和时雨羽衣,可以试一试,顺带检查检查有没有什么问题(现在已知的问题是这个GETCHAT好像嘴唇表情好像丢失了,但是似乎是vmd本身或者解析库的问题)。
通过网盘分享的文件:GETCHA camera.unity3d
链接: https://pan.baidu.com/s/13FunQDL4Q2BqH1Rlh99Ggw?pwd=2jbk 提取码: 2jbk
通过网盘分享的文件:时雨羽衣.unity3d
链接: https://pan.baidu.com/s/1fu91imVO-lpV5Q_xwDu_TQ?pwd=jwpm 提取码: jwpm
正式版了嘛?如正!
睡一觉再发下角色教程,困死了要。有任何建议、问题可以直接在这楼回复
随便做做
非常感谢大佬分享技术!!!
这个逼装的我给82分,剩下的用666的方式打给你!
板凳!
牛
最近又忙又懒,QQ/B站/N网同名 有问题的话在QQ群反馈
感谢大佬的付出,赞一个!这个逼装的我给82分,剩下的用666的方式打给你!
实在不会,能接委托吗?