没有办法WOW太经典,当自己碰到问题的时候再回头研究wow发现wow尽然没有问题,暴雪的游戏制作经验让wow一开始就设计的如此讲究,不得不感叹国内游戏同世界设计方面的差异。

由于没有wow的源代码,所有的分析想法都来自与wowmapview这个开源的wow地图察看器,wowmapview的代码写的很凌乱,但很容易理解,好了,我们开始吧!Gogo

wow场景是由一系列MapTile组成,这些MapTile的大小是1600/3 ≈ 533.33m,而每个MapTile又是由 16x16 个MapChunk组成,由此可以计算出每个MapChunk≈33.33m,如图

在wow中,一个MapTile是有由一个adt文件描述。

比如World/Maps/AhnQiraj/AhnQiraj_29_48.adt文件就描述在xz(29,48)位置的MapTile,每个MapTile都包含了该tile内使用的贴图(引用外部)、模型(引用外部)、wmo(MapObject)、模型实例、wmo实例,所谓模型实例就是相同模型在tile内不同摆放位置、大小、角度的说明信息,在wow引擎中的术语是doodad,即可以随意摆放的小东西,wmo实例类似。为了节省文件尺寸,模式实例、wmo实例是通过index模型、wmo的方式保存的,同顶点索引类似。

每个MapChunk又由9x9+8x8个地形顶点高度,法线,若干贴图层(一般为4层),水面,Alpha贴图层(用于控制地表贴图的混合比例,一般为3张,尺寸64x64)和一层shadow map(64x64)组成。如图,由此可推算出wow的地面精度≈2m

Wow的地表是非常精细的,这与它使用了alpha贴图控制地表混合比例有关,而一般的引擎则把地表贴图的混合比例放在地表顶点中记录,这样地表的精度将同顶点密度保持一致。

Wow使用固定方向光照,所以可以使用shadow map来模拟树、房子等在地表透射的阴影,shadow map的尺寸也是64x64,可见阴影的精度也是非常高的。

这样的地形顶点分布是wow在最高地表精度下的高度顶点布局,当相机原理MapChunk时,这个高度顶点的布局可能是这样:

此时,地表的精度≈4m。

Wow的地表是支持挖洞的,有意思的是为了节省空间,其标示挖洞的信息数据就是一个int,通过使用位运算来得到一个4x4精度的挖洞信息,我们不放把这种4x4的洞叫做holeChunk,每个holeChunk支持4种状态来标示其内部2x2的洞分布状况,由此可见wow在数据结构方面已经发挥到了极致:对于需要精密表现的地表好不吝啬的使用64x64混合贴图,而对于hole这种只需要粗略(一半还不使用的东西)的记录一个int。

魔兽世界场景组织浅析相关推荐

  1. Siney's BLOG - 我也来分析魔兽世界-场景组织

    FW: http://www.sineysoft.com/blog/post/wow_inspect1.html 没有办法WOW太经典,当自己碰到问题的时候再回头研究wow发现wow尽然没有问题,暴雪 ...

  2. map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...

    概念: 模型: VO与DTO的区别 VO与DTO的应用 DTO与DO的区别 DTO与DO的应用 DO与PO的区别 DO与PO的应用 本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和P ...

  3. 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化

    js基础知识中的作用域和闭包 一.作用域 1.作用域.自由变量简介 (1)作用域定义 (2)作用域实例演示 (3)自由变量定义 (4)自由变量实例演示 2.作用域链简介 (1)作用域链定义 (2)作用 ...

  4. 借书场景领域建模浅析

    关于借书场景的领域建模,我从以下几个方面进行分析: 分析模型静态结构 我分析一个领域模型的静态结构的思路一般是:先找出我们需要关心的对象,对于借书这个场景,我们关心的有: 1. Account(账号) ...

  5. ToF技术的三个典型应用场景案例浅析

    "在各类新型智能终端市场的持续催动下,计算机视觉技术如今已然进入了大爆发时代.作为3D深度视觉领域和双目视觉及结构光并列的三大主流方案之一,近年来飞行时间(ToF)技术在智能手机.汽车.安防 ...

  6. 7.1.1 [Enterprise Library]缓存应用程序块场景和目标

    缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计.这些任务根据场景进行了组织,每个场景都给出了一个真实世界情况的示例,如添加条目到缓存,讨论了情况所需要的缓存功能,并展示了完成任务的 ...

  7. 转:场景管理--BSP

    对于一个3D引擎来说,最核心的部分应该算是场景组织(scene graph)了,如果这部分你都没有设计好, 那么就别指望开发一个成熟的3D引擎了.为了开发3d引擎,所以我首先就研究这方面的内容,对一个 ...

  8. gaia引擎分析(二)场景管理

    只是粗略的分析原理,大虾轻喷~~ Gaia引擎中没有场景管理器(scenemanager)这种东西,但是并不是没有场景管理,而是在cGameHost类中有一课场景树进行场景组织.一棵四叉树用来进行剪裁 ...

  9. 信息系统项目管理师-组织级、流程管理核心知识点思维脑图

    场景 组织级.流程管理有关的知识整理. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下 ...

最新文章

  1. Python中if__name__==__main__:该如何理解
  2. 人工智能与电气工程及其自动技术论述
  3. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
  4. Java 面试题 —— 老田的蚂蚁金服面试经历
  5. linux mysql启动_MySQL 安装(二)
  6. 谁说程序员不懂爱情【Her】
  7. PDF Suite Pro(PDF全能工具箱电脑版)官方正式版V19.0.22 | 含ocr文字识别软件 | pdf全能工具箱怎么样?
  8. win10 -- 注册机认为是病毒,死活不让下载 --那就关了它的自带杀毒软件
  9. MacBook上有哪些实用必备软件(2020年集合篇)
  10. SVM支持向量机原理及核函数
  11. 2022年来啦!丨新年回馈粉丝丨免费抽奖!
  12. python的power,Python numpy.power()函数使用说明
  13. IE8 访问https安全证书错误;导航阻止 解决办法 《转》
  14. 华为p4不是鸿蒙吗怎么又改为安卓_华为已将“基于安卓10”变成“兼容安卓10”,EMUI就是鸿蒙OS...
  15. 【Nape教程】Nape刚体碰撞检测
  16. flash在C#中的应用
  17. NDN网络学习笔记(一)——NDN基础
  18. Linux修改用户ID
  19. 国产光谱共焦位移传感器能侧哪些地方
  20. 【python】gensim corpora的简单使用

热门文章

  1. 微信小程录制视频上传服务器,微信小程序-从相册获取图片,视频使用相机拍照,录像上传+服务器nodejs版接收-微信小程序视频上传功能-微信小程序视频上传...
  2. JDK 8 - computeIfAbsent,computeIfPresent,compute
  3. CodeForces-1016C Vasya And The Mushrooms(模拟+思维+前缀和的前缀和) 解题报告 Apare_xzc
  4. 按钮英文字母大小写-默认样式修改-vuetify
  5. 去掉CAJViewer广告的方法
  6. 超级牙医html5游戏,‎App Store 上的“我是 小 牙医 游戏 - 牙醫 診所”
  7. 物理仿真实验运用计算机什么用,电脑模拟与物理实验教学
  8. 基于微信小程序的西餐外卖系统的设计与实现NodeJS-计算机毕业设计
  9. 化学老师为什么铤而走险当色情站长?
  10. 全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区部署选项