基于OpenGL的台球游戏的设计论文Word下载.docx

上传人:b****2 文档编号:5327108 上传时间:2023-05-05 格式:DOCX 页数:43 大小:336.50KB
下载 相关 举报
基于OpenGL的台球游戏的设计论文Word下载.docx_第1页
第1页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第2页
第2页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第3页
第3页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第4页
第4页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第5页
第5页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第6页
第6页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第7页
第7页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第8页
第8页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第9页
第9页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第10页
第10页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第11页
第11页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第12页
第12页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第13页
第13页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第14页
第14页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第15页
第15页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第16页
第16页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第17页
第17页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第18页
第18页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第19页
第19页 / 共43页
基于OpenGL的台球游戏的设计论文Word下载.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于OpenGL的台球游戏的设计论文Word下载.docx

《基于OpenGL的台球游戏的设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于OpenGL的台球游戏的设计论文Word下载.docx(43页珍藏版)》请在冰点文库上搜索。

基于OpenGL的台球游戏的设计论文Word下载.docx

3Dgames;

collisiondetection

引言

最近几年,随着计算机信息技术的高速发展,以及计算机图形学的发展使得三维表现技术得以形成,这些三维表现技术能够再现三维世界中的物体,能够用三维物体来表示复杂的信息,从而便于和计算机直接交流。

这种技术已经把人和计算机的力量以一种直觉而自然的方式加以统一,这种革命性的变化无疑将极大地提高人们的工作效率。

计算机三维动画技术被广泛的应用于许多方面。

利用计算机和三维动画软件的强大功能,通过三维建模、材质及动画的设定可以将真实世界中的各种对象在计算机中真实再现。

不仅仅是机械工程师可以从二维平面图中得以解放直接进入了三维世界,从而很快得到自己设计的三维机械零件模型。

医生可以从病人的三维扫描图像分析病人的病状。

军事指挥员可以面对用三维图形技术生成的战场地形,指挥具有真实感的三维飞机、军舰、坦克向目标开进并分析战斗方案的效果。

而三维游戏也是其中应用之一。

电脑游戏,一个对广大的计算机应用者毫不陌生的名词,相信每一个电脑爱好者对其都有不同程度的喜爱,尤其是面对一些图形处理非常精美的三维游戏来说,多少会有一些爱不释手吧!

记得以前我对网络游戏非常的陌生,直到有一次,在仔细观察同学正起劲的玩着当时最流行的三维网络游戏时,我看傻了眼!

那精美的画面,细致的表情,流畅的动作,以及眩目的人物造型等等都让我目瞪口呆,再看到同学那副痴迷的神态,我不能不感叹这电脑游戏的魅力!

所以后来在选毕业设计的课题时,我选择了这个三维台球游戏的软件开发的课题!

本论文的主要研究的内容是如何利用OpenGL开发出一个微型游戏。

因此,所要解决的主要问题有四个:

一是如何用数学方法建立所需三维场景的几何描述,并将它们输入到计算机中,这部分工作由三维实体造型系统完成。

场景的几何描述直接影响了图形的复杂性和图形绘制的计算耗费,选择合理的有效的数据表示和输入手段是极其重要。

二是将三维几何描述转换为二维透视,通过场景透视换来完成。

三是确定场景中的所有可视面,这需要使用隐藏面消除算法将视域之外或其他物体的遮挡不可见面消去。

四是计算机场景中所有可见面的颜色,这就需要根据基于光学物理的光照明模型计算机可见面投射到观察者眼中的光亮度的大小和色彩组成,并将它换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。

鉴于时间、技术、设备、资源等各方面的原因,我现在还无法开发出一个完整的网络游戏,只能研究其最基础的部分,在这里我们将开发出一个小型的三维台球游戏。

借此掌握三维游戏制作的基础部分。

在这基础部分实现的过程中主要完成的是对三维图形技术的应用,比如对台球的光照球体的渲染和纹理映射的实现。

以及如何利用跟踪算法来跟踪台球,利用跟踪算法求得球运动速度和方向,最终确定球是落袋还是静止在桌面上某一个位置。

所以该课题的应用前景十分广阔,不但锻炼了三维图形技术的实现能力,还提高了编程的总体思路,大大提高编程水平。

更何况中国市场的匮乏,这无疑是一块很大的蛋糕!

最后,从这个台球游戏中,我可以学到如何设计三维图形,利用OpenGL的三维图形技术和VC++的面向对象的程序设计的优势,来实现台球游戏的桌面和球体的绘制。

第一章开发平台的选择和OpenGL

1.1开发平台介绍

考虑到本系统性能要求和现有的条件,我们选择了WindowsXP中文版本作为开发、测试和运行的平台。

我们为什么要选择WindowsXP中文版作为开发平台,主要是由于XP操作系统是以图形用户界面的主要优势的操作系统。

那图形用户界面是由窗口(Windows)、图标(Icons)、菜单(Menus)、指示器(PointingDevice)四位一体,形成桌面(Desktop)。

这种方式能同时显示不同种类的信息,使用户可在几个工作环境中切换而不丢失几个工作之间的联系,用户可通过下拉式菜单方便执行控制型和对话型任务,引入图标、按钮和滚动杆技术,大大减少键盘输入,对不精于打字的用户无疑提高了交互效率。

图形用户界面与命令语言界面相比的优点:

与以符号为主的字符命令语言界面相比,以视觉感知为主的图形界面具有一定的文化和语言独立性,并可提高视觉目标搜索的效率。

在符号阶段,用户面对的只有单一文本符号,虽然离不开视觉的参与,但视觉信息是非本质的,本质的东西只有符号和概念。

在视觉阶段,借助计算机图形学技术使人机交互能够大量利用颜色、形状等视觉信息,发挥人的形象感知和形象思维的潜能,提高了信息传递的效率。

1.2在开发平台下选择的开发工具

在Windows开发开发平台下,图形用户界面使得用户与程序的交流变的更加密切。

不再是一种从键盘到程序,再到显示器的单向信息流动,使得用户可以和显示器对象直接交互。

图形用户界面使得用户不再需要花费长的时间学习如何使用极速那就或掌握新程序。

Windows让这这一切成真,因为一个应用程序占据一个窗口,所有窗口都有相同的基本外观和感觉。

开发游戏系统的工具有一些。

目前世界上流行的主流开发工具有:

VisualC++、JAVA。

经过认真分析其优缺点,结合我们选择的OpenGL硬件接口,我们选择了Microsoft公司推出的VisualC++作为3D游戏的开发工具。

1.2.1VisualC++6.0的简介

VisualC++提供了一个可视化编程的集成开发环境:

VisualStudio(又名DeveloperStudio)。

DeveloperStudio是一个通用的应用程序集成开发环境,它不仅支持VisualC++,还支持VisualBasic,VisualJ++,VisualInterDev等Microsoft系列开发工具。

DeveloperStudio包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。

使用DeveloperStudio,可以完成创建、调试、修改应用程序等的各种操作。

MircrosoftVisualC++现在的版本比较多,比如有MircrosoftVisualC++6.0,MircrosoftVisualC++2005,MircrosoftVisualC++2008等等。

VisualC++6.0是Mircosoft公司推出的MicosoftVisualStudio6.0系列中的拳头产品,同时也是一种C/C++编译程序,内含一个集成开发环境,简称IDE(IntergratedDevelopmentEnvironment)。

IDE包括的内容相当多,如程序编译器、资源编译器、编程向导、类向导和连接器。

齐全的功能使VisualC++6.0成为十分优秀的软件开发工具。

1.3OpenGL基础的介绍

(1)采用OpenGL的原因如下:

①单纯用VC++很难设计出高性能的三维图形工具,目前图形开发包DirectX适于游戏开发以及加强多媒体性能等方面,而OpenGL则可以制作出更顺畅的3D效果,且OpenGL性能优于DirectX;

②由于Microsoft公司在Win95以后推出的Windows操作系统中提供OpenGL图形标准,尤其是OpenGL三维图形加速卡和微机图形工作站的推出,人们可以在微机上实现三维图形应用,如CAD设计。

仿真模拟、三维游戏等,从而更有机会、更方便地使用OpenGL来建立自己的三维图形世界;

③OpenGL可以与VC++紧密接口,便于实现有关计算和图形算法,可保证算法的正确性和可靠性。

(2)采用OpenGL的介绍:

OpenGL实际上是一种图形与硬件的接口。

它包括一百多个图形函数,开发者可以用这些函数来简历三维模型和进行三维实时交互。

与其他图形程序程序接口不同,OpenGL提供了十分清晰明了的图形函数,因此初级的程序设计员也能利用OpenGL的图形处理能力很快的设计出三维图形以及三维交互软件。

OpenGL强有力的图形函数不要求开发者把三维物体模型的数据写成固定的数据格式。

这样开发者不但可以直接使用自己的数据,而且可以利用其他不同格式的数据源,这种灵活性极大的节约了开发者的时间,提高软件开发效益。

长期以来从事三维图形开发的技术人员都不得不在自己的程序中编写矩阵变换、外部设备访问等函数,为调用制这些与自己的软件开发目标关系不十分密切的函数费脑筋,而OpenGL正是提供了一种直观的编程环境,它提供了一系列函数大大地简化了三维图形程序。

例如:

OpenGL提供一系列的三维图形单元供开发者调用;

OpenGL提供了一系列的图形变换函数;

OpenGL提供了一系列的外部设备访问函数,是开发者可以方便的访问鼠标、键盘、空间球、数据手套等。

这种直观的三维图形开发环境体现了OpenGL的开发优,这也是许多三维图形开发者热衷于OpenGL的缘由所在。

OpenGL经过了对GL的进一步发展,实现二维和三维的高级图形技术,在性能上表现得异常优越,它包括建模、变换、光线处理、动画以及更先进的能力,如条纹映射、物体运动模糊等。

OpenGL的这些能力为实现逼真的三维渲染效果、简历交互的三维景观提供了优秀的软件开发工具。

1.4VC++与OpenGL关系

现在流行的主流操作系统是Windows操作系统,Windows操作系统主流的编译环境VisualStudio,BrolandC++Builder,Dev-C++等,它们都是支持OpenGL的。

但这里我们选择VC++6.0作为OpenGL的开发环境。

做OpenGL游戏开发需要GLUT工具包,GLUT不是OpenGL所必须的,但是大多数游戏开发都是需要这个工具包。

Windows程序利用OpenGL开发游戏时候需要GLUT库。

在Windows环境下安装GLUT,首先要去下载一个GLUT库的安装包,然后解压以后有五个文件,把解压得到的glut.h放到这个GL文件夹里(这个GL一般是在自己安装的MircosoftVisualC++下面VC98下面一个inlcude文件夹里面)。

把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹,即lib文件夹(这个lib文件夹一般是在自己安装的MircosoftVisualC++下面VC98下面一个lib文件夹里面)。

把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。

(典型的位置为:

C:

\Windows\System32)这是非常重要的动态链接库设置!

OpenGL在三维图形技术方面有很大的优势,相比其他的技术,OpenGL则可以制作做更加流畅的3D效果,从而更有机会、更方便地使用OpenGL来建立自己的三维图形世界。

利用了OpenGL的三维图形技术和VC++的程序设计的优点,开发出来的图形程序更加流畅和容易实现。

第二章OpenGL3D游戏开发技术

2.1OpenGL工作流程

它包括100多个图形函数,开发者可以用这些函数来简历三维模型和进行三维实时交互。

正如我们上一章所述,OpenGL是一个高性能的图形开发软件包。

OpenGL作为一个与硬件独立的图形接口,它不提供与硬件密切相关的设备操作函数,同时,它也不提供描述类似飞机、汽车、分子形状等复杂形体的图形操作函数。

用户必须从点、线、面等最基本的图形单元开始构造自己的三维模型。

因此OpenGL的图形操作函数十分灵活。

OpenGL提供了以下三维物体的绘制方式。

(1)网络线绘图方式(wireframe):

这种仅绘制三维物体的网络轮廓线。

(2)深度优先网络绘制方式(depth_cued):

用网格线方式绘图,模拟人眼看物体的方式,远处的物体比近处的物体要暗一些。

(3)反走样网络线绘制方式(antialiased):

用网格线方式绘图,绘图时采用反走样技术减少图形线的参次不齐。

(4)平面消隐绘图方式(flat_shade):

对模型的隐藏面进行消隐,对模型的平面单元按照程度进行着色但不进行光滑处理。

(5)光滑消隐绘图方式(smooth_shade):

对模型进行消隐,关照渲染着色的过程中再进行光滑处理,这种方式更接近于现实。

(6)加阴影和纹理的绘图方式(shadows和textures):

在模型表面贴上纹理甚至于加上光照阴影,使得三维景观像照片一样。

(7)运动模糊的绘制方式(motion-blured):

模拟物体运动时人烟观察所感觉的动感现象。

(8)大气环境效果(atmospere-effects):

在三维景观中加入大气环境效果,使人身临其境。

(9)深度域效果(depth-of-effects):

类似于照相机镜头效果,模型在聚焦点处清晰,反之则模糊。

整个OpenGL的基本工作流程如下图:

图2.1OpenGL基本工作流程图

Figure2.1OpenGLbasicofflawchart

其中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;

图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。

在OpenGL中的所有数据包括几何顶点数据和象素数据都可以被存储在显示列表中或者立即可以得到处理。

OpenGL中,显示列表技术是一项重要的技术。

OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;

对于象素数据,象素操作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成图形片元。

整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值BZ送入帧缓冲器实现图形的显示。

2.2OpenGL图形操作步骤

在上面说明了OpenGL的基本工作流程,根据这个流程可以归纳出在OpenGL中进行主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤:

(1)建立景物模型

根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把:

点、线、多边形、图像和位图都作为基本图形单元)。

(2)景物位置设置

把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察所感兴趣的景观。

(3)物体颜色,纹理处理

计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定关照条件、纹理粘贴方式等。

(4)景物模型光栅化

把景物模型的数学描述以及色彩信息转换至计算机屏幕上的像素,这个过程也就是光栅化(rasterization)。

在这些步骤的执行过程中,OpenGL可能执行其他的一些操作,例如自动消隐处理等。

另外景物光栅化之后被送入帧缓冲器之前可以根据需要对象素数据进行操作。

2.3OpenGL游戏开发需要的技术

2.3.1图形变换

通过图形变换,可由简单图形生成复杂图形,可用二维图形表示三维形体,甚至可以对静态图形经过快速变换而获得图形的动态显示效果。

图形变换一般是指对图形的几何信息经过几何变换后产生的新图形.主要包括几何变换、裁减变换、投影变换和视区变换。

创建好几何模型后,只有放在三维空间中的适当位置。

并选择适当的视点及观察方向才能更有利于用户的观看。

为了观察场景中的模型,需要进行视景转换,包括视点转换、模型转换、投影转换和视口转换。

OpenGL将物体的各个顶点通过各种变换矩阵的作用影射到屏幕上。

通过模型变换可以改变物体的位置和尺寸,相应的函数有glTranlate*(),glRotate*(),glScale*(),这三条命令相当于生成平移、旋转和缩放的矩阵,并以此矩阵作为参数,然后调用glMuhiMatrix*()。

视点变换是改变视点的位置和方向,应用程序库函数gluLookAt()来定义视线的方向,这个函数封装了一系列的平移和旋转变换的命令。

调用gluLookAt()函数执行视点转换,确定观察物体的视点位置和方向;

利用模型转换对模型进行平移、旋转和缩放操作,以确定物体在场景中的位置和方向,其投影方式类似于人眼的视觉机制。

用于增加图形的真实感。

函数gluPerspective()和glOrtho()用来定义投影方式:

透视投影和正视投影;

视区是用来显示图像的窗口中的一个矩形区域。

glViewport()用来设置视区的大小和位置。

在OpenGL中,为了便于用户更加严格地限制视图体,允许定义左、有、上、下、远和近6个裁减面,这样程序员就可以删除场景中多余的形体。

定义一个附加裁减平面的函数是glClipPlane()。

2.3.2光照

要绘制逼真的三维物体必须进行光照处理。

没有光照的三维物体模型与二维物体没有任何差别,没有一点立体感。

只有具有光照的物体才是真正的三维物体。

OpenGL可以控制光照与物体的关系,产生多种不同的视觉效果。

光照射到物体表面时,可能被物体吸收、反射或透射。

光的反射和透视部分进入视觉系统使我们能看见物体。

光的颜色由其波长决定。

一束白光含有所有可见波长的光。

白光照射物体时,只有所有可见光被等量吸收物体才会呈现灰色。

如果被不等量吸收,物体会呈现其它的颜色。

光的亮度由光强决定。

从物体表面反射出来的光的强度取决于光源的位置、光强、物体材质、物体表面位置、物体表面法线和视点的位置。

(1)光源组成:

①辐射光辐射光是最简单的一种成分,它源自发光体,并且不受其它光源的影响、例如:

太阳光和灯光。

②环境光有时又称为泛光,它经过环境的多次散射,已经不能确定其方向,而是好像来自各个方向。

环境光作用于物体表面时,将沿各个方向均匀反射。

③漫反射光来自一个方向,但作用于物体表面上后将沿各个方向均匀散射。

④镜面反射光来自特定方向,并沿一个特定方向离开。

(2)光源的创建、定位和启用

前面介绍的光源类C3DLight中己经提供了启用光源的接口函数。

实际上,该函数通过OpenGL的函数voidglLight(GLenumlight,Typeparam,GLenumpnam)来指定光源的各种属性1161。

其中light指定所定义光源的名称,OpenGL至多支持8个光源,分别为GL_LIGHTO,GL_LIGHT1…GL_LIGHT7。

参数param指定所需设定的参数名称,参数pnam为指向param所指定属性值的指针。

它可以指向一个数组,也可以指向一个值。

对于每个给定的光源,通过设定参数param为GL_AMBIENT、GL_DIFFUSE和GL_SPECULAR来定义环境光、漫反射光、镜面反射光的属性,pname为指向一个对应的颜色值。

OpenGL中光源分为定向光源和定位光源两种。

光源定位时设置pname参数为GL_POSITION,param指向光源位置的坐标数组,光源位置的三维齐次坐标(x,y,2,w)的第四个分量,的值决定此光源为定向光源还是定位光源。

当w为零时,所定义的为定向光源,其方向由(x,y,z)决定。

当w为非零时,所定义的为定位光源,此时(x,y,z)代表光源的坐标值。

定位光源的确定位置决定了场景中物体表面的入射方向。

2.3.3材质

物体的材质是指物体表面对光的反应特性,通常分为三种:

反射性能、透射性能、吸收性能。

为了模拟这个物理过程,计算机图形设计需要建立物体的材质模型。

一种材质由环境色、扩散色、镜面高亮色等组成,分别说明了它对环境光、漫反射光和镜面光反射的多少,即反射率。

物体材质影响物体的颜色、反光度、透明度等。

假设一个只反射蓝光的物体,在一束白光的照射下就呈蓝色。

一般来说,物体对环境光和漫反射的反射方式是相同的,因而对环境光和漫反射光的反射率基本上是相等的。

但是,物体对于镜面反射光的反射率是由镜面反射光决定的,且物体的高亮色基本上与镜面反射光的颜色是相同的。

如果一个物体在青色光的照射下呈现蓝色,只需设定物体的环境色和扩散色均为蓝色即可。

为了让它看起来自身能够发光,可以用辐射光来模拟自体发光的物体。

OpenGL通过函数voidglMaterial{f,i,f}[v](Glenumface,Gle

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2