将mmd模型改造成游戏可用模型

      最近在学习unity3d 5.0的基于物理的渲染,说实话,这玩意比unity4里的传统光照模型好理解,而且也多了很多的贴图可用,效果也好了很多,尤其是加入了AO贴图以后,能够很好的表现模型暗部的阴影了。出于个人兴趣,就使用了mmd的模型放到unity5.0里做效果,能在unity里看到可爱的妹子,对于我来说是很开心的,这里用到了mmd4mecanim(以下简称mmd4)这个插件,实在是非常感谢作者nora先生,这个插件能非常完美的将mmd模型导入到unity中去。这里附上作者的twitter:https://twitter.com/Stereoarts  注意需要翻墙。

     这个插件能将mmd模型和里面的动作转换为fbx文件,这个格式能很方便的导入3dmax,maya,c4d等3d建模软件进行修改。

     接下来我稍微讲一下导入mmd模型进入unity里的步骤,其实本身就非常的方便和简洁。

    1.导入mmd4插件,导入完成以后应该就会看到红箭头标出的3个文件夹了

2.找一个mmd模型,一般mmd模型格式为pmd和pmx,下载过来的mmd模型一般会是一个文件夹包含pmd或者pmx文件和一堆贴图文件,注意不要改变文件夹结构,直接将文件夹放入unity工程里,如图,这时候mmd4插件会自动对应pmx和pmd文件生成一个.MMD4Mecanim文件。

3.选中这个.MMD4Mecanim文件之后,就能在inspector窗口里看到模型使用条约,我们都勾选上并点击同意,之后就可以看到转换界面了,点击process,稍等一会儿,模型就生成了。生成的模型会在对应的pmx或者pmd的同一个文件夹下,并生成一个Materials的文件夹,里面是这个模型的所有材质。



4.将这个模型拖到场景里就能看到漂亮的mmd模型了。


5.接下来是重点,由于mmd4里的shader是完全模仿mmd效果的shader,并不是基于物理的shader,所以需要将生成出来的shader全部调为unity5里的standard,选中materials文件夹里的所有材质球,将shader改为standard。


因为没有仔细调整,所以模型会变成这个样子

mmd模型的材质命名基本都是日语的罗马音,所以懂日语的人会比较好找对应的材质球。

将材质球稍微调整之后,得到一个看上去比较正常的模型。


6.以上的效果看上去还不错,但是细节部分完全就不行了。unity可以使用lightmap来烘焙静态的物体,使得其阴影能够很好的表现出来,但是动态物体就不行了,这里就需要给动态物体添加AO贴图,在standard的shader里这个就是Occlusion贴图。接下来就需要得到一个比较好的Occlusion贴图。

7.使用3dmax打开这个fbx文件。查看该模型的uv发现,这个模型的uv非常混乱,并且使用了镜像和重叠的uv,这是因为mmd模型原本是为了做视频而做的模型,所以可能在制作的时候并没有按照游戏模型的制作标准来分uv和制作贴图,但是Occlusion贴图的烘焙又必须依靠正确的uv来烘焙,所以这里需要重新分一下模型的uv。


8.一般mmd模型会有两个网格部分,一个是脸部,一个是除脸部以外的其他部分。选择除脸以外的部分,选择可编辑网格中该部分的所有顶点,将焊接值设置为0.001,然后焊接。

焊接之后顶点应该会变少

9.选择脸以外的部分,因为焊接了顶点,可能面的平滑会出问题,选择脸以外部分网格的所有面,并自动平滑一次,选中脸以外的部分,选择导出选定对象,并导出为obj



10.将导出的obj文件导入到Zbrush 4R6中。这里准备使用zbrush 4R6里的uvmaster进行自动拆分uv。


11.在Zbrush里找到Zplugin,选择uvmaster,并使用里面的unwrap命令,稍等片刻,uvmaster将会自动把模型的uv分好


12.稍等之后在右边的tool工具栏中选择texturemap,选择create -> newfromUVcheck查看分好的uv,如果看到这样的图,则说明uv已经分好了


将模型导出成obj保存,用max将导出的obj打开并添加uvw展开修改器检查uv是否正确。现在的uv是不是好看多了。



13.将uv从3dmax中导出,回到最早obj模型的max工程中,选择身体部分的网格,添加uvw展开修改器,将贴图通道选择为2

弹出窗口中选择移动。点击加载,选择新的uv。加载之后可能会有一些显示错误,不过没关系,打开uv编辑器,随便框选几个顶点就显示正常了。


14.因为从unity导入到3dmax中会丢失模型的所有贴图,这一步要将导入的3dmax中的模型还原到unity中的正常样子,具体方法就是调整3dmax里的材质球,对应贴图就好。


15.3dmax菜单中选择 渲染-->渲染到纹理,添加渲染元素为diffusemap,渲染通道选择为2,填充设置为16,分辨率设置为2048x2048,如图


然后选择好保存位置点击渲染,渲染出来的贴图看上去感觉是有问题的,但是其实用photoshop打开或者放到unity里去之后是没有问题的


16.确保漫反射贴图正确以后打开工具->通道信息,选中贴图2并点击清除,


之后会多出一个uvw清除修改器


17.将uvw展开和uvw贴图清除修改器移动到蒙皮的下面,可编辑网格的上面


然后将这两个修改器右键--》塌陷,塌陷完以后将只留下蒙皮和可编辑网格两个修改器。

18.塌陷完以后再次添加uvw修改器,确保贴图通道为1,再次加载之前保存的uv,

这样就完成了漫反射贴图的烘焙和新uv的合并。

由于烘焙漫反射贴图会把之前的多个材质球合并为一个,接下来就是还原本来的多个材质球以便调整单个部位。

19.打开材质编辑器,点击吸管,移动到模型身上吸取材质。

20.将吸取到的材质球付给第二个新的材质球,方法选择实例。

21.最后将材质球拖到模型身上,完成材质球还原。

22.将新添加的uvw展开修改器塌陷之后就可以烘焙AO贴图了,最后把这个模型导出为fbx之后,重新放进unity中。

模型最终效果就变成这样了,是不是比最早的好很多呢

### 回答1: 使用three.js加载mmd模型的动画很简单,首先你需要使用MMDLoader.js加载MMD模型,然后将加载的模型添加到three.js的场景中,最后使用animationMixer来播放mmd模型的动画。 ### 回答2: 使用Three.js加载MMD模型动画需要以下步骤: 1. 导入Three.js库:在HTML文件中导入Three.js的库文件,确保正确引用并加载。 2. 创建场景和渲染器:使用Three.js创建一个场景对象和一个渲染器对象。 3. 加载模型和动画:使用Three.js提供的Loader类可以加载MMD模型文件(通常是.pmd或.pmx格式)。使用MMDLoader库可以加载模型的骨架和动画数据。可以从Three.js的官方GitHub库中下载和使用这个库。 4. 设置模型材质和贴图:根据需要设置模型的材质和贴图,可以根据模型文件中的贴图路径加载贴图,并设置给模型的材质对象。 5. 创建摄像机和光源:使用Three.js创建一个适当的摄像机和光源,以确保正确的渲染效果。 6. 动画控制:创建一个AnimationMixer对象,将模型和动画数据传递给它,并使用AnimationMixer的update()方法定期更新模型的动画。 7. 渲染循环:在每一帧中,使用渲染器的render()方法将场景和摄像机渲染到屏幕上,并在每一帧中更新动画。 8. 添加互动控制:根据需要添加鼠标或键盘控制,以便用户可以与模型进行互动。 9. 调整渲染效果和性能:根据需要调整渲染效果和性能,例如添加阴影、光照效果等,或者优化资源加载和内存使用。 10. 完:完以上步骤后,就可以在浏览器中加载和显示MMD模型的动画了。 总结:使用Three.js加载MMD模型的动画需要导入Three.js库、创建场景和渲染器、加载模型和动画、设置材质和贴图、创建摄像机和光源、控制动画、渲染循环、添加互动控制,最后调整渲染效果和性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值