三维动画的文献综述-参考

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

动画及三维动画技术简介动画是一门通过在连续多格的胶片上拍摄一系列单个画面,从而产生动态视觉的技术和艺术,这种视觉是通过将胶片以一定的数率放映体现出来的.实验证明:动画和电影的画面刷新率为24帧/s,即每秒放映24幅画面,则人眼看到的是连续的画面效果[12]。计算机动画是指采用图形与图像的处理技术,借助于编程或动画制作软件生成一系列的景物画面,其中当前帧是前一帧的部分修改。计算机动画是采用连续播放静止图像的方法产生物体运动的效果。计算机动画的关键技术体现在计算机动画制作软件及硬件上。计算机动画是计算机图形学和艺术相结合的产物,它是伴随着计算机硬件和图形算法高速发展起来的一门高新技术,它综合利用计算机科学、艺术、数学、物理学和其它相关学科的知识在计算机上生成绚丽多彩的连续的虚拟真实画面,给人们提供了一个充分展示个人想象力和艺术才能的新天地[12]。其中三维动画特技可以说是电脑动画技术中的一大难题,因为这需要非常强大的软件和运算能力极强的硬件平台。当然,它所带来的视觉效果也是无可比拟的。当《侏罗纪公园》、《第五元素》、《泰坦尼克号》这些影片中逼真的恐龙、亦真亦幻的未来城市和巨大的“泰坦尼克号”让人沉浸在现代电影所营造的“真实”世界里时,你可知道创造了这些令人难以置信的视觉效果的幕后英雄是众多的三维动画制作软件和视频特技制作软件[3]。好莱坞的电脑特技师们正是借助这些非凡的软件,把他们的想像发挥到极限,也带给了我们无比的视觉享受。三维动画特技制作包含了数字模型构建、动画生成、场景合成三大环节,而三维扫描、表演动画、虚拟演播室等新技术,恰恰给这三大环节都带来了全新的技术突破。综合运用这些新技术,可望获得魔幻般的特技效果,彻底改变动画制作的面貌。可以想像,先用三维扫描技术对一个80岁的白发老太太进行扫描,形成一个数字化人物模型,然后将乔丹的动作捕捉下来,用以驱动老人模型的运动,观众将会看到80岁老妪空中扣篮的场面。甚至还可以用演员的表演驱动动物的模型,拍摄真正的动物王国故事。利用表演动画技术还可以实现网上或电视中的虚拟主持人[3]。三维动画技术比较用于计算机三维动画制作的软件和工具目前很多,不同的动画效果,取决于不同的计算机动画软、硬件的功能以及各动画编程语言工具的特点。虽然制作的复杂程度不同,但动画的基本原理是一致的。其中Java3D是Java语言在三维图形领域的扩展,是一组应用编程接口(API)。利用Java3D提供的API,可以编写出基于网页的三维动画、各种计算机辅助教学软件和三维游戏等等。利用Java3D编写的程序,只需要编程人员调用这些API进行编程,而客户端只需要使用标准的Java虚拟机就可以浏览,因此具有不需要安装插件的优点。[1]它的这种体系结构既可以使其开发的程序“到处运行”,又使其能充分利用系统的三维特性。就因为JAVA3D拥有如此的强大的三维能力,使得它在网络世界,特别是在游戏中能大展姿彩[1]。与JAVA3D一样OPENGL也具有跨平台特性,许多人利用OPENGL编写三维应用程序,不过对于一个非计算机专业的人员来说,利用OPENGL编写出复杂的三维应用程序是比较困难的,且不说C/C++语言和java的掌握需要花费大量时间精力,当我们需要处理复杂问题的时候,我们不得不自己完成大量非常繁琐的工作。[7]当然,对于编程高手来说,OPENGL是他们发挥才能的非常好的工具。另外,以此开发出的图形要在网络上展示,必须先生成图像,然后将图形一帧一帧地传输过去,效果不佳,是一个瓶颈[7]。另有VRML2.0技术(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,编写VRML程序非常简单(VRML语言可以说比BASIC、JAVASCRIPT等语言还要简单),同时可以编写三维动画片、三维游戏、用于计算机辅助教学,因而其应用前景非常广阔尤其适合在中国推广应用。不过由于VRML语言功能目前还不是很强(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而失去了一些计算机高手的宠爱。[7]DIRECT3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程,目前相关的学习资料难于获得,由于它一般需要VC等编程工具进行编程,需要编程人员具有较高的C++等高级语言的编程功底,因而难以普及[1]。而JAVA3D是建立在JAVA2(JAVA1.2)基础之上的,JAVA语言的简单性使JAVA3D的推广有了可能。OPENGL和JAVA3D之间的比较可以看成汇编语言与C语言之间的比较,一个是低级的,一个是高级的(也许这样比较不太恰当)。JAVA3D给我们编写三维应用程序提供了一个非常完善的API。它的低级API是依赖于现有的三维图形系统的,如Direct3D、OpenGL、QuickDraw3D和XGL等,从高层次为开发者提供对三维实体的创建、操纵和着色,使开发工作变得极为简单[3]。它可以帮助我们:1.生成简单或复杂的形体(也可以直接调用现有的三维形体)2.使形体具有颜色、透明效果、贴图。3.可以在三维环境中生成灯光、移动灯光。4.可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)5.可以生成雾、背景、声音等。6.可以使形体变形、移动、生成三维动画。7.可以编写非常复杂的应用程序,用于各种领域如VR。8.可以与Internet集成,将三维场景很好地展现在网页上,并通过编程实现良好的交互性。二、主题部分JAVA3D的历史现状及发展方向JAVA3D技术为SUN公司继JAVA火爆成功后,于1997年推出的面向Internet的交互式三维图形应用编程接口(API),至今已有了1.3-1.6等多个更新版本,可用在三维动画、三维游戏、机械CAD等领域。[9]可以用来编写三维形体,但和VRML不同,JAVA3D没有基本形体,不过我们可以利用JAVA3D所带的UTILITY生成一些基本形体如立方体、球、圆锥等,我们也可以直接调用一些软件如ALIAS、LIGHTWARE、3DMAX生成的形体,也可以直接调用VRML2.0生成的形体。可以和VRML一样,使形体带有颜色、贴图。产生形体的运动、变化,动态地改变观测点的位置及视角。它还具有交互作用,如点击形体时会使程序发出一个信号从而产生一定的变化。[5]可以充分利用JAVA语言的强大功能,编写出复杂的三维应用程序。JAVA3D具有VRML所没有的形体碰撞检查功能。作为一个高级的三维图形编程API,JAVA3D给我们带来了极大的方便,它包含了VRML2.0所提供的所有功能[7]。Java3DAPI还可用来开发三维图形和开发基于Web的3D应用程序(applet)的编程接口.目前用于开发三维图形软件的3DAPI(OpenGL、Direct3D)都是基于摄像机模型的思想,即通过调整摄像机的参数来控制场景中的显示对象,而Java3D则提出了一种新的基于视平台的视模型和输入设备模型的技术实现方案,即通过改变视平台的位置、方向来浏览整个虚拟场景[7]。它不仅提供了建造和操作三维几何物体的高层构造函数,而且利用这些构造函数还可以建造复杂程度各异的虚拟场景,这些虚拟场景大到宇宙天体,小到微观粒子.Java3D同时也是JavaMediaAPIs中的一部分,可广泛地应用于各种平台,而且用Java3DAPI开发的应用程序和基于Web的3D小应用程序(applet),还可以访问整个Java类,且可以与Internet很好地集成,即如果在浏览器中安装了Java3D的浏览插件,在网上也可浏览Java3D所创建的虚拟场景[1]。Java3DAPI还汲取了已有图形APIs的优点,即Java3D的底层图形构造函数不仅综合了底层APIs(Direcrt3D、OpenGL)最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思想,同时,它又引入了一些通用的图形环境所未考虑的新概念(如3D立体声),这样将有助于提高用户在虚拟场景的沉浸感[1]。本文将着重介绍Java3D针对VR应用所提出的基于视模型和输入设备模型的新思想,在此基础上又讨论了如何利用Java3D来开发VR应用程序及其实现方法,并设计实现了一个应用实例。研究问题评述1.VR与JAVA3DAPI适于VR应用开发的Java3DAPI众所周知,开发VR应用程序是一件很繁琐的工作,其开发人员必须编写应用程序可能遇到的各种输入和显示设备的接口程序,或者依赖专为VR应用开发而设计的应用程序编程接口(API),且典型的VR应用必须跟踪用户的头部位置和方向,以生成与头部位置方向相一致的虚拟场景图[7]。另外,还需要先跟踪身体的其它部位(手、臂或腿部),然后通过身体各部位在虚拟场景中的虚拟视点与场景中的对象进行交互,而应用程序也必须具有能够利用跟踪输入设备在视点内放置物体,并标明其在生成的三维图象中的位置和方向的功能[7]。同时,面向VR的应用程序开发接口(API)必须能支持3D图形生成、处理跟踪器的输入,并能将跟踪信息反馈到图形绘制中。Java3DAPI可自动将头部跟踪器的输入集成到图形生成中,并具有通过访问其它跟踪器信息来控制其它特征的功能,但它是通过一种新的视模型(viewmodel)技术来实现的.该视模型是将用户真实的物质环境与计算机生成的虚拟环境相互独立,并建立它们之间的通信桥梁.该API也明确定义了用来探测Java3D物体六自由度(6DOF)传感器的返回值,并将其应用于显示场景图中[1]。总之,这种新的视模型和输入设备模型可以很方便地将交互式的3D图形应用程序转化为VR应用程序。2.Java3D视模型2.1新的视模型概念(viewmodel)基于摄像机的视模型是模仿虚拟环境中的摄像机,而不是虚拟环境中人的“替身”,而且它是通过控制摄像机与视点的相关参数来控制所显示的场景,但这种方法,在用户物质环境确定某些视参数的系统中是不合理的,例如在头盔显示器(HMD)系统中,HMD的光学性能就直接确定了应用程序所显示的视域[6]。由于不同的HMD有不同的光学特性,因此如果允许终端用户随意改变光学参数显然是不合理的.这里视参数的值将随终端用户物质环境的不同而不同,而影响视参数的主要因素有显示器大小、显示器的位置(戴在头上,还是放在桌子上)、三维空间中用户的头部位置、头盔显示器的实际显示视域、每英寸的显示象素等[6]。由于Java3D的视模型直接提供了头部跟踪的功能,因而使用户产生了真实存在于虚拟环境中的错觉.Java3D不仅提出了新的基于视平台的视模型概念,同时将其推广到包括显示设备和6DOF外围输入设备(如头部跟踪器等)的接口支持中,而且新的视模型继承了Java的“writeonce,vieweverywhere”本质.这意味着由Java3D视模型开发的应用程序或applet可广泛地应用于各种显示环境。这种显示环境可以是标准的计算机显示屏、多元显示空间,也可以是头盔显示器[6]。Java3D视模型是通过将虚拟环境和物质环境完全独立的方式来实现上述功能的,且该视模型可将虚拟环境中视平台的位置、方向和大小,与Java3D绘制的与视平台位置、方向相一致的虚拟场景相区分。一般应用程序控制视平台的位置和方向,而绘制着色系统则依据终端用户的物质环境以及用户在物质环境中的位置和方向来确定显示场景[6]。2.2视模型的组成Java3D视模型由虚拟环境和物质环境两部分组成,其中,虚拟环境由ViewPlatform对象来表示,它是虚拟对象存在的空间;而物质环境则由View对象以及和它相关的对象来表示[6]。这里,View对象和它的相关对象就描述了用户所处的显示和操纵输入设备环。.虽然视模型将虚拟环境和物质环境相互独立,但可通过一一对应关系来建立两种世界之间相互通信的桥梁,这样将使得终端用户的行为会影响虚拟环境中的对象,同时虚拟环境中的对象行为也会影响终端用户的视点[6]。Java3D可通过几个对象来定义视模型参数.这些对象包括View对象及其相关对象、PhysicalBody对象、Canvas3D对象、Physica

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功