- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专题5地形绘制基本
抛砖引玉 我们通常将游戏场面架设在起伏的山坡、绿草、沙滩、雪地、树木、阳光和雾等烘托出的自然环境中,这样的场景可增加游戏的逼真度和吸引力。大家玩过的游戏中是否有非常逼真的场景给你留下了深刻的印象的? 麻雀虽小,五脏俱全 地形网格就是一系列三角形栅格(grid),但是方格中的每个顶点都被赋予了一个高度值(高度或海拔),这样该方格就可通过方格对应高度的平滑过渡来模拟自然地形中山脉到山谷的变化。然后,通过纹理来表现沙滩、绿草如茵丘陵和雪山等 。 按部就班 我们这个专题的主要内容有: 地形高度图的创建和修改 创建地形的几何信息 对地形进行纹理映射和光照处理 实现摄象机在地形中行走的效果 地形高度图 从几何形态来看,不同的地形外貌,取决于地形表面的每一个点距离地平面的高度值。这些高度值可用二维数组来存储,数组中的每一个元素就与地平面上每一个顶点的高度值一一对应。 我们使用高度图(heightmap)来描述地形中的丘陵和山谷。通常高度图以灰度图(grayscale map)的形式保存起来。灰度图中的亮度越大,表示地形中某一点的海拔越高。 创建高度图 生成一个地形高度数据的最直接的方法是,利用图形编辑软件(如photoshop),绘制一个与地平面相同尺寸的灰度图形,用作地形高度图。 图形绘制完毕后,将其保存为8位的RAW(原始二进制文件)文件,RAW文件连续存储了图像中以字节为单位的每个像素的灰度值。 高度图被保存在磁盘中,通常为其每个元素只分配一个字节的存储空间,这样高度只能在区间[0,255]内。若0~255的高度值不足以表达我们要表达的地形,可以将高度图数据加载到程序中时,对其进行一个比例变换,重新分配一个整型或浮点型数组来存储这些高度值。 我们在地形类(Terrain)中定义一个成员函数(readRawFile)用于读取高度图中的高度信息到一个向量里面: 代码中的变量_heightmap是Terrain类的一个成员变量。 访问和修改高度图 Terrain类提供以下2个函数访问和修改高度图中的指定项: 代码中的变量numVertsPerRow是Terrain类的一个成员变量。 这两个方法允许我们通过行和列索引引用高度图中指定的项。 创建地形几何信息 右图向我们展示了地形的一些相关的属性和术语。 我们通过指定每行和每列的顶点数以及单元间距(cell spacing)来定义地形的尺寸。这些值将作为Terrian类的构造函数的输入参数。 Terrian的构造函数还传入了与地形相关的设备指针、标识存储高度图数据的文件的字符串,以及一个用于对高度图中各元素实施比例 变换的高度比例因子(heightScale)。 我们可由构造函数的传入参数计算出地形的其他变量: 地形的顶点结构定义如下: 1、顶点的计算 为了计算三角形栅格的各顶点,我们只需自顶点start起,逐行生成每个顶点,保持相邻顶点的行列间隔均为单元间距(cell spacing),直至到达顶点end为止。 这样可以得到每个顶点的x和z坐标的定义,而每个顶点的y坐标的值我们要根据所加载的高度图数据结构中的相应项来获得。 计算纹理坐标:结合下图来看,我们可以推导出地形中位于(i,j)的顶点相对应的纹理坐标(u,v)的计算公式。 下面是生成各顶点的代码: 纹理映射 Terrain类的纹理映射方式是加载一个已经创建好的纹理文件,然后再应用该纹理数据。 右边的代码就是将纹理数据自文件加载到了_tex数据成员中,其中_tex是一个指向IDirect3DTexture9接口的指针。 光照 为了给地形场景增强真实感,我们在场景中添加光照的成员函数Terrain::lightTerrain。 由于地形是静态的,且光源一般也不发生移动,所以我们可以预先对光照进行计算,这样节省了Direct3D实时照亮地形那部分计算时间。并且这样的计算无需给每个顶点存储顶点的法向量,所以可以节省大量内存 由光向量和方格的面法向量之间的角度关系,我们可以构造一个位于区间[0,1]内的明暗因子(shading scalar),来表示方格表明所接收到的光照的量。 明暗因子接近于0,则表示这两个向量的夹角很大。当纹理的颜色与其相乘时,颜色值就趋于0,从而呈现出教暗的视觉效果。反之,若该值接近1,则表示两个向量的夹角很小,当纹理的颜色值与其相乘时,该颜色基本保持了原来的亮度。 在地形中“行走” 地形的绘制以及纹理映射、光照的处理我们都完成了,现在我们来实现移动摄像机模拟在场景中行走的过程。 摄像机的实现我们已经在前面的专题中实现了,可以直接使用封装好的摄像机类来使用摄像机。我们要让摄像机在地形中行走,不能穿地形到下面,或者悬浮到地形上面。最主要的就是要根据摄像机的位置来确定它的高度(y坐标)。
您可能关注的文档
- Win7system无法播放Avi.ppt
- Web的技术应用基本.ppt
- Win7system无线网络连接受限制怎样处理.ppt
- win7system激活时提示.ppt
- Win7system电脑连接手机出现MTPUSB安装失败怎样解决.ppt
- win7system在窗口之间切换怎样锁定到任务栏.ppt
- Win7system启动游戏时.ppt
- Windows XP 的操作system.ppt
- windowsmediaplayer使用的教程.pptx
- WindowsXPsystem显示设置.pptx
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 《ISO31000:2024风险管理指南》指导手册(雷泽佳译2024-04).pptx VIP
- 2025届高考语文复习:《到橘子林去》高考真题说题课件.pptx VIP
- 广州市番禺区2015-2016学年九年级上学期政治期末统考试卷(含答案)详解.doc
- 《瑜伽》课程说课备课讲稿.ppt
- 2024年度医院整形美容外科学述职报告课件.pptx
- ISO31022-2020风险管理-法律风险管理指南(雷泽佳译).pdf VIP
- GBT 16180-2014《劳动能力鉴定 职工工伤与职业病致残等级》.doc
- TASCAM DR-40中文用户手册(说明书).pdf
- 体检中心一月质量控制重点工作计划和质控小结.docx VIP
- 2025最新字帖3年级下册_楷体.pdf
文档评论(0)