第八章计算机动画技术.ppt

上传人:本田雅阁 文档编号:2562574 上传时间:2019-04-08 格式:PPT 页数:33 大小:595.01KB
返回 下载 相关 举报
第八章计算机动画技术.ppt_第1页
第1页 / 共33页
第八章计算机动画技术.ppt_第2页
第2页 / 共33页
第八章计算机动画技术.ppt_第3页
第3页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第八章计算机动画技术.ppt》由会员分享,可在线阅读,更多相关《第八章计算机动画技术.ppt(33页珍藏版)》请在三一文库上搜索。

1、第八章 计算机动画技术,计算机动画技术,计算机动画技术概述,计算机图形学的一个重要应用领域就是计算机动画。现代的计算机技术与传统动画技术相结合,产生出计算机动画技术,得到了快速发展,在影视、娱乐、仿真等领域得到广泛的应用。,计算机动画技术,动画技术的历史和发展,动画的起源 岩壁动画 皮影戏 传统动画技术 电影 动画片 计算机动画技术,计算机动画技术,计算机动画技术发展的三阶段 60年代,美国的Bell实验室 7080年代中期,计算机图形技术取得显著发展,计算机动画技术日趋成熟,三维辅助动画系统投入使用 80年代至今,飞速发展时期,是计算机辅助制作三维动画的实用化和向更高层次发展的阶段,计算机动

2、画技术,计算机动画的应用,应用范围越来越宽广越来越深入 电影制作 电子游戏 用户界面 训练模拟 产品试验 等,计算机动画技术,常用动画软件,3D MAX,计算机动画技术,Maya,计算机动画技术,计算机动画的分类与原理,计算机动画的分类 根据视觉空间的不同 二维动画 三维动画 根据运动的控制方式的不同 实时动画 逐帧动画,计算机动画技术,一般而言,二维动画大多采用逐帧动画技术,而三维动画大多采用实时动画技术,计算机动画技术,计算机动画的基本原理*,动画的基本原理是利用人眼的视觉暂留 计算机产生动画,实质上也就是产生出一个个连续的帧,计算机动画技术,关键帧技术,实时(real-time)动画和逐

3、帧动画(frame-by-frame) 逐帧动画的难题:动画片制作中,最大的困难是制作者需要制作大量的帧 关键帧与中间帧,计算机动画技术,计算机动画技术,关键帧的插值算法 线形插值 非线性插值,计算机动画技术,运动描述,在实时动画中,计算机对输入的数据进行快速处理,并在人眼察觉不到的时间内将结果随时显示出来 在实时动画中,如何表示运动呢?这就是运动描述 更复杂的运动一般要通过路径进行描述,这种动画称之为路径动画,计算机动画技术,变形技术 基于图像的Morph(变形),计算机动画技术,动画文件格式,动画数据需要保存在动画文件中,必须有一定的文件格式 格式要符合通用标准 GIF格式 Flic格式

4、AVI格式 SWF格式,计算机动画技术,计算机动画的生成方法,OpenGL动画设计概述 OpenGL为动画设计提供了很好的支持,一些很著名的3D游戏软件都使用OpenGL作为渲染引擎 OpenGL提供了一些函数,支持图像和场景的移动和旋转等操作,并支持图像的快速切换输出。采用动画技术与前面所学的图形学基本知识相互配合,可以使用户很轻易地创建出动画效果,计算机动画技术,反弹的方块,程序首先在窗体中绘制一个正方形,让它在窗口中移动。当正方体碰到窗口的边界就会反弹,沿着另一个方向继续移动,计算机动画技术,物体的运动碰撞检测是动画设计中经常遇到的,本例使用OpenGL的GLUT库函数实现一个物体的碰撞

5、运动 使用RenderHandler绘制场景 主显示循环glutDisplayFunc 回调函数glutTimerFunc,计算机动画技术,碰撞检测主要由下面这两条语句构成: / 碰到窗口左边或者右边要更改方向 if(x windowWidth-rectSize | x windowHeight | y -windowHeight + rectSize) ystep = -ystep; / 实际的移动增量 x += xstep; y += ystep;,计算机动画技术,使用双缓冲技术的旋转方块,单缓冲模式(GLUT_SINGLE) 时间间隔改小,动画的效果变得很差 双缓冲技术(GLUT_DOU

6、BLE) 允许在屏幕之外的缓冲区执行绘图代码,然后使用交换命令把所绘制的图形立即显示在屏幕上,计算机动画技术,下面用另一个例子再介绍并演示双缓冲技术,产生一个绕中心旋转的正方形,计算机动画技术,将上一节程序中的 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 改为 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 同时,在RenderHandler函数中,将glFlush()改为 glutSwapBuffers(),就可以使用OpenGL的双缓冲功能,产生平滑的动画效果。 旋转使用了旋转变换: glRotatef

7、(spin, 0.0, 0.0, 1.0); /旋转变换,计算机动画技术,双缓冲技术有两个用途:首先,在绘制复杂图形的时候,图形合成的时间也许很长,可能不想让用户漫长等待。使用双缓冲技术,可以先合成一副图像,在完成以后再显示给用户,这样用户就看不到不完整的图像了。其次,在动画制作的时候也广泛使用双缓冲技术。每个动画帧首先在屏幕之外的缓冲区绘制,完成后快速交换显示在屏幕。这样就大大提高了动画的显示速度,计算机动画技术,旋转的立体圆环,动画的关键在于动,在实时动画中,为了能够恰当地描述物体的运动,必须有某种方法。二维运动的表达相对简单,但三维空间的运动就比较麻烦,幸好我们通过前面的图形学知识的学习

8、,已经掌握了使用矩阵运算的办法表达物体的几何变换,下面就用这种方法实现一个旋转的立体圆环,计算机动画技术,计算机动画技术,这个程序的重点是自定义的变换矩阵函数 void mkRotationMatrix(float angle, float x, float y, float z, GLMatrix mMatrix) 这个函数负责创建一个产生旋转变换的4x4矩阵 函数RenderHandler中使用创建的旋转变换阵,每次产生一个新的旋转变换阵,加上平移分量后,使绘制的线框圆环产生旋转的效果,计算机动画技术,交互式动画,在许多时候,要根据用户的反馈决定下一步动画的生成,这就是交互式动画 用户通过

9、操纵键盘、鼠标、游戏杆等输入设备,控制游戏主角下一步的走向和动作,游戏程序必须根据这些输入,决定下一步输出的图像 本节仍然继续上节的例子,介绍如何根据用户的键盘信息绘制不同的场景,计算机动画技术,计算机动画技术,为了丰富画面,为上节的程序新加入两个小球,它们分别沿着自己的轨道运动。中间的圆环绕自身转动。当用户按下上、下、左、右的光标键,就可以控制场景的移动,离近离远,或者左右旋转,计算机动画技术,具体实现方法是这样的: void SpecialKeys(int key, int x, int y) / 根据键盘动作响应用户请求 if(key = GLUT_KEY_UP) MoveFrameFo

10、rward(0.1f); if(key = GLUT_KEY_DOWN) MoveFrameBack( 0.1f); if(key = GLUT_KEY_LEFT) RotateFrameLeft( 0.3); if(key = GLUT_KEY_RIGHT) RotateFrameRight( 0.3); glutPostRedisplay(); / 刷新窗口,计算机动画技术,通过读取键盘码,对应控制场景的移动和旋转: void MoveFrameForward(GLfloat fStep) / 场景向前移动 zMove+=fStep; void MoveFrameBack(GLfloat fStep) / 场景向后移动 zMove-=fStep; void RotateFrameRight( GLfloat fAngle) / 场景向右旋转 ySpin+=fAngle; void RotateFrameLeft( GLfloat fAngle) / 场景向左旋转 ySpin-=fAngle; ,计算机动画技术,结束,计算机动画技术是一门迅速发展的技术,新技术新思路层出不穷,本章只介绍最基本的一些概念 希望大家在实践中动手编程体会计算机动画的乐趣 本章习题(见教材) 本次结束 谢谢大家,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1