- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《魔兽世界》地形研究
? 《魔兽世界》地形研究?收藏?
?????????《魔兽世界》地形的惊艳之处,主要在于无缝连接的世界和精细的渲染效果,借助WoWmapview源码及能以线框模式查看D3D程序的分析工具,可以对其实现略窥一二。
?
组织方式
?????????《魔兽世界》采用分块的地形,这是它实现无缝地图的基础。
?????????从WoWmapview源码来看,整块地形对应一个MapWorld,这块地形可以是整块卡利姆多大陆,整块东部王国,如果你在战场中,它还可以仅是这块战场地图。每个MapWorld分为64x64个MapTile。每块MapTile又进一步分为16x16个MapChunk。
?????????在任何时刻,程序总是保存着玩家所在的及其周围的3x3个MapTile,随着玩家的移动,这些MapTile会被动态更新,新的MapTile被加载以替换被卸载的旧MapTile。为了提高调度效率,魔兽引入了Cache机制,Cache中保存着最多16个MapTile数据。需要加载新的MapTile时,首先会在Cache中查找;卸载的旧MapTile也不会被立刻删除,而是保存在Cache中以备再次调用。由于一段时间内玩家的活动范围通常不会有太大变化,这一Cache策略在应用中表现的非常出色。这是无缝地图的基本原理。
?????????作为魔兽地形的基本渲染单元,每个MapChunk包含9x9+8x8个地形顶点,顶点布局如下图示。
?????????为了提高渲染效率,魔兽采用二级静态LOD。即渲染时刻,根据每个MapChunk和相机的距离,使用两种精度的顶点索引。这是魔兽线框模式下位于虚空风暴地图边缘时的截图。
?????????参考截图,第一级顶点索引方式可能是这样的。
?????????很难根据线框模式下的魔兽世界判断出其第二级顶点索引方式。游戏中,采用低视野设置,远处的MapChunk会被视锥剪裁掉;采用高视野设置,远处的MapChunk仍会采取一级顶点索引进行绘制。实际上,我从没在实际游戏中见过采用二级顶点索引绘制的地形块。你可以参考WoWmapview,或者采用自己的二级顶点索引方式。一般情况下,二级顶点索引的索引个数会比一级索引减少一半。
?????????魔兽世界的地形是支持挖洞的。深入地底的矿洞,矮人村落中带有地下室的堡垒,都要用到这个功能。每个MapChunk支持挖4x4个洞,挖洞信息用一个int类型保存在MapChunk中,低16位对应4x4个洞每一个是否打开,高16位对应洞的类型。下面是丹莫罗深入地面的矮人地堡截图,可以较清晰地看到与地堡相接部位地形上所挖的洞。
?????????水体信息也是保存在MapChunk中的。对应MapChunk的顶点,每块水体的顶点分布及其索引如下图。
?????????每个MapChunk保存了覆盖其上的水体信息的一系列flag值,这些flag值包含了水体各个单元是否开启,水体颜色,水体类型等。下图是途径暮色小溪时的截图,紫色的水体展示了水体顶点分布及索引方式。
?
渲染技巧
?????????魔兽采用多层地形纹理混合的方式来渲染地形,这也是各游戏普遍采用的方式。一般情况下,魔兽使用4张地形贴图和一张混合贴图,混合贴图的R、G、B通道表示前3次混合的权重,A通道表示是否为阴影。地形贴图一般在MapChunk单方向上重复张贴8次;而通常尺寸为64x64的混合贴图,仅重复一次,即每一个MapChunk对应一张混合贴图。这张64x64的贴图,在混合地形时,为地形的混合精细度提供了足够的保障。
?????????尚不清楚出于何种考虑,魔兽中保存了反映当前WorldMap粗略高度的一个64x64的顶点列表,对应64x64个MapTile。渲染之初,使用当前雾的颜色作为输出色,首先渲染这个列表。这样做可能的一个原因,是当游戏视野设置很低时,稍远处的地形会被剪裁掉,而这个顶点列表在雾的配合下,提供远处的地形填充,不至于出现地形截断的效果。
?????????接着,针对活动的3x3个MapTile逐一进行绘制。在每个MapTile中,使用四叉树管理其下的MapChunk,每个MapChunk根据相机和自身的实际距离,选择采用如下渲染策略:
?????????1.?距离很远。采用二级顶点索引,使用NoDetail渲染策略。仅设置雾颜色为顶点色,不考虑纹理采样和光照处理。
?????????2.?距离适中。采用二级顶点索引,使用Detailed渲染策略。光照,纹理混合,阴影等均会处理。
?????????3.?距离较近。采用一级顶点索引,使用与情况2相同的Detailed渲染策略。
?????????最后是水体的渲染。魔兽WLK之前的水体,基本上是采用30张水面轮替形成水波荡漾状来实现的。而在资料片《大灾变》中
您可能关注的文档
- 北京良乡高教园区北区北部配套区定向安置用房项目施工组织设计.doc
- 北师大版小学数学二年级下册《辩认方向》.ppt
- 北师大版数学四年级上册《路程时间与速度》课件.ppt
- 单元综合检测(七).doc
- 原油分析项目.doc
- 厦门实习报告.doc
- 厦门见习实习报告.doc
- 各类型掉话分析和处理.doc
- 合肥昆仑花园装修效果图 昆仑花园装修设计样板房.doc
- 吸附的应用.ppt
- 文案sharpdesk v安装指南09installation guide.pdf
- 制仪表安装西.pdf
- 介绍lecture 2ielts task1pie chart 2讲座饼图.pdf
- 磁力阅读分级读物字数访问raz lpmagnetism clr.pdf
- 物理学名词中英文对照章波动光学.pdf
- t07b the art of attribution identifying and pursuing your cyber adversaries finalanf归因艺术识别你网络对手.pdf
- 段落12009真题完形填空.pdf
- 页右桥式输送机组件综合.pdf
- 课件品牌masport图库.pdf
- 项目中增入库操作核心部分.pdf
文档评论(0)