Unity3D骨骼动画的分解(CleanData.Ani详解)
CleanData是什么
CleanData以前没有特定的名字,(在easydown这个开源项目中,作为一个GameObjParser模块存在)。
在某三国项目中,我们使用GameObjParser将NGUI 的预设保存为自定义格式(替代了assetbundle方案),以实现不论任何平台都可以使用同一份资源。
在easydown的演示中GameObjParser也将一个简单的模型场景保存为自定义格式并加载。
so.CleanData是想去做AssetBundle的工作,但是格式是我们自定义的,细节更透明。这些信息,甚至可以用到别的引擎里。
假如有一天我们要离开U3D的话。
CleanData.Ani 是CleanData中针对骨骼动画的部分
以一个角色为例,CleanData.Ani有一些辑器脚本,导入CleanData之后。在Animator组件上就会出现一些工具
"Create FBAniclip" 会把Animator的 controller中配置的动画(.anim)存为(".fbani.asset")。
这已经是一种自定义的动画格式
它使用一个新的组件来控制动画播放,这个组件支持在editor模式中直接预览动画。
此处的这个".fbani.asset"还是属于unity的 asset格式,只能用于在unity编辑器中操作,和使用ab打包。
这里还没展现出我们自己写一套动画数据,自己写一个动画播放组件的意义所在。
不过你如果比较一下播放性能,你会发现,我们自己写的动画播放组件居然比原生的快。
(除了我们做的事情可能更少以外,这也说明unity原生动画性能还有很大的提升空间,坐等官方优化)。
然后关键的部分来了,unity的.anim 你没有办法运行时加载,所以你也不能运行时下载一个骨骼动画,给角色加上去。
但是fbani可以,注意那个"export bin",这会把当前动画保存为".fbani.bytes"文件,放在streamingassets目录下。
然后就可以实现运行时载入骨骼动画了
另外,还有个数字你可能也有兴趣关注一下
我们自定义格式存储动画的容量只有.anim文件的十分之一左右。
配合CleanData,已经可以实现整个角色模型和动画一起保存为自定义格式并还原,你是不是开始脑洞大开了呢?
ByTheWay,如果连Anim文件也不从Max里来,行不行呢,也是可能的。
Skele.UserEcho.com
提供了一个插件。可以在untiyeditor里直接修改角色动画,并保存.anim文件。
这个扭曲的动画是我用他的插件扭的,我也实在没有扭动作的天赋和耐心
我们可以使用他,或者对他进行改造,直接编辑.fbani 文件,跳过.anim都是可行的。
这将是一个愿景型的工作,FB引擎希望有一天可以做到MUGEN那个程度,角色,招数随便编辑。
到那一天,脱离MAX直接来修改动画,就会变得有用了。
最新文章
- document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)
- 设计模式C#实现(十五)——命令模式
- php发送邮件
- Centos6---Fail2ban
- MySQL的批处理
- 重新发现梯度下降法--backtracking line search
- JSP中<;base href=";<;%=basePath%>;";>;的作用
- jQuery1.9.1源码分析--Ajax模块
- 算法代码[置顶] 机器学习实战之KNN算法详解
- JqGrid实现自定义查询
- Android上使用OpenGLES2.0显示YUV数据
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程 [sp_select_talberowName]
- javascript---在自由落体实现
- 重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口
- LNMP搭建03 -- 编译安装PHP
- 算法之Python实现 - 002 : 换钱的最少货币数补充(每种货币只能使用一次)
- vue二次实战(一)
- Python模块之shelve
- 【Win10】实现控件倒影效果
- Python并行编程(一):基本概念