美文网首页Unity3DunityUnity技术分享
【在unity中极限压缩MMD4Mecanim转换的模型和动作数

【在unity中极限压缩MMD4Mecanim转换的模型和动作数

作者: superowner | 来源:发表于2016-12-15 00:03 被阅读825次

    看了本文你可以实现对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

    教程尽情期待。。

    相关文章

      网友评论

      • 仿佛兮:?
        superowner:@雨落随风 有啊,腾讯GDA那边有,动画压缩,说了一些原理,懒得搬,有空试一下代码
        雨落随风: @仿佛兮 没有后话了吗?

      本文标题:【在unity中极限压缩MMD4Mecanim转换的模型和动作数

      本文链接:https://www.haomeiwen.com/subject/kvywmttx.html