该文各种抄袭被挂了基于OpenGL的球体碰撞动画模拟摘要虚拟现实的时代到来了,在各大领域飞速发展的今天,三维动画技术也随之飞速的发展。本文通过实现设计出一个虚拟的动画来模拟球体碰撞效果,从而来研究真实场景中问题运动情况。球体的运动设计到许多物理知识,同时还要运动数学和力学相关知识。在球体碰撞的过程中,几乎涵盖了所有运动学得规律,建立球体碰撞的模型研究,可以帮助我们更好的认识和理解计算机图形学、三维图形技术、运动学、理论力学的相关知识。在本文研究球体运动的规律同时,研究了其他有关的碰撞检测算法,综合国内外各种算法的研究,选取一个合适的高效的算法,应用到本模型中,从而提高效率。在球体碰撞过程中,不仅仅考虑到碰撞检测算法,还需要考虑到重力的影响。本模型主要利用VC++金额OpenGL图形库实现,使人能够很直观地观察球体碰撞的运动情况。0引言开放图形库OpenGL是一个三维的计算机图形和模型库,现在已成为3D图形软件接口的工业标准,OpenGL只有与其他程序设计语言相结合才能发挥它的作用。微软基本类库MFC是PC机上Windows操作系统中广泛使用的应用程序框架,它提供可视窗口程序的界面和基本输入输出功能,弥补了OpenGL的不足。因此采用MFC与OpenGL相结合的办法,可以充分利用MFC提供的Windows程序框架和OpenGL强大便捷的绘画功能,很方便地开发出功能丰富、性能优秀的动画应用程序。本文以球体碰撞动画模拟的演示为例,研究三维动画技术。1研究背景及国内外研究状况三维动画技术涉及各个领域、各个行业,比如医学领域、教育领域、工业领域等等。当人们遇到现实中难以实现的情况,可以通过动画技术,建立模型来模拟实际情况,达到虚拟现实效果,降低了实际过程中的成本和风险。并且,在虚拟现实的动画中,人们能够有针对性地发现问题解决问题,从而启发实际过程,避免实际中不必要的错误。特别是在工业领域,利用三维动画技术,设计零部件模型,这样能够大大节约公司成本。综合以上,三维动画技术,在当今乃至未来都是有很大的发展前景的。有关碰撞检测问题的研究主要开始于上世纪70年代,当时为了检测机器零件和零件的碰撞问题,从而开发出来的一系列碰撞检测的算法。碰撞是研究三维动画技术的重点,研究好物体运动中的碰撞问题,能够帮助人们更加认识物体运动。三维动画又称3D动画,随着计算机软硬件技术的发展而产生的一新兴技术。三维动画软件在计算机中首先建立一个虚拟的世界,设计师在这个虚拟的三维世界中按照要表现的对象的形状尺寸建立模型以及场景,再根据要求设定模型的运动轨迹、虚拟摄影机的运动和其它动画参数,最后按要求为模型赋上特定的材质,并打上灯光。当这一切完成后就可以让计算机自动运算,生成最后的画面。三维动画技术模拟真实物体的方式使其成为一个有用的工具。由于其精确性、真实性和无限的可操作性,被广泛应用于医学、教育、军事、娱乐等诸多领域。在影视广告制作方面,这项新技术能够给人耳目一新的感觉,因此受到了众多客户的欢迎。三维动画可以用于广告和电影电视剧的特效制作(如爆炸、烟雾、下雨、光效等)、特技(撞车、变形、虚幻场景或角色等)、广告产品展示、片头飞字等等。2相关的理论和技术2.1虚拟现实技术虚拟现实技术我们可以概括如下:虚拟现实技术(VR)是对计算机图形学、计算机科学、心理学、人工智能、医学、多媒体等多领域的知识的一种集成。它是利用一些程序设计技术和硬件的设备构建一个模拟真实环境的一个虚拟的环境,使体验者(使用者)在这种非真实的环境当中可以有与在真实的环境中一样的感受,可以使用非真实场景中的物品,而虚拟系统根据用户的动作和行为对其有种相应的回馈,而这种回馈用户又可以感受得到,这就是所谓的交互能力。在这种虚拟的环境当中,用户有视觉上的观察、听觉上的听感以及还有触觉的触感,在一些更高科技含量的虚拟环境当中,甚至可以由嗅觉上的感觉,这些都增加了用户对虚拟环境当中虚拟物品真实性的感应,做到真正的犹如在其中的感觉。虚拟现实的特征:(1)沉浸感(Immersion)是指感受者作为虚拟场景主要操作者和感受主体对场景和虚拟物品的感知度。感知度越强,说明虚拟的越“真”,这是评价虚拟度的一个指标。在虚拟环境当中,如果使用者对各个部分的感知都非常逼真而又形象,那么用户就有一种真的在一种真实环境当中的感觉,沉浸在这种环境当中。就像3D影院一样,用户戴上3D眼镜观看影片,用户可以感觉到影片的每个细节,跟着环境的不断变化,视觉感应也相应的发生变化,让用户有一种在其中的体验。(2)多感知性(Multi-Sensory)在一般的环境当中,用户所能感知的只有视觉效果。而由于技术的逐步完善和创新,用户所能感知的会越来越逼真,在除了视觉效果可以感知以外,用户在虚拟环境当中还会听到模拟的真实的声音,当触碰到东西的时候会有触觉上的感觉。甚至随着虚拟现实技术深入研究,人们在虚拟环境当中有嗅觉的感应,味觉的实现也是指日可待。相信通过虚拟现实技术,会给我们呈现出越来越多的感知反应和逼真效果。(3)交互性(Interactivity)顾名思义,就是用户和虚拟环境相互回馈信息的一种表现,虚拟系统能给用户回馈的信息越接近真实的信息,交互性就越强。我们所追求的用户和虚拟物品的交互是在虚拟环境当中,用户对虚拟物品的使用之后,是否真的有一种在使用物品的感觉。真实感越强,说明用户在虚拟环境当中与物品的交互度就越高,虚拟环境也就越完美。比如我们利用虚拟现实技术构建了一个虚拟的房间,房间内有各种家具、摆设,如果用户走进房间之后,随意的挪动房间内的物品,在这个过程当中,用户真正的感受到物品被移动的感觉,那么说明这种虚拟交互性是非常好的,也非常逼真。(4)构想性(Imagination)最初的虚拟仿真技术的运用,都是专家学者对生产生活中存在的物品的一种模拟,形似而神不似。但是随着科技不断的发展,社会各个领域对虚拟现实的需求也就越来越多,我们所能想象的虚拟物品也就越来越复杂。人是具有无穷无尽的想象力的,所有现实当中的物品也是在人类生产力不断发展的过程当中不断的研究与实现的。所以,虚拟现实技术也秉承着这个思想,在各学科各个领域也可以发挥想象力,再制作出我们所能想象和在现实生活中有作用的东西。在工业制造业当中,对于机器零部件的设计,我们可以在虚拟环境当中不断的模拟,构建。这样可以省去在真实的环境当中不断耗费的成本,在虚拟环境当中我们构建完之后,最终我们在现实制作出符合我们需要的产品。同理,在服装设计、家具设计、教学当中我们都可以发挥想象力,进行虚拟的研究与实验。2.2OpenGL简介OpenGL(全写OpenGraphicsLibrary)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGL™是行业领域中最为广泛接纳的2D/3D图形API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™帮助程序员实现在PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。在OpenGL的基础上还有OpenInventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,OpenInventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与VisualC++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能:1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、缩放、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(ColorIndex)。4.光照和材质设置:OpenGL光有自发光(EmittedLight)、环境光(AmbientLight)、漫反射光(DiffuseLight)和高光(SpecularLight)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。5:纹理映射(TextureMapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、抗锯齿(反走样)(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。7:双缓存动画(DoubleBuffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。此外,利用OpenGL还能实现深度暗示(DepthCue)、运动模糊(MotionBlur)等特殊效果。从而实现了消隐算法。OpenGL设备运用,目前瑞芯微2918芯片和英伟达芯片Tegra2就是采用OpenGL2.0技术进行图形处理,而基于瑞芯微2918芯片方案代表是台电T760和微蜂X7平板电脑所采用到。2.3球体碰撞技术虚拟物体间的碰撞检测是虚拟现实、计算机动画、虚拟设计与虚拟制造、虚拟仿真技术等领域重要的研究难题。而虚拟环境对碰撞检测问题又有其特殊的要求。虚拟仿真系统和虚拟环境中包括大量的物体,而又的系统里所包含的物体有可能非常复杂,这就加大了碰撞检测的难度,并且也增加了碰撞检测所需要的时间,非常耗时。但是必须保证碰撞检测在比较短的时间内完成,这样才能不破坏虚拟仿真系统的逼真性,而且也可以满足用户对系统的实时交互的要求。所以,碰撞检测就成了构造虚拟环境和虚拟仿真系统的瓶颈。虚拟仿真系统和虚拟环境当中对碰撞检测问题的研究目标是怎样实时有效的,并且精确完整的对虚拟场景当中运动的所有物体做碰撞检测,使虚拟仿真系统更具有真实性。虚拟环境对碰撞检测技术的主要有三点要求:实时性,精确性,完整性。(1)实时性:是针对虚拟环境中的视觉显示要求,碰撞检测的速度至少要达到24帧/秒,而针对虚拟环境中的触觉显示要求,碰撞检测速度至少要达到300帧/秒才能维持触觉交互系统的稳定性,要达到1000帧/秒才能获得较好的效果。(2)精确性:顾名思义,就是要对虚拟环境当中发生的碰撞检测要精确位置和时间,这种检测主要是针对于要求检测性比较高的领域,比如虚拟手术的仿真,虚拟装配等,如果检测不精确,那么必定会产生很大的误差。对于一些要求不高的仿真系统,有时只需要近似的检测碰撞发生的情况,如果两个物体非常近的时候,我们可以当作发生了碰撞,计算大概的碰撞位置,这样对系统的真实性也不会有大的影响。(3)完整性:是指在一个时刻在整个虚拟场景当中可以对所有的碰撞行为进行检测,不发生遗漏检测的情况,要求整个系统碰撞检测的完整性。这三点要求是相互制约的。有时为了满足实时性不得不减少精确性;有时为了达到精确性不得不牺牲完整性。除了实时性、精确性、完整性三个通用约束外,不同虚拟环境的具体应用还有其具体约束条件要求。2.4碰撞检测算法目前碰撞检测算法主要有两种,一种是转化为判断线面的相交问题,另一种是建立在包围盒基础上,并对其不断完善的算法。这两种算法的原理为:第一种:以视点为起点,前