MMD模型导入Unity的解决方案

前言

  学了Unity后,总是感觉缺少资源,包括人物、物品模型、动作数据、贴图、特效,各种插件,还被骗去学了几天各种美术软件。
  说起模型和动作数据,就又想到MMD,毕竟有那么现成的资源,虽然不能商用,但用来学习是再好不过了。
  于是上网找了些方案,在此做一个记录。

操作

  之前看傅老师的视频,用的是成熟的插件,是最快的方案,但插件的体积太大,功能太完善,就想自己导出FBX文件。
  FBX格式可以包含模型、动作数据,和MMD分为多个格式不同,并且可以被Unity直接识别使用。
  我准备用Blender导入MMD模型并导出至Unity,前面步骤参照的是玩游戏不如跳舞系列:MMD到Blender到UE4,资源导入一条龙文章。

导入Blender

  首先下载Blender,前面文章用的是2.79,我用的是2.8,可以在官网下,也可以在Steam平台下载。
  打开软件,如果是英文界面,自己去找教程调整为中文界面。
  开始会送灯光、摄像头、立方体各一个,用Shift全选,然后鼠标移动到视图窗口按键盘X删除物体。

  然后下载 blender_mmd_tools,2.79直接点绿色按钮下载,2.8在这里下载。
  下载后准备安装插件,找到Blender的文件夹(Steam可以直接右键属性->浏览文件夹),路径在Blender\2.80\scripts\addons,将mmd_tools文件复制到这个文件夹中。
  然后回到Blender中,进行如下步骤:
1.菜单栏编辑按钮,点击设置
2.点插件按钮,搜索mmd_tools插件
3.确定插件已经勾选
4.然后在窗口左下角的汉堡菜单中点击保存用户设置
  此时在视图窗口按N,可以在呼出右侧栏,有MMD选项:
,点击Model下的Import按钮,即可导入模型,注意缩放调整为0.1
这里我用神帝宇的骑士符华模型,可根据需要自行选择模型
  导入后为白色模型,不过贴图其实已经贴上了,视图中点击模型的网格(Mesh),再换成纹理绘制模式即可看到彩色的模型,不过这并不重要。
  相对于其他格式,pmx格式有个特点,就是只有一个Mesh,我们用PMXEdit改模时用的“绞”模式,也是根据纹理(Material)选择显示/不显示的;这一点从模型存储上就已经决定了,每个纹理都会记录自己的顶点偏移数,例如第一个纹理“首”会记住前N个顶点属于自己,第二个纹理会记录,前N到M个顶点属于自己,以此类推。
  这却不总是我们想要的,例如希望模型上的某个网格,例如裙子、或头饰,在某些需要的时候隐藏,这时候一体的网格做不到这种效果,所以我们要拆分网格:
  我们可以在视图窗口直接点击网格,或者在继承树下找到网格,成功时会显示橙色的描线,之后点击[Separate By Materials]根据材质分离网格,等待数秒后,即可再继承栏看到网格被拆分:
Mesh被拆分,并且物件可被单独选择

  导出前还有一件事,MMD的骨骼是用索引确定父子层级的,因此骨骼重名是有可能的,这会导致转换为Humanoid时,一条手臂识别不出来,因此要将骨骼重命名;在Github中已有别人写好的脚本,将.py文件下载下来,随意储存在一个地点,然后返回Blender,将鼠标放在视图窗口任意一个角落,当鼠标变为十字时点击拖拽出一个新的窗口,将窗口改变为脚本窗口:
  点击打开新文本,大概刚刚下载的.py文件,然后在继承栏点击arm层,再点运行脚本:
  没有报错既是运行成功。
  然后就可以导出模型了,框选所有,包括网格和骨骼,然后点击导出为FBX:
  选择好输出的文件夹,主标签中,勾选选定的物体,坐标系按照图示,改为Unity的左手坐标系,Shift多选骨骼和网格,路径模式选择复制,并将纹理内嵌
  事实证明纹理内嵌在这里并不好使,但Unity中可以自己贴进去,无碍。
  然后选择“骨架”标签,将[Add Leaf Bones]消勾,否则每次导出都会新增一堆尾骨骼。然后导出即可

Unity处理流程

  我们打开Unity并新建一个放模型的文件夹(和在MMD中一样),将新建好的FBX模型,以及贴图文件都放到新文件内。
  点击模型文件,将模型转换为Humanoid:

  如果之前都按步骤进行,花上一些时间(几秒几十秒)就可完成,最多出现黄色的Warning,而不会有红色的Error。
  理论上现在就可以套接任何Humanoid的动作数据了,不过现在有两个问题:1.模型是白色的;2.头发、衣服的物理不正确。
  首先贴图问题,虽然我们用了内嵌纹理,但贴图并不会帮我们好好贴上。
  这个既好解决也不好解决,可以发现在导入模型的文件夹中,出现了一个新的Materials文件夹,里面放着材质,和MMD中同名,我们对照着Blender或将模型导入Pmxedit,将所有材质的Albedo一一放上贴图就好。
  操作很傻瓜化,就是有些麻烦,有些模型还好,有些模型有五十多个纹理,暂时没有什么好的解决方案,就这样吧。


  费了半天劲贴好贴图后,人物就是彩色的了,此时放上动画控制器,再给点网上收集的动作,就可以运动了:
  现在有个问题,就是物理,符华我已经改过了,衣服另外一侧和头发已经好很多了,右侧的那个妮莎没改过,可以发现裙子和头发很僵硬。
  我在傅老师视频中看到的解决方案是用Unity自带的Cloth组件,需要将裙子、披风之类的和主体模型分开导出,要变比例,等等等,感觉有些麻烦,于是用了另外一种方法:动态骨骼。
  动态骨骼是Unity上的一个收费插件(可以去百度一下弄个先学一下),上手简单(我直接在B站上搜了Dynamic Bone)。

动态骨骼

  使用方法参照上面的视频即可,我这里只是简单说一说。
  将下载下来的unitypackage文件导入Unity。
  然后找模型中需要动态的根节点:例如头发根部、披风固定点、裙子固定点、尾巴根之类的。
  寻找方法就是打开骨骼层级,看位置差不多就移动、旋转几下。

  头发不止有一个,例如这个符华就包括侧马尾、后马尾、刘海、侧发等共五个头发:
  选择这几个根骨后,创建动态骨骼组件,并逐个将根骨放到Root参数中:
  此时运行,即可发现头发已经出现物理,移动人物,尝试调节下面的参数。
  同样方法给裙子和披风上物理,不过出现了新问题:穿模。原因是动态骨骼不知道该和谁碰撞。
  该插件还提供了一个组件,叫做Dynamic Bone Collider,可以上胶囊体碰撞框,根据需要增加碰撞胶囊,然后在Dynamic Bone中指定碰撞胶囊的个数和具体对象即可。

动作

  不止模型,动作文件也可以导入Unity,可以拉状态机,可惜我手头好用的动作文件太少,只有几个走路的。

  做法:首先找一个最基础的骨骼模型,例如这个:
  骨骼和网格数量太多会导致动作文件大小激增,所以不需要太多的网格面,以及头发、裙子等骨骼。

  按照之前的流程处理,不过不需要分离网格,作为整体即可;

  然后在继承层级中,选择arm下面的任意一个成员:姿态、骨骼组、mesh都行,点击import动作::
  导入VMD文件,不过别忘了缩放要和模型的缩放一致:
  成功后尝试调整时间线,如果模型运动正常,即成功完成任务,正常导出即可:

  如果动作名称乱码,可在导出前后调整,在Unity中转换为Humanoid即可用给其他Humanoid模型(转换失败可能是忘了给骨骼用脚本重命名了):

总结

  借助各种转换,从MMD、虚幻商城、某宝解决了模型和动作的燃眉之急,下一步想弄一套好用的动作状态机。

model: 符华黑骑士配布版 神帝宇
Nisha Labyrinth (Normal) Requieus
モブ十字軍騎士1100セット Tansoku102cm

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容