本文转载自博主”早上吃什么“《动画中的关键帧动画的原理》一文。

想一想如果制作动画,如果没有关键帧这种技术会是多么恐怖,如果动画帧率为25,即每秒要播放25张画面,假设现在要制作1秒的动画,那么就需要手动制作25张画面,关键帧的出现使得我们只需要画2张画面,中间的23张画面自动计算完成,极大的提升开发效率。

在享受科技的同时不免会思考它的实现原理。

在动画中,动 无非有三种 平移 缩放 旋转。

平移 缩放 旋转 在数学中 我们称它为什么? 变化

在数学中用什么表示? 矩阵啊。

以下是我自己的理解,不一定对

假设有一张50*50像素的图片,把这张图片的中心点放在直角坐标系的原点那么每个像素点都有了对应的坐标,有了坐标就可以把一张图片表达成向量的形式了,因为坐标和向量是一一对应的,我们把这些向量放在一个矩阵中,于是一张图片或者一个图形就用一个矩阵表达出来了。想想一下,你现在在ps中把这张图片向右移动了10个单位,那么就需要对这个矩阵左乘一个矩阵,乘了之后的结果就是图片最后的状态。这个过程已经隐含了动画关键帧了。

再回想一下,关键帧动画需要一个首帧和末帧,中间是自动计算的,这个怎么计算的,其实想来也比较简单,制作动画我们会先定下来共需要多少帧,还是刚才那个向右移动的那个动画,假设需要20帧完成这个动画。

那么平均每一个帧需要向右移动0.5个单位,这就意味着第二帧的计算方法是图片矩阵左乘一个矩阵,这个矩阵意思是向右移动0.5个单位。依次就计算出每一帧的状态了。

如果不仅向右移动而且向右移动的过程中还旋转了,那么再左乘一个旋转矩阵即可。

以后看到动画就不再是动画了 而是一个一个矩阵的相乘。

比如一个战士挥动手中的刀,刀在底层是用一个矩阵表示的,这个动画过程计算过程是先左乘一个移动矩阵再左乘一个旋转矩阵,假设这个过程是0.5秒完成的,帧率也是知道的,那么就可以计算出每一帧的结果,然后

调用引擎展示出每一帧的结果 最后就看到整体结果了。

写到这里 突然想到GPU内部帧缓冲的概念了,既然每个动画的每个帧的数据都是先计算好了 再调用引擎展示出来 那么先计算好的这些帧数据保存在哪里呢? 就保存在帧缓存里面。

以上全是自己的理解。

动画中的关键帧动画的原理相关推荐

  1. 3dmax:3dmax动画栏之关键帧动画经典案例(弹跳小球、实活力小球(上升慢下降快)、小球跳墙、跳动越来越低的小球实例、空间跳动的小球、球跳阶梯)之详细攻略

    3dmax:3dmax动画栏之关键帧动画经典案例(弹跳小球.实活力小球(上升慢下降快).小球跳墙.跳动越来越低的小球实例.空间跳动的小球.球跳阶梯)之详细攻略 目录

  2. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  3. 三维游戏中的角色动画

    为体现游戏的真实性.艺术性,动画效果一般都是由专门的动画师利用特定的软件提前制作完成,在游戏运行阶段,由游戏引擎对这些动画按照游戏的逻辑.用户输入等条件进行控制,有效地播放出来.当然,也有一些动画效果 ...

  4. 蓝松视频编辑之关键帧动画

    视频编辑有两种形式, 一种是主动形式,一种是被动形式, 被动形式就是你做好很多模板, 用户打开你的APP后, 会列出来让用户选择一个喜欢的样式,然后替换里面的图片和视频,就可以形成用户自己的视频.这种 ...

  5. UIView封装动画--iOS利用系统提供方法来做关键帧动画

    iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画options:UIViewKeyframeAnimationOptions类型*/[UIView animateKeyfra ...

  6. 算法真的太重要了!CSDN用动画帮你快速 get 核心原理

    无论你是 Java,Python,还是 PHP,面试总逃脱不了一个问题:算法! 算法是面试常问的问题,这也是程序员准备面试之前,常刷数据结构与算法的原因之一! 算法成为程序员头疼的难题,是因为大多数人 ...

  7. 【WPF学习】第五十四章 关键帧动画

    到目前为止,看到的所有动画都使用线性插值从起点到终点.但如果需要创建具有多个分段的动画和不规则移动的动画.例如,可能希望创建一个动画,快速地将一个元素滑入到视图中,然后慢慢地将它移到正确位置.可通过创 ...

  8. [css] 什么是关键帧动画?

    [css] 什么是关键帧动画? 表示关键状态的帧动画叫做关键帧动画. 所谓关键帧动画,就是给需要动画效果的属性,准备一组与时间相关的值,这些值都是在动画序列中比较关键的帧中提取出来的,而其他时间帧中的 ...

  9. 如何通过素材平移窗口设置关键帧动画?

    在素材平移窗口的底部的关键帧动画制作区域.顶部是时间线,它的持续时间和素材本身的持续时间一致.时间线的下方有两条轨道,一条是"位置"轨道,一条是"遮罩"轨道.我 ...

最新文章

  1. Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享
  2. java web 总结,Java Web 相关概念经典总结(一)
  3. scipy是python下的什么_python – cholesky在numpy和scipy之间有什么区别?
  4. AI基础:机器学习简易入门
  5. 使用Docker Compose 搭建lnmp
  6. Asp.Net Core SignalR 与微信小程序交互笔记
  7. 对表头指针、表头结点,单链表删除的理解
  8. 使用加密工具类进行有效的字符串加密——CSDN博客
  9. 并发编程-concurrent指南-阻塞队列BlockingQueue
  10. 数据库设计的 10 个最佳实践
  11. (9)SPI接收verilog与Systemverilog编码
  12. 知乎热榜:如何看待华为天才少年年薪201万?
  13. 新版 Chrome 等主流浏览器将不再允许关闭点击跟踪
  14. Linux文件的三个时间概念
  15. 上海应用技术大学计算机网络试题及答案,上海应用技术学院.计算机网络期末试卷.doc...
  16. Android学习笔记(十一)——从意图返回结果
  17. configure: error: Can‘t find ext2fs library
  18. 有关EEPROM AT24C02字节写入和页写入
  19. block使用时的一些情况以及防止循环引用
  20. 【GUI制作】tkinter-一款跨平台的简易GUI库

热门文章

  1. 首页技术支持常见问题宽带外网IP显示为10、100、172开头,没有公网IP,如何解决?...
  2. 心はちょっと疲れた、誰も片隅に休んで……作者の宝物は
  3. Adobe 2021正式版发布!全新的adobe2021和2020有哪些区别?
  4. C++ if条件语句用法
  5. 首发国产软硬件完美兼容STM32F407系列功能简介
  6. 动态规划-类数塔问题(在一个n* m的方格中,m为奇数,放置有n*m个数)
  7. 【Python爬虫练习】虎扑社区步行街版块首页信息爬取(BeautifulSoup+MongoDB)
  8. 【关于3D-R2N2的配置和使用】
  9. springboot拦截器Interceptor
  10. 一年月份大小月口诀_大月小月口诀 什么意思 有多少天