首先是实现的Demo图

根据wowmodelviewer的源码,把数据导成自己的格式,修改了一些bug, 实现的骨骼动画。

骨骼动画的实现还是一个顶点受最多4根骨骼影响, 然后计算出这个顶点在最多4根骨骼下影响的位置,这里没什么特别的东西

不过wow也有一些不同的地方,例如数据存储方面.

1, 数据存储的优势

拿这个动画来说,看他骨骼的总时间表,有800000ms, 就是有800s动画,他的骨骼在关键点是33ms存一帧,也就是说理论上也是1s存30帧动画。

假如说全部存取的话, 每根骨骼就是得保持 800 * 30 = 24000 个关键帧信息, 对于每个关键帧信息, 假如说保存 一个Pos, 一个Scale, 一个Quat,

以float类型保存的话,就是一个关键帧信息有 10 * 4 = 40个字节的量, 然后 每根骨骼就得保存40 * 24000 = 0.915MB 数据, 现在有190根骨骼,

0.915MB  * 190 = 173.85MB, 就是说全部保存的话有173.85MB数据! 这个是理论上的情况。

我按它的数据信息导出,导出的骨骼文件大小是3.47MB, 如图, 这个还没有完全压缩,Quat还没有压缩,是4个float的,Quat压缩后

文件大小估计在2.5MB左右。现在的情况就是173.85MB到2.5MB的压缩量。是在哪里实现的。

分析:

拿一根骨骼举例,总共有800000ms的时间,24000个信息,它实际保存的信息远远没有这么多。有的骨骼Pos只保存100多个关键点,Scale绝大多数情况

下是没有保存,也就是默认值1.0, Quat保存的稍微多些,最多有4000多帧信息,保存了 1 / 6 的信息。按照这样的数据存储法,信息量就大大减少了。

(当然还有一些附加的信息,如时间表,范围表, 但总量不大),  然尔它在3dmax导出plugin中是如何实现的?

猜想:

在3dmax的plugin中,首先他也导出全部帧信息,就是24000帧Pos, 24000帧Scale, 24000帧Quat, 然后用程序优化,像24000帧Scale, 基本可以不保存,

大部分的情况下,Scale为1.0, 只要保持少数不为1.0的情况, 这段数据是省略了。 Pos, Quat用排序法,一个一个查找,从第一个位置开始,假如第二个

位置和第一个位置相同,则省略,相应的时间表上也省略,直到不相同为止,然后第二个位置。。。。。。。。。。

这样几圈下来,所存储的信息量就大大减少了。

提问: 为什么会很多帧数据会一样呢?

原因可能是导出的相对矩阵的情况, 假如插件中导出的绝对矩阵,那么每帧信息是不一样,而现在导出的相对矩阵, 在一个动画中,可能手对于手臂是不动的,

假如是导出绝对矩阵的话,他的世界位置是肯定变化的,而对于相对矩阵,这些位置都是一样的。(这应就是plugin导出相对矩阵的好处)

总结:

当然他还用了一些其他的压缩技巧,就是Quat是4个float,压成了4个short, 范围(-32768 ~ + 32767) 实际上精度损失不大。

WOW技术---2, 骨骼动画相关推荐

  1. 基于可编程图形处理器的骨骼动画算法及其比较

    2009-10-19 作者: 季卓尔 张景峤 来源: 万方数据 关键字: 骨骼动画 可编程图形处理器 计算机图形 蒙皮网格 统一 骨骼动画相对于之前的动画方法具有占用空间小的优点,但是其代价是计算量的 ...

  2. Skeletal Animation(骨骼动画)

    Skeletal Animation(骨骼动画) 有关骨骼动画的东西都放在这里好了. http://en.wikipedia.org/wiki/Skeletal_animation Skeletal ...

  3. 模型的骨骼动画技术讲解

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  4. 关于骨骼动画及微软示例Skinned Mesh的解析

    这是我自个写的,第一次发. 没想到这个贴子编辑器极差. 原文是有字体字色的.现在只能清一色了.    版主,发贴的编辑器太难用! 你有必要向上反映一下. 下面的字体是我敲html标记加上的,大家凑和看 ...

  5. cocos2d-x 3.8.1的骨骼动画加载方法addArmatureFileInfo仍然存在问题

    提出如题所示的问题,心里非常别扭,但的确是事实.因此,Cocos Studio(我目前使用的是 2.3.2)在许多方面还有改进的地方,包括与之相对应的cocos2d-x中的代码操作部分. 问题 目前, ...

  6. 尝试优化骨骼动画计算的意外收获——使用嵌入式汇编对float转int进行优化

    本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4984530.html 公司引擎目前是使用CPU计算骨骼动画(采用了D3DX提供的函数 ...

  7. 基于canvas的骨骼动画

    最近学习到了一种关于canvas的骨骼动画,听这个名字就知道他和canvas之前的动画不同,不知道你有没有兴趣了解一下呢? 关于骨骼动画最初是无意间在腾讯团队上看到的,但是由于他官网的教程是在是少之又 ...

  8. DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【1】)

    目录 1.前言 2.本章代码简要说明 1.前言   经过了一系列比较枯燥的命令行式的"外篇"系列教程后,这一篇起回归主干,继续我们的D3D12之旅,本章就利用已经学习的assimp ...

  9. Unity 2D骨骼动画2:创建真实动画

    http://bbs.9ria.com/thread-401781-1-1.html 在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具.它的主要思想是为了把它应用到你自己的游戏来介绍和教基本 ...

最新文章

  1. Oracle 11g AMM与ASMM切换
  2. RabbitMQ 消息队列六种模式
  3. 前端学习(2014)vue之电商管理系统电商系统之监听on-remove事件
  4. 【多线程】:Synchronized和ReentrantLock的对比
  5. 微服务下的应用架构设计(COLA架构)
  6. 四种方式话Equal
  7. python怎么读写文件-python3 excle(python怎么读写excel文件)
  8. iOS 程序 main函数之前发生什么
  9. 一共有多少种操作系统
  10. android获取系统剪贴板内容,android系统如何如何恢复剪贴板内容
  11. 三节串联锂电池充电管理芯片,IC电路图,BOM表
  12. MongoDB学习笔记(五) MongoDB文件存取操作
  13. Android音频播放
  14. 通用Excel表格导出(Map类型数据导出为表格)
  15. Coreldraw绘画看了这个才算是真正明白了什么叫绘图
  16. win、linux、unix查看系统主机名
  17. top,ps,pstree工具介绍及举例
  18. python用turtle画月亮_使用python turtle画高达
  19. vi 跳到文件最后一行
  20. rocketdock 修改隐藏快捷键

热门文章

  1. SQL语句中的USING用法
  2. 从零开始水安卓——APP内容共享
  3. 1520 - 骑士的金币(coin)
  4. Unity3D之矩阵运用
  5. Java数组中插入元素
  6. 我的macbook应用清单
  7. 双硬盘(固态+机械)装双系统(win10+Ubuntu14.04)
  8. 查看mysql版本的方法
  9. 如何评测光源的好坏?
  10. 小米捧红氮化镓快充?看完此文让你秒懂氮化镓!