《计算机动画技术》ppt课件

上传人:tia****nde 文档编号:69811599 上传时间:2019-01-15 格式:PPT 页数:37 大小:621.32KB
返回 下载 相关 举报
《计算机动画技术》ppt课件_第1页
第1页 / 共37页
《计算机动画技术》ppt课件_第2页
第2页 / 共37页
《计算机动画技术》ppt课件_第3页
第3页 / 共37页
《计算机动画技术》ppt课件_第4页
第4页 / 共37页
《计算机动画技术》ppt课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《计算机动画技术》ppt课件》由会员分享,可在线阅读,更多相关《《计算机动画技术》ppt课件(37页珍藏版)》请在金锄头文库上搜索。

1、第八章 计算机动画技术,2019/1/15,1,http:/ http:/ ,计算机图形学的一个重要应用领域就是计算机动画。现代的计算机技术与传统动画技术相结合,产生出计算机动画技术,得到了快速发展,在影视、娱乐、仿真等领域得到广泛的应用。 本章主要分两部分,第一部分首先介绍计算机动画技术,包括计算机动画技术概述、动画技术分类、动画的基本原理和关键技术,第二部分则以几个连贯的例子,重点介绍使用OpenGL产生动画的一般方法。,2019/1/15,2,8.1 计算机动画技术概述,2019/1/15,3,8.1.1 动画技术的历史和发展,法国考古学家发现,两万五千年

2、前的石器时代洞穴画上就有系列的野牛奔跑分析图,这是人类试图用笔(或石块)捕捉并凝结动作的最初尝试。 欧洲修道士发明了“魔术幻灯”,中国唐朝发明的皮影戏。 近代世界随着电影的出现,表明人们对于动画播放的技术已基本掌握,平面动画的制作技术也逐渐成熟,特别是与计算机技术相结合,计算机动画技术特别是三维动画技术获得极大的发展。 计算机动画技术是在传统动画的基础上,随着现代计算机技术,特别是图形学、多媒体的发展而逐步发展、成熟起来。 计算机动画狭义的定义是指用计算机技术辅助制作影视动画片,或以输出实时交互场景为主的技术。,2019/1/15,4,8.1.1 动画技术的历史和发展,发展过程三个阶段 1、6

3、0年代美国的Bell实验室和一些研究机构就开始研究用计算机实现动画片中间画面的制作和自动上色。这些早期的计算机动画系统基本上是二维辅助动画系统(Computer Assisted Animation),也称为二维动画。1963年美国贝尔实验室语言编写了一个称为BEFLIX的二维动画制作系统,这个软件系统在计算机辅助制作动画的发展历程上具有里程碑的意义。,2019/1/15,5,8.1.1 动画技术的历史和发展,2、第二个阶段是从20世纪7080年代中期,计算机图形、图像技术的软、硬件都取得了显著的发展,使计算机动画技术日趋成熟,三维辅助动画系统也开始研制并投入使用。三维动画也称为计算机生成动画

4、(Computer Generated Animation ),其动画的对象不是简单地由外部输入,而是根据三维数据在计算机内部生成的。,2019/1/15,6,8.1.1 动画技术的历史和发展,3、第三个阶段是从1985年到目前为止的飞速发展时期,是计算机辅助制作三维动画的实用化和向更高层次发展的阶段。在这个阶段中,首先是出现世界上第一个完整的且具有实用意义的三维动画片。在随后的十年内,计算机辅助三维动画的制作技术有了质的变化,已经综合集成了现代数学、控制论、图形图像学、人工智能、计算机软件和艺术的最新成果。,2019/1/15,7,8.1.2 计算机动画的应用,目前计算机动画已经发展成一个多

5、种学科和技术的综合领域,以计算机图形学,特别是实体造型和真实感显示技术(消隐、光照模型、表面质感等)为基础,涉及到图像处理技术、运动控制原理、视频技术、艺术甚至于视觉心理学、生物学、机器人学、人工智能等领域,它以其自身的特点而逐渐成为一门独立的学科。,2019/1/15,8,计算机动画的应用领域非常宽广。例如,这些领域包括:动画片制作,广告、电影特技、电子游戏、家用娱乐、教学演示,训练模拟,作战演习、产品模拟试验等。甚至可以说,凡是需要显示图像的地方,都或多或少可以使用一些动画。,2019/1/15,9,8.1.3 常用动画软件,1、3D MAX,2019/1/15,10,8.1.3 常用动画

6、软件,2、Maya,2019/1/15,11,8.1.3 常用动画软件,3、Flash,2019/1/15,12,8.2计算机动画的分类与原理,2019/1/15,13,8.2.1 计算机动画的分类,计算机动画可以分为二维动画与三维动画,也就是通常所说的平面动画和3D动画。 根据运动的控制方式的不同,计算机动画又可以分为实时动画和逐帧动画。,2019/1/15,14,8.2.2 计算机动画的基本原理,计算机动画的基本原理是利用人眼的视觉暂留。把一些连续的图片快速顺序播放,人就会把他们看成是连续的动作。每一幅图片就被称为一个帧。,2019/1/15,15,8.2.2 计算机动画的基本原理,计算机

7、产生动画,实质上也就是产生出一个个的帧. 实时(real-time)动画: 实时动画是用算法来实现物体的运动。 逐帧动画(frame-by-frame);,2019/1/15,16,8.2.3 关键帧技术,关帧技术实际上也是从传统动画片生产过程受启发而产生。对一部动画而言,大部分的帧是连贯的、逐渐变化的,从最初的帧进行到最后的帧。 绘制重要的帧。传统动画制作者就使用了这种方法提高生产率。主创人员绘制重要的帧,而让助手绘制那些重要的帧之间的帧。这些重要的帧称为关键帧,而关键帧之间的帧称为中间帧。,2019/1/15,17,8.2.3 关键帧技术,其中1、2、3是关键帧,而中间的是中间帧。,其中1

8、、2、3是关键帧,而中间的是中间帧。,其中1、2、3是关键帧,而中间的是中间帧。 采用关键帧技术,中间帧的生成就由计算机来完成,动画制作者首先绘制关键的重要画面,让计算机使用关键帧的算法来自动生成中间各帧。计算机代替了传统动画中绘制中间帧的动画师。,2019/1/15,18,最常用的关键帧算法就是插值算法。所有影响画面图像的参数都可成为关键帧的参数,如位置、旋转角、纹理的参数等。例如通过对运动参数插值,就可以实现对动画的运动控制,如物体的位置、方向、颜色等的变化,当然也可以对多个运动参数进行组合插值。 一般的插值算法有两种方式:线性插值和非线性插值。线形插值实现平稳的过渡效果,非线性插值则可以

9、实现某种特殊的加速度效果。,2019/1/15,19,从原理上讲,关键帧插值问题可归结为参数插值问题,传统的插值方法都可应用到关键帧方法中。但关键帧插值又与纯数学的插值不同,有其特殊性。一个好的关键帧插值方法必须能够产生逼真的运动效果并能给用户提供方便有效的控制手段。一个特定的运动从空间轨迹来看可能是正确的,但从运动学或动画设计来看可能是错误的或者不合适的。用户必须能够控制运动的运动学特性,即通过调整插值函数来改变运动的速度和加速度。,2019/1/15,20,8.2.4 运动描述,在实时动画中,如何表示运动?就是运动描述。 一种最简单的运动形式是对象的移动,它是指屏幕上一个局部图像或对象在二

10、维平面上沿着某一固定轨迹作步进运动。,2019/1/15,21,基于图像的Morph(变形)是一种常用的二维动画技术。,2019/1/15,22,8.2.5 动画文件格式,1、GIF格式:GIF是图形交换格式(Graphics Interchange Format) 2、Flic格式:Flic文件是Autodesk公司在其出品的Autodesk Animator / Animator Pro / 3D Studio等2D/3D动画制作软件中采用的彩色动画文件格式 3、AVI格式:Audio Video Interleaved,即音频视频交错格式。 4、DivX格式:这是由MPEG4衍生出的一种

11、视频编码(压缩)标准 5、其他有: RM格式;MOV格式; SWF格式,2019/1/15,23,8.3计算机动画的生成方法,2019/1/15,24,8.3.1 OpenGL动画设计概述,OpenGL为动画设计提供了很好的支持,一些很著名的3D游戏软件都使用OpenGL作为渲染引擎,。 OpenGL提供了一些函数,支持图像和场景的移动和旋转等操作,并支持图像的快速切换输出。采用动画技术与前面所学的图形学基本知识相互配合,可以使用户很轻易地创建出动画效果出来。,2019/1/15,25,8.3.2 反弹的方块,程序首先在窗体中绘制一个正方形,让它在窗口中移动。当正方体碰到窗口的边界就会反弹,沿

12、着另一个方向继续移动。,2019/1/15,26,使用glutDisplayFunc(RenderHandler)负责绘制一个正方形。 正方形移动,要设法在调用RenderHandler之前持续改变正方形的坐标。在程序中创建一个循环完成这个功能,每隔一段时间就改变一下正方形的坐标,这样看起来正方形就不断移动了。,2019/1/15,27,GLUT函数库中允许注册一个回调函数glutTimerFunc,它允许用户方便地设置简单的动画序列。这个函数的参数包括需要调用的函数名和调用前等待时间。 glutTimerFunc(unsigned int millis, void (GLUTCALLBACK

13、 *func)(int value), int value);,2019/1/15,28,碰撞检测: / 碰到窗口左边或者右边要更改方向 if(x windowWidth-rectSize | x windowHeight | y -windowHeight + rectSize) ystep = -ystep; / 实际的移动增量 x += xstep; y += ystep;,2019/1/15,29,8.3.3 双缓冲技术,间隔小于5毫秒,就会看到明显的画面闪烁。动画的效果变得很差。实际上,如果希望图形输出具有较高的实时性,就必须采用双缓冲技术。 双缓冲技术允许在屏幕之外的缓冲区执行绘图

14、代码,然后使用交换命令把所绘制的图形立即显示在屏幕上。,2019/1/15,30,8.3.3 双缓冲技术,上一节程序的修改: glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);改为 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 将glFlush()改为glutSwapBuffers(),就可以使用OpenGL的双缓冲功能,产生平滑的动画效果。,2019/1/15,31,8.3.3 双缓冲技术,一个使用双缓冲快速旋转的方块动画 旋转使用了旋转变换:glRotatef(spin, 0.0, 0.0, 1.0); /旋

15、转变换 void TimerFunction(int value) /设置每次旋转的角度 spin = spin + 5.0; /超过360度回到0 if (spin 360.0) spin = spin - 360.0; glutPostRedisplay(); glutTimerFunc(5,TimerFunction, 1); ,2019/1/15,32,8.3.3 双缓冲技术,2019/1/15,33,8.3.4 旋转的立体圆环,三维空间的运动就比较麻烦 利用已经掌握了使用矩阵运算的办法表达物体的几何变换 实现一个旋转的立体圆环,2019/1/15,34,8.3.4 旋转的立体圆环,自定义的变换矩阵函数 void mkRotationMatrix(float angle, float x, float y, float z, GLMatrix mMatrix) 这个函数负责创建一个产生旋转变换的4x4矩阵。,2019/1/15,35,8.3.4 旋转的立体圆环,void RenderHandler(void) GLMatrix transformationMatrix; / 存储变换矩阵 sta

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号