[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"\u002F2014-08-22-ue4%E5%AF%BC%E5%85%A5mmd%E6%A8%A1%E5%9E%8B":3},{"id":4,"title":5,"body":6,"date":254,"description":12,"extension":255,"meta":256,"navigation":259,"path":271,"seo":272,"stem":273,"tags":274,"__hash__":277},"blogs\u002F_legacy\u002F2014\u002F2014-08-22-ue4%e5%af%bc%e5%85%a5mmd%e6%a8%a1%e5%9e%8b.md","UE4导入MMD模型",{"type":7,"value":8,"toc":250},"minimark",[9,13,22,25,37,44,47,58,67,70,75,78,83,86,89,92,95,100,103,108,111,116,119,122,127,130,133,138,141,146,149,154,157,162,165,170,183,186,189,192,195,200,203,206,211,214,219,222,225,228,233,236,239,244,247],[10,11,12],"p",{},"折腾了好几天，终于把MMD模型导入UE4给搞定了。于是总结下经验，顺便把从贴吧淘到的夏娜模型导入到UE4。",[10,14,15,16,21],{},"这篇文章中的部分内容已经过期，详情请参考",[17,18,20],"a",{"href":19},"\u002F?p=1250","[这篇文章]","。\n事先声明，本人对3D建模这块一窍不通。如果术语方面有出入，请见谅。下面正式开始：",[10,23,24],{},"首先在Blender这边需要做一点准备工作。",[10,26,27,28,32,33,36],{},"到Blender的插件目录\u003C",[29,30,31],"span",{},"Blender","\\2.71\\scripts\\addons>中找到FBX导出插件",[29,34,35],{},"io_scene_fbx","，用编辑器打开export_fbx.py文件。到第2425行，对两行代码进行注释，如果使用的编辑器没有跳转的功能话可以用搜索快速定位。",[10,38,39],{},[40,41],"img",{"alt":42,"src":43},"image","\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb1.png",[10,45,46],{},"修改后的文本如下：",[48,49,54],"pre",{"className":50,"code":52,"language":53},[51],"language-text","#for bonename, bone, obname, me, armob in ob_bones:\nfor my_bone in ob_bones:\n# Always parent to armature now\nif my_bone.parent:\nfw('\\n\\tConnect: \"OO\", \"Model::%s\", \"Model::%s\"' % (my_bone.fbxName, my_bone.parent.fbxName))\n#else:\n# the armature object is written as an empty and all root level bones connect to it\n#fw('\\n\\tConnect: \"OO\", \"Model::%s\", \"Model::%s\"' % (my_bone.fbxName, my_bone.fbxArm.fbxName))\n","text",[55,56,52],"code",{"__ignoreMap":57},"",[10,59,60,61,66],{},"然后需要做的事情是到这个地址去下载Blender用的MMD插件：",[17,62,63],{"href":63,"rel":64,"title":63},"https:\u002F\u002Fgithub.com\u002Fsugiany\u002Fblender_mmd_tools",[65],"nofollow","。下载完成后将mmd_tools文件夹解压到Blender的插件目录。",[10,68,69],{},"打开Blender，进入用户配置。启用刚刚下载的插件。用MMD这个关键词可以快速的过滤到插件，在选择框上打勾即可。如果启用成功的话，在左边的功能区域就能看到MMD的功能了。如果启用了看不见的话可以试着重启一下Blender。",[10,71,72],{},[40,73],{"alt":42,"src":74},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb2.png",[10,76,77],{},"做好了上面的工作之后就可以进行导入的工作了。点击MMD面板上的Model按钮，在弹出的选择窗口左边，将缩放比例调整为8倍。选择想要导入的模型即可，这里选择前几天在贴吧淘到的夏娜模型。",[10,79,80],{},[40,81],{"alt":42,"src":82},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb3.png",[10,84,85],{},"之所以在这里做缩放操作，是因为这个插件不支持导入之后做任何缩放。有读刚刚GitHub页面作者说明的童鞋应该有注意到。由于这个限定的关系，为了保证最终导入UE4的单位不会出错，通过计算得出这里的缩放倍数是8。",[10,87,88],{},"需要注意的是，这里根据模型的不同，导入之后在视图上看到的模型材质可能是灰色的。",[10,90,91],{},"模型导入之后先不忙着下一步动作，要对模型的骨骼结构进行一下检查。由于UE4是不支持多个骨骼作为根骨骼的，所以对于不符合的模型我们要稍作修改。",[10,93,94],{},"在右上角的大纲视图中找到骨架，并查看其结构。如果是类似这样的结构就不需要更改了：",[10,96,97],{},[40,98],{"alt":42,"src":99},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb4.png",[10,101,102],{},"这样的就是可以使用的结构，所有的骨骼都在\u003C全ての親>这个节点之下。如果导入之后发现没有这个节点，而是这样的结构：",[10,104,105],{},[40,106],{"alt":42,"src":107},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb5.png",[10,109,110],{},"那么就需要对骨骼结构进行修正。推荐使用PmxEditor进行修正，打开PE，导入刚刚的模型。执行下面的操作即可：",[10,112,113],{},[40,114],{"alt":42,"src":115},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb6.png",[10,117,118],{},"保存之后重新导入Blender，再次检查一下就能进行下一步工作了。",[10,120,121],{},"模型导入完成之后，接下来就导入动作。这里用的是忘记是哪里下载过来的行走的vmd。导入动作之前注意，保证所有的Object，包括骨骼都处于被选中的状态。Blender全选的快捷键是A。导入时同样调整缩放为8。",[10,123,124],{},[40,125],{"alt":42,"src":126},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb7.png",[10,128,129],{},"完成以上两个操作之后，使用下面的动画预览功能看看模型和骨骼的绑定是否正常。通常缩放设定不一致、导入动画时没有选中骨骼是常见的出错原因。",[10,131,132],{},"成功导入之后看到的差不多就是这样的模型了：",[10,134,135],{},[40,136],{"alt":42,"src":137},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb8.png",[10,139,140],{},"然后我们把Blender的场景单位调节为与UE4一致，在右边的面板上可以找到场景标签。调整为下面的样子就可以了：",[10,142,143],{},[40,144],{"alt":42,"src":145},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb9.png",[10,147,148],{},"接下来我们可以打开环境光，再加上些光源，拖一个摄像机到视图上。",[10,150,151],{},[40,152],{"alt":42,"src":153},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb10.png",[10,155,156],{},"然后选择最左边的那个面板进行渲染预览，就可以看到并检查是否所有的导入都正常了。",[10,158,159],{},[40,160],{"alt":42,"src":161},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb11.png",[10,163,164],{},"预览渲染如果正常话，就可以开始进行导出操作了。配置上保持默认就可以了，为了防止版本不同引起的问题，配置截图如下：",[10,166,167],{},[40,168],{"alt":42,"src":169},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb12.png",[10,171,172,173,178,179,182],{},"导出之后的FBX如果直接导入到UE4的话会出错，因为UE4导入FBX时不识别其中的非英文字符，会出现命名冲突错误。由于MMD模型中的日文实在是太多了，想要手动修正显然不现实。于是参照FBX的官方文档，通过FBX SDK写了一个转义工具来解决这个问题。直接从\u003C",[17,174,177],{"href":175,"rel":176},"http:\u002F\u002Fpan.baidu.com\u002Fs\u002F1xW9ye",[65],"这里","|共享密码：5xrd|>下载，具体的说明请看\u003C",[17,180,177],{"href":181},"\u002Fpage\u002Ffbx-utf8-convert",">。",[10,184,185],{},"打开工具，点上面的按钮打开fbx，然后点击下面的转换按钮即可。转换成功的话会在同级目录下生成文件名追加了_ue4的fbx文件。",[10,187,188],{},"这样导出的文件就能成功的导入UE4了，只是由于UE4的导入器目前功能还不是很完善。其导入的结果和3dsmax导入的结果有一定差别。最容易出现的问题就是斗鸡眼了，虽然可以在UE4中进行调整，但这里我们还是将模型导入3dsmax再重新导出一次，对模型格式进行一下规范化。",[10,190,191],{},"FBX这个文件格式是autodesk定义的，其他软件对fbx的支持或多或少都会有些问题。多次的导入导出很容易出现奇怪的问题。所以出现问题时，用autodesk官方的软件进行一下规范化比较好。",[10,193,194],{},"导入时保持默认配置不动，会有一些警告信息，不会有什么影响。导入之后是这个效果：",[10,196,197],{},[40,198],{"alt":42,"src":199},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb13.png",[10,201,202],{},"对比下会发现下方丝袜的材质效果有些不明显，材质相关的建议在UE4中进行相应的修正。在这里进行修正需要会使用3dsmax，而且也无法保证UE4对材质的处理和3dsmax完全相同。",[10,204,205],{},"同时我们会发现动画的帧数变成了100，由于始终没有搞明白3dsmax要怎么用。这里我选择将其发送到MotionBuilder。",[10,207,208],{},[40,209],{"alt":42,"src":210},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb14.png",[10,212,213],{},"发送成功之后，我们会发现夏娜的丝袜又回来了……",[10,215,216],{},[40,217],{"alt":42,"src":218},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb15.png",[10,220,221],{},"调整好动画的帧数之后，直接导出成FBX。",[10,223,224],{},"至此，UE4外部的模型转换工作就完成了。",[10,226,227],{},"打开UE4，新建一个ThirdPerson BluePrint的项目。项目打开之后，到Content Browser，在自己喜欢的位置导入FBX模型。",[10,229,230],{},[40,231],{"alt":42,"src":232},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb16.png",[10,234,235],{},"根据模型文件的不同可能会出现一些警告信息，例如POT、平滑组之类的。一般情况下无视就好了。",[10,237,238],{},"导入之后效果如下：",[10,240,241],{},[40,242],{"alt":42,"src":243},"\u002Fwp-content\u002Fuploads\u002F2014\u002F08\u002Fimage_thumb17.png",[10,245,246],{},"唯一的遗憾是表情动画从3dsmax导出之后再导入就消失了，尝试导入到别的3d软件也无法读取到。不是很明白其中的机理，好在从游戏制作的方面来看，表情动画并不是必须的。需要的情况下也可以直接在UE4的编辑器里面拖动骨骼，故而这个问题只能暂时搁置了。",[10,248,249],{},"到这里模型的导入工作就完成了。材质和光照全部保存默认的情况下，效果不会很好。这些都是之后需要研究的地方，模型导入成功的话就什么都好说了。",{"title":57,"searchDepth":251,"depth":252,"links":253},2,3,[],"2014-08-22","md",{"layout":257,"status":258,"published":259,"author":260,"author_login":261,"author_email":262,"author_url":263,"wordpress_id":264,"wordpress_url":265,"date_gmt":266,"excerpt":267},"post","publish",true,{"display_name":261,"login":261,"email":262,"url":263},"chaoshikari","chaoshikari@gmail.com","\u002F",1002,"\u002F\u002F?p=1002","2014-08-22 02:12:24 +0000",{"type":7,"value":268},[269],[10,270,12],{},"\u002F2014-08-22-ue4导入mmd模型",{"title":5,"description":12},"_legacy\u002F2014\u002F2014-08-22-ue4%e5%af%bc%e5%85%a5mmd%e6%a8%a1%e5%9e%8b",[275,276],"UE4","MMD","0EpYkU2jkiiy9se72Lmd6y6ntUUM_PAZaylrB-jAjWg",1788763181117]