看了本文你可以实现对pmx或pmd转换的fbx模型和动画极限压缩
首先,我们需要搞清楚,fbx分为Binary和ASCII编码形式,前者为二进制,后者为文本形式,后者体积比较大,大的不止一点点!而MMD4Mecanim转化pmx/pmd得到的fbx文件就是ascii编码的!
本文使用工具:Autodesk FBX Converter 2013、Unity3D5.5.0f3x64、MMD4Mecanim20161206,系统win8.1x64
第一步
我们用mmd插件对模型单独转化为fbx;同样,对pmx+vmd合起来转化为带动画的fbx。然后用mmd插件识别pmx生成的那个asset文件(你用来转换pmx的那个文件,藏青色的图标)来选择(拖曳fbx进去)刚刚生成带动画的fbx,分离出*.anim文件,这个就是动画数据,然后删除这个带动画的fbx文件。
PS:这里为什么我们要转化两个fbx呢?因为如果你用带动画的fbx那么它的姿势一定是动画的第0帧或第一帧,不利于在unity里面加碰撞体等
第二步
把没有动画的fbx压缩,下载Autodesk FBX Converter 2013,导入转化为二进制(b开头的那个单词:binary)格式的fbx,ok搞定,另存为新文件夹
http://www.xdowns.com/soft/softdown.asp?softid=96396
第三步
导入场景,加上MMD4MecanimBone.cs脚本,把model,vertex,index文件拖曳进去,这三个文件是必须的,没有的话,MMD4Mecanim脚本的物理无法演算
第四步
你以为就上面结束了,那么大错特错了,上面只是准备工作,等我整理好在写,处理完以上几个步骤我们已经缩减了78.7%的体积,这里我们已经不能再对fbx数据瘦身了,此时fbx数据体积仅仅比pmx体积大0.99M,pmx体积是2.66M(仅供参考),进行后面的重采样,我们可以进一步缩小动作数据体积,这样我们就可以看到动作和模型分离的好处了
目前,我们的vmd数据是wavefile_full_miku_v2.vmd,体积是4.05M,我们的.anim文件是7.55M,体积其实已经够小了,但是,我们可以进一步瘦身!
经过测试,重采样的效果不是很好,可能还会增大数据,于是这里提供一种方法,就是制作unity支持的AssetBundle包,后缀可以改成任何名字,其实后缀对于unity来说没有多大意义,仅仅是一种识别关键词,其内容主要的无非是两种情况,二进制和文本,二进制就是非明文,你可以用16进制查看器检测;文本就是你可以用记事本打开看到规则有一定秩序的文本。具体打包方法可以官网搜索AssetBundle查看,因为各个版本api有出入我就不说了5.3和5.4就有很大出路。打包为ab包可以减小一定体积,但是远远比不上用7z来压缩vmd的体积变化率
第4.5步
进一步压缩->删无用帧
这个其实腾讯GDA那边有,动画压缩,说了一些原理,懒得搬,有空把代码分享一下,可以到我的Git关注一下,同一个ID
教程尽情期待。。
网友评论