- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
directx3d资料专题5地形绘制基础
教 案 正 文
学院部门: 计算机系 任课教师:DirectX程序设计课程组
授课
题目 专题1 绘制地形 授 课
方 式 课堂讲授(√); 实践课( ) 教 学
时 数 7 教学
目标
与
要求 知识目标:
1.地形生成的原理,理解地形高度图;
2. 创建地形的几何信息;
3. 对地形进行纹理和光照处理;
4. 实现摄像机在地形中行走的效果;
技能目标:
掌握地形生成的相关算法,包括地形高度图,地形的几何信息,纹理和光照处理,以及摄像机的行走;
能力目标:
能对DirectX环境进行正确的配置,掌握高度图的使用,几何信息的生成方法,纹理和光照的处理及优化技术,实现摄像机的在地形中的行走。 教学
方法
、
手段
、
媒介 教学方法:
案例驱动,讲练结合:通过“地形绘制”程序的实现过程讲解地形生成过程中所需要的各种算法;
教学手段:
使用PPT进行课堂讲解。
教学媒介:
板书、幻灯片。 主要
教学
内容
、
重点
、
难点
及
时间
分配 教学内容:
1.地形生成的原理,理解地形高度图,读取高度图中的高度信息;
2. 使用顶点缓存和索引缓存创建地形的几何信息;
3. 对地形进行纹理和光照处理;
4. 实现摄像机在地形中行走的效果; 教学重点:
1.地形生成的原理,理解地形高度图,读取高度图中的高度信息;
2. 使用顶点缓存和索引缓存创建地形的几何信息;
教学难点:
1. 对地形进行纹理和光照处理;
2. 实现摄像机在地形中行走的效果;
教 案 正 文
【抛砖引玉】
我们通常将游戏场面架设在起伏的山坡、绿草、沙滩、雪地、树木、阳光和雾等烘托出的自然环境中,这样的场景可增加游戏的逼真度和吸引力。大家玩过的游戏中是否有非常逼真的场景给你留下了深刻的印象的? 10分钟 【教学进程】
抛砖引玉
地形是怎么生成的?
地形网格就是一系列三角形栅格(grid),但是方格中的每个顶点都被赋予了一个高度值(高度或海拔),这样该方格就可通过方格对应高度的平滑过渡来模拟自然地形中山脉到山谷的变化。然后,通过纹理来表现沙滩、绿草如茵丘陵和雪山等 。
我们通过实现一个Terrain类来对生成地形的各个步骤进行实现。 10分钟 传经送宝
我们使用高度图(heightmap)来描述地形中的丘陵和山谷。通常高度图以灰度图(grayscale map)的形式保存起来。灰度图中的亮度越大,表示地形中某一点的海拔越高。
地形的几何信息存储在我们创建的顶点缓存和索引缓存中,我们通过指定每行和每列的顶点数以及单元间距(cell spacing)来定义地形的尺寸。这些值将作为Terrian类的构造函数的输入参数。Terrian的构造函数还传入了与地形相关的设备指针、标识存储高度图数据的文件的字符串,以及一个用于对高度图中各元素实施比例 变换的高度比例因子(heightScale)。
Terrain类的纹理映射方式是加载一个已经创建好的纹理文件,然后再应用该纹理数据。
由于地形是静态的,且光源一般也不发生移动,所以我们可以预先对光照进行计算,这样节省了Direct3D实时照亮地形那部分计算时间。并且这样的计算无需给每个顶点存储顶点的法向量,所以可以节省大量内存。
摄像机的实现我们已经在前面的专题中实现了,可以直接使用封装好的摄像机类来使用摄像机。我们要让摄像机在地形中行走,不能穿地形到下面,或者悬浮到地形上面。最主要的就是要根据摄像机的位置来确定它的高度(y坐标)。 140分钟 照猫画虎
我们在地形类(Terrain)中定义一个成员函数(readRawFile)用于读取高度图中的高度信息到一个向量里面,读取高度图的代码写在Terrain::readRawFile函数里面。
顶点信息的计算写在Terrain::computeVertices函数中,索引信息的计算写在Terrain::computeIndices函数里面。
加载纹理的实现写在Terrain::loadTexture中。
为了给地形场景增强真实感,我们在场景中添加光照的成员函数Terrain::lightTerrain。
Terrain::getHeight函数实现了返回摄像机在地形中的高度值信息,它以x和z坐标为参数,并返回摄像机应处在的高度(海拔)。
以上实现的了Terrain类的方法实现了地形形成过程中的各种效果,关键代码见ppt。 120分钟 牛刀小试
请正确配置编程环境,请参看专题1
注意.h文件的包含问题,这个程序中除了我们设计的地形类,我们还用到了摄像机类和用于计算帧率的一个类。
复习有关向量计算的知识。 20 学以致用
实验5:地形生成
5分钟 【作业及思考题布置】
在自己的游戏
文档评论(0)