下载此文档

12.TinyCAD简单矢量动画系统解析.ppt


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
第12讲TinyCAD简单矢量动画系统讲师:GamebabyRockSun打好动画基本功计算机动画基本原理计算机2D动画的一般方法介绍(画擦法,双缓冲法)TinyCAD动画系统设计理解消息循环和定时器打造高性能定时消息循环理解消息循环带来的编程思想的一些转变Windows下的高性能计时器对象改写动画线程类的Run函数添加高性能计时器动态创建动画系统的Frame/View结构在主应用面板中添加启动动画的功能按钮;动画实际帧数统计计算方法TinyCAD项目总结和扩展展望第12讲主要内容计算机动画的基本原理利用人类眼睛的”视觉滞留效应”快速的更换多幅连续的画面,从而产生”动感”一般1秒钟内连续显示超过24幅以上画面时人眼基本感觉不到闪烁,可以认为是流畅的动画播放了计算机中就是通过定时循环在一定时间内(一般是40毫秒)显示一幅画面,从而产生动画效果主要分为实时动画非实时动画,2D动画和3D动画,矢量动画和光栅动画等2D计算机动画的主要技术要有一个精确的定时器控制动画更新的周期在动画画面更替时,根据图元新的几何信息重绘图元,并显示对之前已显示的画面擦除的主要处理方式是”画擦法”和”多缓冲法”画擦法利用像素显存字节中的位运算,比如异或运算将图形重绘于原位置,从而擦除原图,再绘制新图的方法显示动画多缓冲法就是利用多个(最少一个)”离屏表面”,先用预定义背景色擦除全部已有图形后再在其上作新图最后再替换当前显示表面的方法显示动画,(当前显示的表面就变成了新的离屏表面)patibleBitmap创建一个兼容的位图(离屏表面MM_TEXT映射模式)将兼容位图装入兼容的设备描述表(后备缓冲区)擦除整个兼容设备描述符表在兼容设备描述表上进行绘制调用BitBlt将兼容设备描述符表整个装入显示区的设备描述表删除兼容的位图和兼容的设备描述符表接管WM_ERASEBKGND消息,不做任何处理,即不擦除屏幕上显示的设备描述符表,避免闪烁TinyCAD动画系统设计在TinyCAD系统中加入动画的目的是为了将来扩展出复杂的动态模拟系统动画是一些物理过程模拟的基础技术TinyCAD系统中的动画系统是简单的2D矢量逐帧实时动画系统使用MFC多线程技术运行动画通过为TinyCAD图形对象添加帧函数扩展图形对象的动画接口(目前硬编码直线对象绕其中心逆时针旋转,图片对象绕其中心顺时针旋转)改造MFC默认的消息循环为定时循环,除能够处理消息外,还具有定时回调功能,实现动画定时器一个经典的消息循环while(::GetMessage(&msg,NULL,0,0)){ if(!elerator(hWndMain,elerator,&msg) ||(hCurDlg&&!IsDialogMessage(hCurDlg,&msg))) {//不是加速键消息正常路由消息::TranslateMessage(&msg); ::DispatchMessage(&msg); } }消息循环的几个为什么为什么”死循环”不死?为什么这个”死循环”不占CPU?看不见的消息队列在哪?消息事件处理函数和普通函数是一回事嘛?为什么要用消息循环这样的模型?MFC的消息循环在哪里?消息循环的几个为什么为什么”死循环”不死?因为GetMessage在发现消息ID=WM_QUIT时,会返回FALSE,也就是0,此时循环就终止了;为什么这个”死循环”不占CPU?因为在GetMessage返回之前,当前线程都是进入一个不被执行的休眠状态;看不见的消息队列在哪?消息队列属于线程内核对象的数据结构的一部分,是属于内核的,在线程代码中只能使用API”感知”;消息循环的几个为什么消息事件处理函数和普通函数是一回事嘛?消息事件处理函数也是普通函数,只是原型有特殊要求,是函数的一种,因此也可以直接像普通函数那样调用;为什么要用消息循环这样的模型?1-为了能有一个被动响应的程序模型即应用程序等待系统将输入传递给它们2-为了能够统一各种输入的处理方式3-为了实现一个准异步的编程环境MFC的消息循环在哪里?在CWinThread类的Run函数中

12.TinyCAD简单矢量动画系统解析 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zxwziyou8
  • 文件大小345 KB
  • 时间2019-06-18