实时绘制大规模三维场景程序系统的设计与开发_第1页
实时绘制大规模三维场景程序系统的设计与开发_第2页
实时绘制大规模三维场景程序系统的设计与开发_第3页
实时绘制大规模三维场景程序系统的设计与开发_第4页
实时绘制大规模三维场景程序系统的设计与开发_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实时绘制大规模三维场景程序系统的设计与开发实时绘制大规模三维场景程序系统的设计与开发2011-11-3 16:01:52 关键词:三维场景;大规模场景摘要:近年来实时图形设计已经成为计算机图形学的研究重点。论文详细地为大家介绍开发一个实时绘制大规模三维场景的程序系统所用到的各种技术。一、采用3ds max建模软件对三维场景进行建模作为一款历史悠久,极富特色的强大三维软件,3ds max具有强大的三维建模功能。它的建模方式多种多样。在3ds max里可以进行面片、网格和nurbs曲线建模,使许多复杂物体的建模得到简化。3ds max的建模技术很多,一个对象的建立可以使用多种造型技术实现。如基本造

2、型、放样造型、合成造型等。本次课程设计中,通过使用3ds max建模,得到了建筑物等模型。二、纹理映射技术为了使我们要绘制的图形看起来更真实,可以在物体表面实现绘制纹理的功能。纹理其实就是指物体表面的二维图形,我们把纹理按照一定的方式贴到物体表面,能够使物体看上去更加真实。要将指定的多个纹理根据自己的需要映射到不同的面上,需要对位图创建一个数组,用来存储位图的名称,然后在初始化opengl的时候,可以读取这些位图,然后生成多个纹理存储到一个纹理数组中,接着就可以指定绘制的某个面,对该指定的面进行纹理映射。使用纹理映射的步骤一般为:载入贴图、绘制贴图、贴图模式的开启与关闭、带光照效果和纹理贴图的

3、图形绘制。opengl中通过指定三角形顶点的在纹理数组的二维坐标,就可以确定三角形内部各个点的贴图纹理座标,从而实现纹理对三角形的覆盖。三、融合技术融和(blending)是opengl中的一种特殊效果处理方法。融合提供了一种透明或半透明技术。它允许我们混合像素,我们通常用已经光栅化的像素光栅化同一位置的像素。换句话说就是我们在图元上混合图元,这种blending技术允许我们完成多种特效。首先我们需结合像素颜色,就是用以前写过的目标像素值去估算源像素值。通过设置不同的源和目的要素,我们能够创造很多不同的混合效果。我们还可以利用一个alpha通道制定透明度来渲染一个纹理,alpha通道是额外的设

4、置位,用它来保存每一个点的alpha值。当一个纹理被映射到一个图元上时,在alpha通道中的alpha信息也被映射,并且它们利用alpha信息为每个像素赋予纹理。概括的说,使用融和技术的必要步骤是:设置混合要素;假如使用alpha,要指定材质和alpha通道;允许alpha混合渲染状态。四、三维地形模拟技术地形是自然界复杂的景物,因此三维真实感地形的绘制一直是国内外计算机图形学关注的热点。随着计算机及图形图像技术的发展,地形可视化的应用越来越广泛。三维地形可视化是研究数字地形模型或数字高程域中显示、简化、仿真等内容的学科。由于opengl具有可实时交互操作的优点,所以更适合于空间信息的三维构建

5、,因此它的应用最为广泛。真实地形的构造,通常采用经纬度构成的规格化网格体逼近的方法,其主要关键技术在于获取网格点的关键参数。五、粒子系统粒子系统的应用非常广泛,大量的自然现象可以被精确或近似地使用粒子系统模拟。火焰,喷泉,爆炸,鱼群,气体,星空等等。他们的原理相似。粒子的运动一般都遵循一定的物理学方程。通常这些粒子有如下这些相同的属性集:位置、速度、加速度、生命值、衰减。下面的伪代码描述了粒子系统运行的流程:对每一个粒子组 : 实时绘制大规模三维场景程序系统的设计与开发2011-11-3 16:01:52 指定group j为当前粒子组产生新的粒子改变粒子组属性更新粒子位置绘制粒子end六、雾

6、化技术雾是大自然中最常见的现象之一,有了雾的效果,场景看起来会更加真实。在opengl中,很容易实现雾的效果。在opengl中,雾的工作模式有两种:线性模式和指数模式。这两种模式是根据雾的浓度变化来区分的。在线性模式下,只需要提供一个距离视点的开始位置和结束位置。从开始位置到结束位置之间,雾的浓度越来越高,浓度的变化和距离成正比。在指数模式下,雾的浓度随着距离的增加呈指数增长。这种模式通常用来用于烟雾、烟幕等效果。启用雾化的效果必须使用glenable(gl_fog),同样,取消雾的效果就是gldisable(gl_fog)。启用雾化后,还需要设置雾的参数才能够真正实现雾的效果。设置雾的参数的

7、命令是glfog。七、碰撞检测技术为了增强真实感,在虚拟场景中进行漫游时,必须进行碰撞检测。这是因为,有了碰撞检测,才可以避免诸如观察者飞入地下或者穿墙而过等不真实情况的发生。目前,有多种方法可以实现碰撞检测技术。本程序从观察者的角度出发,采用运动中的观察者与静态的虚拟环境之间的碰撞检测算法。在可视化系统进行碰撞检测的一个常用的方法是采用包裹着物体对象的包围盒(bounding boxes),包围盒的各线段与坐标轴平行,包围盒即虚拟物体的最小长方体。采用包围盒进行碰撞检测的最大好处是可以快速进行碰撞检测。八、计算机动画技术利用计算机图形学生成动画,不仅缩短了动画制作的周期,而且还产生具有震撼力

8、的视觉效果。计算机动画技术让我们的世界发生了翻天覆地的变化。计算机动画就是借助计算机技术生成一系列的画面,其中当前帧画面是对前一帧画面的部分修改。opengl是在帧缓存中存储和操作像素数据。opengl通过双缓存技术来实现动画。也就是说,在显示前台缓存内容中的一帧画面时,后台缓存正在绘制下一帧画面,当绘制完毕,则后台缓存内容便在屏幕上显示出来,而前台正好相反,又在绘制下一帧画面内容。这样循环反复,屏幕上显示的总是已经画好的图形,于是看起来所有的画面都是连续的。实现这样的技术,我们需要调用swapbuffers()函数,。swapbuffers()函数要等下一屏幕更新之后才能较换前提和后台视频缓

9、存中的内容。在交换前台和后台缓存中的内容之前,必须采用glflush()和glfinish()进行同步。九、billboard技术公告牌技术,即billboard技术,在3d游戏中有着广泛的应用.它的本质就是用预先做好的几幅位图来代替3d物体,极大地节省资源和提高速度。billboard技术采用于控制场景中的texture的方向的方法,让他始终以一定的角度对着我们的镜头(一般是垂直于镜头)。如我们在3d游戏中看到的怪物的蓝、红和怪物名字、一些花草树木等,无论我们在哪个方向看它总是对着我们。十、阴影效果阴影投射矩阵的生成算法。设计函数void generateshadow()计算阴影投射矩阵,记

10、录在二维数组shadow44中。绘制阴影。1.关闭光照和纹理贴图,设置阴影颜色。2.为防止阴影与投射平面重合导致绘图层次混乱,将阴影绘制平面上移一个小单位。3.对于四个阴影投射平面,分别计算阴影投射矩阵,并与当前模型视图矩阵相乘。4.由于当前模型视图矩阵被修改,要恢复之前的状态必须将运算前的矩阵压入矩阵栈,阴影绘制结束后弹出。5.调用地球仪绘制函数drawearth()即可完成阴影绘制。通过对opengl和其扩展库glut的应用,采用天空盒、三维地形的绘制、3d模型的载入和贴图、动态水面绘制、雾化、计算机动画等技术,可以得到较为满意的场景演示效果。同时通过键盘和鼠标对视角的控制,漫游的用户体验较好。当今计算机行业正以日新月异的速度发展,产业界和学术界也结合得越来越紧密。很多图形学的最新进展被用到商业游戏中,从而提高了真实感,增加用户体验。参考文献:donald trim.app lied partial d ifferental equationsm.pw s2kent,1990ernst hairer,gerh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论