首页 > 文章中心 > 正文

OpenGL技术下计算机动画实现研究

OpenGL技术下计算机动画实现研究

摘要:随着“互联网+”被纳入国家战略,移动互联网技术、信息技术迅速发展,计算机动画技术也随之飞速崛起,如何解决动画制作时的高速绘图,提高图像质量成为关键.文中提出了借助于OpenGL提供的双缓冲技术,有效解决了动画制作过程中的这一难题,阐述了采用OpenGL技术支持下计算机动画实现的具体过程与方法.

关键词:OpenGL技术;计算机动画;实现过程

近年来,随着“互联网+”被纳入国家战略,移动互联网技术、信息技术迅速发展,直接影响着我们的生活习惯和学习、工作方式.计算机动画技术也随之飞速崛起,它的应用领域日益扩大,带来的社会效益和经济效益也不断增长.现阶段主要被广泛应用于电影业、电视片头、广告、科学计算和工业设计、模拟、教育、娱乐以及虚拟现实与3D、Web等诸多领域.而在计算机动画中,绘图速度和图像的清晰程度是至关重要的.由于动画需要每秒产生20~30帧的画面,因此对动画中图形的绘制速度有一定的要求,当图形的数据信息量较大时,绘图的过程需花费的时间也会随之加长,在这个过程中可能还会伴随有其它现象出现(如:图形不断闪烁).这时如果采用OpenGL提供的双缓冲技术来完成图形的绘制过程,这些问题便可以迎刃而解,从而为动画的制作完成奠定了坚实基础.

1关于OpenGL

1.1什么是OpenGLOpenGL.[1]通俗来说就是一个软件包,它的性能卓越,是专门针对三维图形而制订的一个通用标准.对于窗口系统和操作系统来说,它是独立的个体,利用它可开发出多种类型的应用程序,这些应用程序可以在各种不同的平台间灵活地被移植而不受影响;同时它还能与VisualC++紧密接口,使得机械手的有关计算和图形算法完整实现,既能充分保证算法的正确性,又能保证其可靠性;另一方面,虽然OpenGL使用时较简单,但是效率却是极高的.

1.2关于OpenGL功能的介绍.1)建模功能:图形库中不但包含有绘制基本的点、线、多边形的简单函数,同时还有很多复杂函数,可完成对一些较复杂的三维物体(球、锥、多面体、茶壶等)以及带有曲线、曲面的物体线、面的绘制,能完成快速建模.2)变换功能:OpenGL图形库的变换可分为基本变换和投影变换两类.它的变换方法与机器人运动学中的坐标变换方法完全一致,对减少算法的运行时间,提高三维图形的显示速度是很有利的.3)颜色模式设置功能:OpenGL颜色模式包括RGBA模式和颜色索引模式两种.4)光照和材质设置功能:OpenGL光有四种,即辐射光、环境光、漫反射光和镜面光.材质是用光反射率来表示.光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色才是场景中物体最终反映到人眼中的颜色.5)纹理映射:OpenGL所提供的纹理映射功能对于表达物体表面的一些细节十分有利,仿真度极高.6)位图显示和图像增强功能:图像功能既包括基本的拷贝和像素读写,同时还有融合、反走样和雾三种特殊图像效果处理.而经过这三种特殊效果处理,被仿真物的真实感会更强,图形显示的效果也会随之增强.7)双缓存(DoubleBuffering)动画:所谓双缓存,具体是指前台缓存和后台缓存,它们各司其职.具体来说,计算场景、生成画面的任务由后台缓存负责,而前台缓存则负责后台缓存已画好的画面的完整显示.另一方面,OpenGL还能使深度暗示、运动模糊等特殊效果顺利实现,从而完成消隐算法.

2计算机动画的基本原理及关键技术

2.1动画基本原理概述.所谓动画,通常是指连续播放一组静态画面相互衔接而形成的动态效果.它是利用人眼具有视觉暂留这一特性,让一幅幅静态画面“动”起来的动态呈现过程.如果要活灵活现地展现一个事件的发展变化过程就可以使用动画的方式来清晰、完整地进行表现.目前对动画的定义公认为:它实际是一门产生运动视觉的技术,是将一组组单个且具有连续性的画面拍摄在胶片上,从而产生视觉运动的技术手段,这种视觉技术是通过将胶片以一定的速度放映的形式而具体体现出来的.

2.2什么是计算机动画.计算机动画[2]是指采用一种先进技术让静止图像进行连续播放,从而呈现出物体不同运动状态的一种动态效果,也就是利用计算机产生图形、图像运动的技术.计算机动画通过对图形和图像采用综合处理技术,再通过程序编写软件和制作动画软件相结合设计出多组动态画面.将前一帧的内容设计为物体的某个特定状态,而当前帧的内容则修改为它的另一个状态,利用动画软件形成动态效果.动画制作软件系统主要包括以下几种:(1)脚本系统.它是早期的动画制作系统;(2)程序动画.是采用一系列程序来定义在特定时段某一角色的运动,这些程序是采用角色的物理规则和动画的生成方法来生成的;(3)表示动画.这种动画允许在动画过程对象的形状发生变化;(4)随机动画.这种动画采用随机过程来控制角色的运动;(5)行为动画.这种动画系统中的物体或角色定义中就已经明确规定了这些物体或角色应处在什么样的环境中,以及要遵循什么样的规则.计算机将根据这些要素构造一个虚拟的动画世界,其中虚拟出来的一些景物、建造体、物体和虚拟摄像机的运动过程,完全是由我们选用的计算机系统的基本处理功能来决定的.

2.3计算机动画使用关键技术.计算机动画的关键技术体现在计算机动画制作软件和硬件上.动画软件、硬件的功能不同,则可实现的的动画效果也不同.从计算机动画软件实现的角度来看,其关键技术主要包括以下几种类型.(1)关键帧动画:计算机动画模仿传统动画的生成方法,先绘制出关键帧,然后再根据关键帧进行插值,绘出中间帧,因此称为关键帧动画.设置为关键帧的位置一般是指在此处会出现动作上的某种变化,对一些连续动作起着关键的转折作用.关键帧技术通过对运动物体的运动参数插值实现对动画的运动控制.(2)运动轨迹法:基本运动学描述,通过指定物体的空间运动路径来确定物体的运动,并在物体的运动过程中允许对物体实施各种几何变换(如缩放、旋转等),但不引入运转的力.(3)运动动力学法:基于具体的物理模型,运动过程由描述物理定律的力学公式来得到.该方法综合考虑到物体的质量、惯性、摩擦力、引力、碰撞力等多个物理因素.其他还包括人体动画、基于物理特征的动画等[3].

3OpenGL技术支持下的计算机动画的实现过程

3.1计算机动画中绘图的具体要求.在计算机动画中,由于需要每秒产生20~30帧的画面,因此对图形的绘制速度有一定的要求,当图形的数据信息量较大时,绘图的过程需花费的时间也会随之加长,在这个过程中可能还会伴随有其它现象出现(如:图形不断闪烁).这时如果采用OpenGL提供的双缓冲技术来完成图形的绘制过程,则可以有效防止这些问题的出现.双缓冲是指在计算机内存中创建一个对象区域,让其与屏幕上的绘图区域保持一致,首先在内存中的这个区域中完成图形的全部绘制操作,然后将内存中对象上的图形一次性完整地复制到屏幕上绘图的区域,经过如此处理可快速完成图形的绘制.

3.2双缓冲技术函数功能分析.OpenGL支持双缓冲,它是可以通过一个函数调用来实现前、后缓冲区之间信息交换的.OpenGL双缓冲技术使用如下:Windows编程环境下调用如下函数:SwapBuffers();控制台编程环境下调用的函数为:glutSwapBuffers();glutnisDisplayMode(GLUT_DOUBLE|GLUT_RGB);//指定一个双缓冲窗口,完成所有绘图代码都在画面外的缓冲区进行渲染.计算机动画还需要进行窗口定时刷新:glutPostRedisplay();//刷新当前窗口glutTimeFune(intinterval,void*TimeFunc,1);//登记一个回调函数,经过设定的时间值后由GLUT调用该函数.3.3动画的具体实现过程下面以完成一个逆时针旋转的茶壶动画为例说明其实现过程.首先在屏幕上绘制一个绕经点(0,0,0),(1,1,1)的矢量图形茶壶,动画实现逆时针旋转,每隔50ms刷新一次窗口.代码如下:#include<GL/glut.h>Doubledlst=0;VoidTimerloop(int);VoidRender(void);Voidmain(void)//主函数入口{glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);glutCreateWindow(“Animation”);glutDisplayFunc(Render);……glutTimeFunc(50,TimerLoop,1);……glutMainloop();}VoidRender(void){//计算旋转角度dist+=10.0f;if(dist>360.0f)dist=10.0f;//绘图glClear(GL_COLOR_DUFFER_BIT|GL_DEPTH_BUFFER_BIT);glClear;glColor3f(255,0,0);glPushMatrix();glRotatef(dist,1.0f,1.0f,1.0f);glutSolidTeapot(0.4);glPopMatrix();glFinish();glutSwapBuffers();//在双缓冲模式下进行一次缓冲区交换}VoidTimerLoop(intvalue){glutPostRedisplay();//刷新当前窗口glutTimerFunc(50,TimerLoop,1);}

4结语

当前我们正处于互联网飞速发展的时代,计算机动画技术作为一种新的信息制作与传播方式,在各个领域的应用价值都是不可估量的.随着计算机动画应用的不断深入,动画中对图形图像的绘制速度和质量的要求必将会更快更高,而OpenGL所提供的双缓冲技术首先在内存中的这个对象上完成图形绘制的所有操作,然后再将该图形一次性完整地复制到屏幕上,如此既可以快速完成,同时还能保证清晰度不受影响.计算机动画将会给我们带来一个比现实更加丰富多彩的世界,呈现给我们一个新奇的视觉效果和视觉体验.

参考文献:

[1]尚游.OpenGL高级图形编程指南[M].哈尔滨:哈尔滨工程大学出版社,1999.

[2]李闽.计算机动画技术发展研究[J].网络安全技术与应用,2014(1):172.

[3]赵舒羽.基于OpenGLES的真实感布料动画的研究与实现[D].成都:电子科技大学,2015.

作者:罗新曼 单位:临汾职业技术学院计算机系

文档上传者