3D赛车游戏的设计与实现 - 图文(5)

2019-04-02 12:23

湖南大学毕业论文 第14页

图 3-7 天空盒效果

3.2.2模型运用

我们使用的模型是X模型,这种模型是DirectX本身的格式,可以通过几个内置函数直接加载和渲染到API。X模型最大的优点就是它们十分易用,可以直接和Direct3D交互使用。X文件格式基于模板格式,Direct3D有一些内置模板,可以用于定义X文件中的网格。这些标准模板包括外观、纹理坐标和法线。因为X文件格式基于模板格式,所以Direct3D需要知道一些存储在文件中用于某种目的的信息。X模型可以被保存为文本文件,也可以被保存为二进制文件,这意味着可以在任意的文本编辑器中打开X文本文件,并修改其内容。

湖南大学毕业论文 第15页

X文件中的Material标准模板用于指定可以施加在单个表面(多边形)的材质。针对材质的标准模板定义了环境颜色、发射能量、镜面颜色、反射量、与材质相关的纹理图像文件名。

X文件中的Mesh模板定义了X文件中的完整网格。X模型可以包含多个网格。网格模板结构开始先定义顶点总数,然后是顶点的x,y,z坐标。定义完顶点之后,接下来必须定义网格的外观或多边形。开始先是网格中的外观数,后面是每个外观的三角形索引。每个三角形索引行开始是代表该外观使用的三角形数目,后面才是索引号。定义完顶点和三角形之后,就可以随意定义其他属性了,如每一外观的材质、纹理坐标等。

X文件中的MeshMaterialList模板指明网格中的哪个外观使用哪种材质。材质链表结构开始先定义材质数目,然后是将材质施加的外观总数。这之后,每个外观占一行。每行定义一个值,用该值引用要用的材质。该结构的最后一行是涉及到的所有材质链表。第一个材质索引号为0,第二个为1,依此类推。

X文件中的MeshTextureCoords模板开始先指定网格中的索引数,然后用逗号隔开,简单的列出每个顶点的纹理坐标。有了该模板就可以在Direct3D中将纹理映射到网格上。

加载和渲染X模型很简单。所有的X模型都保存在相同的名为LPD3DXMESH的结构中。调用D3DXLoadMeshFromX()即可。调用LPD3DXMESH对象的DrawSubset()函数可以绘制模型。

湖南大学毕业论文 第16页

我们需要注意的是,X模型本身所有顶点位置都是基于其自身坐标,而我们要最终要将模型显现在外面的屏幕上,这就需要进行些坐标变换。

首先简要说明一下三维物体的成像过程。三维物体可通过建模的微分方法,把弯曲的表面切分为一个个的三角形面,这样三维物体表面的绘制,就转化为物体表面中所有三角形面的绘制。要渲染由众多三维物体组成的三维场景,需要先引入局部坐标系,为场景中的各个三维物体进行三角形顶点的坐标量化。局部坐标系示例如图 3-8所示。

图3-8 局部坐标系

引入世界坐标系,把整个场景中所有三维物体的各自顶点局部坐标,转换为同一个世界坐标系下的坐标。在同一个世界坐标系中,场景中各个三角形面的顶点坐标如实地给出了场景中物体间的空间关系。如果需要对场景实施光照处理,还要对顶点的颜色值进行计算。这个过程最终是输出具有世界坐标的场景下的所有三维物体的顶点信息。世界坐标系示例如图 3-9所示:

湖南大学毕业论文 第17页

图3-9 世界坐标系

在三维场景中选定位置和方向架设摄影机,取景范围由一个棱台视截体决定。在视截体之内部分,应显示处理;视截体之外的部分则要裁剪掉,而不显示出来。为了便于裁剪,在摄影机的位置处建立一个摄影坐标系,其Z轴指向摄影机的视线方向,从而使视截体的6个外围侧面具有较为简单的方程式。此时,需要将场景中所有物体的三角形顶点的世界坐标转换为摄影坐标系下的坐标。这个过程最终输出变换为摄影坐标的顶点信息。取得场景中所有物体的三角形顶点摄影坐标之后,开始进行裁剪和透视投影处理。这个过程最终是输出位于视觉区域内,并且已变换为投影坐标的顶点信息。最后将平面投影的点变换到计算机屏幕的视口中,并根据投影点的Z坐标值反映的顶点远近遮隐关系,确定屏幕视口中每个像素的颜色值[6],以此实现三维场景的平面着色显示。

总之,在加载模型后,要想成功的渲染模型还需要进行坐标转换,在模型文件中所有顶点使用的都是其局部的3D坐标,并非渲染函数能够直接使用的屏幕坐标。要想将其输出到屏幕中通常需要经过以下三种坐标转换:

湖南大学毕业论文 第18页

1. 全局转换。将所有的物体转换为统一的全局坐标,还可以在这里完成各种对物体位置的操作。

2. 视图转换。转为从观察者角度看到的全局坐标。先在全局坐标系的指定位置架一台摄影机,指定一个注视点和一个参考点。坐标将被转换到以摄影机为原点,从原点到注视点为Z轴,再加上参考点,所确定的平面为Y-Z平面的坐标系中。

3. 透视转换。透视转换将各顶点的x,Y值转换为实际的屏幕坐标,而z值就是Z-Bufer里的深度信息。

基本的坐标转换(平移、旋转、放缩),在3D程序里,都是将该点(就是一个列向量)乘以一个4x4矩阵。然后调用相应的三个函数告诉D3D:用这个矩阵完成全局转换,然后用那个矩阵完成视图转换。 3.2.3光照技术

光照是一门为3D场景增加真实感的技术,它以某种方式通过对物体分布不同的亮度和黑暗形成阴影而实现真实感。如同现在许多游戏中见到的一样,光照可以将场景带入到一个全新的真实感层次。为场景增加光照会对已渲染的场景产生巨大的影响。在计算机图形学中就三类光源需要考虑,分别是点光源、聚光光源和方向性光源。每类光源分别描述了日常生活中见到的不同类型的光。计算机图形中有许多不同的反射模型,但最常用的模型分别是环境光反射模型、漫反射模型和镜面反射模型,反射同物体的材质有关。反射模型和光属性一起


3D赛车游戏的设计与实现 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学英语1复习资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: