资源描述
目录目录 动画技术的概念动画技术的概念动画技术的发展历程动画技术的发展历程动画的种类动画的种类计算机动画制作步骤计算机动画制作步骤 计算机动画的实现技术计算机动画的实现技术动画播放动画播放 位图函数实现动画位图函数实现动画多重屏幕页多重屏幕页 动画技术的发展历程动画技术的发展历程 计算机动画始于计算机动画始于20世纪世纪60年代年代:最初作为二维计算机辅助动画系统为动画师提供辅助工具来完成关键帧插值的工作。20世纪世纪70年代年代:开始进入了三维图形与动画的基本技术的开发领域,一小批领导三维动画与图像的公司也随之出现,并促进了电影等行业的转型,1974 的电影Hunger是最早使用计算机动画技术的三维电影之一。随着70年代研究出的动画基本技术的应用,不可避免地出现了一些令人不悦的问题,比如画面缺乏真实感,没有固定的生产模式等。80年代年代:人们的主要任务是优化70年代出现的模型和阴影等技术,随之产生了像物分级动画与逆向运动技术,人物动画与嘴唇同步技术,气泡表面模型技术等新型技术,使得模型更加真实。90年代中期年代中期:计算机动画逐步走向成熟,动力学仿真技术、三维仿真演员系统也逐步投入日常生产实践,值得一提的是像玩具总动员、美女与野兽这样的电影不仅给观众以震撼,同时也促进了计算机动画行业的进一步发展。 动画的种类划分动画的种类划分 根据运动的控制方式控制方式 计算机动画可分为实时动画实时动画(real-time)和逐帧动画逐帧动画(frame-by-frame)两种。实时动画实时动画:用算法来实现物体的运动,也称之为算法动画;逐帧动画逐帧动画(也称为帧动画或关键帧动画):通过一帧一帧显示动画的图像序列而实现的运动效果。 根据视觉空间视觉空间的不同 计算机动画又有二维动画二维动画与三维动画三维动画之分 计算机动画的实现技术计算机动画的实现技术 动画播放动画播放 :是一种简单的动画实现技术。其方法方法是:先确定动画对象的起始和结束坐标,然后再从对象开始状态逐步演变成最终状态的过程中,进行计算,并显示中间帧图形。 计算机动画制作步骤计算机动画制作步骤典型动画典型动画制作一般包含如下步骤:制作一般包含如下步骤:(1) 创意:创意:根据设计的需要,由导演设计好动画制作的剧本(故事情节拆分)。剧本剧本是动作的轮廓,它将动画序列定义为一组要发生的基本事件。根据要生成的动画种类,剧本可能包含一组粗略的草图或运动的一系列基本思路。(2) 预处理:预处理:扫描外部图像,输入外部资料。(3) 场景造型场景造型(对象定义):为每一个动作给出对象定义,对象利用如多边形或者样条曲线这样的基本形体进行定义。(4) 设定材质和光源设定材质和光源。(5) 设置动画设置动画(关键帧描述):关键帧关键帧是在动画序列中特定时刻的一个场景的具体图示。在每一个关键帧中,每个对象的位置依赖于该帧所处的时刻。选择其中的某些关键帧作为行动的极端位置,剩下的关键帧则以短的时间间隔安排位置。(6) 运动图像的绘制运动图像的绘制(插值帧的生成):插值帧插值帧是关键帧之间过渡的帧,其数目取决于显示动画的介质。比如电影胶片要求24帧/秒,而图形显示器则按3060帧/秒刷新。通常,运动的时间间隔设定为每一对关键帧之间有35个插值帧,主要依赖于动画速度。现在生成一般动画的许多功能都是由计算机自动完成。(7) 动画播放动画播放。(8) 后处理后处理,根据动画的播放效果进行一些细节上的调整及完善。(9) 动画的录制动画的录制。(10) 配音配音(包括背景音乐和台词)。位图函数实现动画位图函数实现动画 方法:用getimage( )和putimage( )函数把对象从屏幕上移去,此方法具有快速运行的优点,因为它仅仅对屏幕的一部分进行操作,其动画速度可能比屏幕的刷新速度还快。 nimagesize(x1,y1,x2,y2):存储图形所占用的字节数ngetimage(x1,y1,x2,y2,*bitmap):将矩形区域的图形从屏幕拷贝到内存区域它应当与它应当与imagesize定义的区域相同。定义的区域相同。例:例:w = malloc(imagesize(x1,y1,x2,y2);getimage(x1,y1,x2,y2,w);nputimage(x,y,*bitmap,op):将内存区域的图形重新送回屏幕多重屏幕页多重屏幕页 使用多重屏幕存储页是另一种产生快速动画效果的技术,其基本思想基本思想是预先建立多个全屏幕图像并将每幅图像存入单独的页缓冲区中,然后程序将这些图形页以适当的顺序依次显示以产生动画。图像可以占满整个图形页并且预先生成图像的时间不受限制,这种方法对于复杂的、全投影的三维实体模型最适用。 setactivepage( )函数的原型如下:void far setactivepage (int pagenum);其中pagenum是要使用的页数。 请注意,活动页不是当前正被显示的页,要用setvisualpage( )函数选择将哪一页显示在屏幕上。setvisualpage( )函数的原型如下:void far setvisualpage (int pagenum);
展开阅读全文