马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
本帖最后由 拉撒路 于 2018-5-15 12:58 编辑
大家好我是拉撒路,一个致力于传(cheng)播(wei)知(wang)识(hong)的半吊子技术美术。 今天这篇算是住院系列的番外篇 讲资源压缩的专题内容,不设置回复可见了但是期待各位的回复讨论 Unity中,动画资源的压缩,我之前写过一次。 但是前两天有个小伙伴W同学找我聊了下资源压缩的问题,他们程序叫他用的方法简直是资源压缩界的泥石流……我详细的聊了一下这个方法,并动手测试了一下。然后我的表情是…… 好,等下再讲这个故事。我们先来复习一下我之前已经说过的动画压缩方式。
由于Fbx导出采样原则(即我们通常所说的满帧导出)所致,通常一段动画导出后的容量都会比较大,常见的压缩方式只有一种,即使用unity自带的动画压缩。这里再额外介绍两种非常规的压缩方法以应不时之需。
Unity自带的动画压缩选项有三种分别是关闭压缩 减少关键帧减少关键帧并压缩文件。 1.关闭即为不进行压缩保持导出时的状态。2.减少关键帧 即unity会检查相邻两帧之间移动旋转缩放的阈值,当这个值小于规定数值时就删掉其中一帧。3.减少关键帧并压缩文件 除了2中所描述的内容还会降动画文件进行打包压缩,使其减少占用硬盘容量,但对内存容量并无影响。 Rotationerror、Positionerror、Scale error三个值是上文“减少关键帧”内容中所提到的阈值,这个值越大被删除的帧就越多,动画文件相对就越小,同时动画质量相对也就越差。 当动画压缩过于严重时,一些动作幅度较小的动画将会严重失真,如待机动画在压缩严重时腿部将无法站立于地面,而是随着质心摇摆。产生此类问题,只需将该动画的压缩阈值略作调整即可,如果遇特殊情况调整阈值无效可尝试后面的方法。
Max中导出时进行压缩 在max的导出面板也有减少关键帧的选项,其工作原理也与unity相同,只是max作为专业的动画制作软件,他的阈值允许的精度更高可以到小数点后面很多位。而且作为美术软件相信他对动画关键帧的删减也更专业。但缺点也很明显,他不能实时预览。当我们设定一个阈值之后,没有办法实时查看压缩后的效果,难保压缩后的文件没有错误,不适用于处理大量的文件。当unity无法处理某个动画时可以用max尝试。
编辑fbx动画 这种是非常规的办法了,我也是听人说没试过。方法是 在max中导出fbx之后,使用可以编辑fbx的软件(如mortionbuilder),对动画进行删帧。(具体操作1.用mortion builder 2012-204任意版本修改FBX文件并直接打开,帧率设置成12.5,2.然后在animation工具栏下选择勾选Plot on frame,选择12.5帧,Filters to apply 选项选 Unroll,然后点击右下角的Plot就可以了减帧了。不过有时候还要自己手动调整下,毕竟会有掉帧的现象。)这个办法的好处显而易见,由于是动画师手工删除,既能保证动画的质量又能保证压缩到最小。缺点也很明显,工作量大浪费时间,如果不是非常重要的角色出现解决不了的问题,不建议使用这种方式。
所以,W同学用的方式是这样的,导出动画文件FBX,然后将动画分段重命名,然后将动画拷贝出来单独放在一个文件夹。 到此为止,这些操作都是可行的,而且提取出动画文件,在打包时只打包提取的这部分过滤掉FBX也是能够起到压缩作用的。但是下一步故事开始了……程序要求他们对拷贝出来的动画进行删帧……是的,我们都知道unity是不支持对fbx下的动画进行修改的,但是一旦动画被剥离fbx,unity就会认为这是可编辑的。这个方案看起来很美,它既能像上面提到的mortion builder 这种软件一样手动删除帧,又不需要你有额外的学习成本。但是,如果事情真的这么完美W同学就不会来找到我了。先看图:
这里分别是拷贝出的动画文件、删帧修改后的动画文件、fbx文件。你没看错,删帧之后,文件变大了。这里涉及到一个unity说不上是不是bug的bug, 如果对fbx下剥离出来的动画文件进行任何修改,这个文件都会变大三倍左右。因为删了帧文件变大,所以说这是bug,但是本身修改fbx的动画是违规的,所以这也算不得bug…… 所以结论就是,这个方案不可行…… 嘛虽然不可行但是看到这里各位还是涨姿势了嘛 点击下方链接解锁更多姿势哟
|