《基于Direct3D的投篮游戏》由会员分享,可在线阅读,更多相关《基于Direct3D的投篮游戏(47页珍藏版)》请在金锄头文库上搜索。
1、湖南大学毕业设计(论文)第 I 页HUNAN UNIVERSITY毕业设计(论文)设计论文题目:基于Direct3D的投篮游戏学生姓名:何杰学生学号:20041610506专业班级:开发2班学院名称:软件学院指导老师:申煜湘学院院长:林亚平2008年5月25日湖南大学毕业设计(论文)第 I 页基于Direct3D的投篮游戏摘要现在游戏已经深入到人们的生活中,几乎每个人都玩过至少一款游戏。随着越来越多的人关注游戏,当今的游戏产业也成为潜力无穷的产业。与此同时,游戏设计已经成为当今许多玩家的梦想。本设计就是基于DirectX技术的投篮游戏设计,采用Visual C+进行编写。DirectX是Mic
2、rosoft公司提供的目前比较普遍的Windows游戏设计开发工具(SDK)。它基本包括了2D、3D、声音、控制、网络等的基本操作函数,使得程序员不必直接与硬件打交道,大大地提高了游戏开发的简易性和效率。本设计在Direct3D的基础上,设计出了图形渲染模块,用户界面模块,物理模块,摄像机模块等,并加以代码实现,实现了一个简单的3D投篮游戏。关键字:游戏设计,DirectX,投篮Basketball game based on Direct3DAbstractNow games has gone deep into the peoples lives, almost everyone play
3、ed games. With more and more people increasing interest in games, the game industry is becoming to be a developing industry. At the same time, game design has become the dream of many players. This is a space shooting game design based on DirectX technology, using Visual C+ in programming. DirectX i
4、s a widely used game design and develop tool (SDK) which is supplied by Microsoft Corporation. It basically covers the 2D, 3D, sound, control, and network, makes programmer without dealing directly with the hardware, greatly enhancing the simplicity and efficiency of the development of game. This de
5、sign is based on Direct3D, it has graphic render module, user interface module, physic module, camera module. Then implement these modules by coding, so we have a simple basketball game.Keyword: Game Design, DirectX, Basketball目 录1.绪论11.1 课题背景11.2 国内外研究现状和发展趋势21.3 本文结构22.技术原理32.1数学基础知识32.1.1 3D坐标系32
6、.1.2向量基本运算42.1.3矩阵变换82.2 Direct3D基础102.2.1 Direct3D概述102.2.2 Direct3D重要概念112.2.3 Direct3D初始化132.3基本3D流水线简介132.4 Win32消息机制193. 系统设计203.1 功能设计203.2 游戏逻辑的设计203.3 图形绘制系统的设计223.4 球体运动轨迹的设计243.5 游戏界面的设计253.6得分判断的设计253.6 摄像机的设计264 实现方案284.1主要功能模块284.2 三维向量的实现284.3 图形系统和Windows消息循环的实现324.4 物理模块的实现334.5 游戏界面
7、的实现344.6 摄像机模块的实现354.7 模型系统的实现385 运行效果39小结40致谢41参考文献42 湖南大学毕业设计(论文)第 1 页1.绪论1.1 课题背景我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体。我们又生活在一个充满信息的世界中,能否尽快地理解并运用这些信息将直接影响事业的成败,所以我们需要用一种最直接的形式来表示这些信息。最近几年计算机图形学的发展使得三维表现技术得以形成,这些三维表现技术使我们能够再现三维世界中的物体,能够用三维形体来表示复杂的信息,这种技术就是可视化(Visualization)技术。可视化技
8、术使人能够在三维图形世界中直接对具有形体的信息进行操作,和计算机直接交流。这种技术已经把人和机器的力量以一种直觉而自然的方式加以统一,这种革命性的变化无疑将极大地提高人们的工作效率。可视化技术赋予人们一种仿真的、三维的并且具有实时交互的能力,这样人们可以在三维图形世界中用以前不可想象的手段来获取信息或发挥自己创造性的思维。机械工程师可以从二维平面图中得以解放直接进入三维世界,从而很快得到自己设计的三维机械零件模型。医生可以从病人的三维扫描图象分析病人的病灶。军事指挥员可以面对用三维图形技术生成的战场地形,指挥具有真实感的三维飞机、军舰、坦克向目标开进并分析战斗方案的效果。更令人惊奇的是目前正在
9、发展的虚拟现实技术,它能使人们进入一个三维的、多媒体的虚拟世界,人们可以游历远古时代的城堡,也可以遨游浩翰的太空。所有这些都依赖于计算机图形学、计算机可视化技术的发展。随着三维技术的进步,对于普通电脑用户最大的感受就是电脑游戏的发展了,如今游戏的画面基本上全部都是3D化,在游戏市场的巨大利益推动下,游戏开发商和硬件厂商不断推陈出新,技术的发展可以用一日千里来形容。1.2 国内外研究现状和发展趋势目前游戏开发采用的主要有OpenGL与DirectX两种图形库。目前的游戏引擎都是基于这两种图形库来实现图形的渲染。OpenGL是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基
10、础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品。OpenGL目前版本为2.0,支持可编程渲染管线。DirectX是伴随着视窗操作系统的推出而出现的,DirectX的原名为 DirectX SDK(或Game SDK ),英文原意:DirectX Software Development Kit,是微软所开发出的一套主要用在设计多媒体、2D、3D 游戏及程序的 API ,其中包含了各类与制作多媒体功能相关的组件(Component),各
11、个组件提供了许多处理多媒体的接口与方法。从这点介绍我们可以领会到DirectX是为游戏而诞生,从DirectX1.0到DirectX3.0,微软让它的DirectX开始在游戏领域树立起3D的标杆,尽管当时的3D很粗糙,但是雏形已初步形成,到DirectX7开始,随着OpenGL和Glide势力日渐衰弱,DirectX的霸气初现,到DirectX8发布后,DirectX已经在3D游戏领域树立起它的的权威地位,引人的Ps和Vs的出现令OpenGL和Glide自叹不如,DirecetX9.0,更是如日中天,权威地位无人能撼动。目前DirectX在桌面游戏方面更受开发者的欢迎。目前版本为10.0。1.
12、3 本文结构本文分为五章,第一章为绪论。第二章为技术原理,主要简单介绍本设计中用到的一些基本原理。第三章为系统设计,主要讲解系统的设计方案。第四章为系统的实现方案,讲解系统的具体实现。第五章展示系统的运行效果。2.技术原理2.1数学基础知识几何学中,我们用有向线段表示向量,向量的两个属性是它的长度和它的顶点所指的方向,因此,可以用向量来模拟既有大小又有方向的物理模型。向量为在3维空间中表示方向提供了方便.2.1.1 3D坐标系3D 坐 标 系中使用最广泛的是笛卡尔坐标系,它基于空间中三条相互垂直的坐标轴:X轴、Y轴和Z轴。要定义空间中的一个点P,需要三个坐标:X,Y, Z写成P(X,Y, Z)
13、。三个坐标轴构成三个平面:X-Y平面、X-Z平面和Y-Z平面。这三个平面将整个空间分成8个子空间,在3D笛卡尔坐标系中共有8个卦限。 图2.1.1 左手坐标系3D笛卡尔坐标系包括左手坐标系和右手坐标系两种。左手坐标系(LHS)假设X-Y为纸张上或屏幕上的水平轴和垂直轴,正Z轴指向纸内或屏幕内。右手坐标RHS)假设X-Y为纸张上或屏幕上的水平轴和垂直轴,正Z轴指向纸外或屏幕外。2.1.2向量基本运算1. 向量相等几何学上,有同样方向和长度的两个向量相等。数学上,我们说有同样维数和分量的向量相等。例如:如果ux = vx, uy = vy, 且 uz = vz.那么(ux, uy, uz) = (
14、vx, vy, vz)。在代码中我们能够用“=”判断两个向量相等。同样的,我们也能用“!=”判断两个向量不相等。2. 向量的模几何学上,向量的大小是有向线段的长度。知道向量的分量,利用下面的公式我们就能计算出向量的大小。图2.1.2.1 向量的模u表示向量u的长度。3. 标准化向量标准化向量是让向量的大小等于1,即被叫作单位向量。我们能利用向量大小以及各个分量把一个向量标准化,就象这样:图2.1.2.2 标准化向量我们这样表示单位向量。4. 向量相加我们能够通过分别把两个向量的各个分量相加得到向量之和,注意在相加之前必须保证它们有相同的维数。图2.1.2.3 向量相加下图显示的是几何学上的向量
15、相加。图2.1.2.4 几何上的向量相加5. 向量相减和加法类似,通过分别把两个向量的各个分量相减得到向量之差。再次重声两个向量必须是相同维数。图2.1.2.5 向量相减下图显示的是几何学上的向量相减。图2.1.2.6 几何上的向量相减6. 数乘我们能用一个标量与向量相乘,就象名字暗示的一样,向量按比例变化。这种运算不会改变向量的方向,除非标量是负数,这种情况向量方向相反。图2.1.2.7 向量数乘7. 点乘数学上定义点积是两个向量的乘积。按下面等式计算:图2.1.2.8 向量点乘上面的等式不能很明显的体现几何上的意义。利用余弦定律,我们能够发现它们的关系。u v =|u|v|cos,表示两个向量的点积是它们的模和夹角的余弦之积。因此,如果u 和v都是单位向量,那么u v就是它们夹角的余弦。一些点积中有用的特性:假如u v = 0,那么uv。假如u v 0,那么两个向量的角度小