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

 FW: http://www.sineysoft.com/blog/post/wow_inspect1.html

没有办法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。

  • 相关文章:
  •  
  • quote 1.clayman
  •  
  • 哦,非常不错的文章
    学习ing~~~
  • 2006-08-28 14:38:12 回复该留言
  • quote 2.RomanticLife
  •  
  • 哇,技术如此之强~!

    也是,WOW是一款超强的游戏!

  • 2006-08-31 17:06:17 回复该留言
  • quote 3.000000
  •  
  • "Wow的地表是非常精细的,这与它使用了alpha贴图控制地表混合比例有关,而一般的引擎则把地表贴图的混合比例放在地表顶点中记录,这样地表的精度将同顶点密度保持一致。"

    我猜测wow的alpha混合在渲染的时候也是放在顶点上的。只是在保存的时候作为单独的贴图来保存。
  • 2006-09-11 18:25:43 回复该留言
  • quote 4.星
  • http://www.sineysoft.com
  • 引自 000000
    "Wow的地表是非常精细的,这与它使用了alpha贴图控制地表混合比例有关,而一般的引擎则把地表贴图的混合比例放在地表顶点中记录,这样地表的精度将同顶点密度保持一致。"

    我猜测wow的alpha混合在渲染的时候也是放在顶点上的。只是在保存的时候作为单独的贴图来保存。


    不是这样,渲染的时候是像素级的,那张贴图会用在ps级别来决定混合的比例。
  • 2006-09-14 15:21:38 回复该留言
  • quote 5.亮
  •  
  • alpha信息保存在地表信息中,在实时渲染时把这些信息读出来,组成一张纹理,纹理的前三个通道分别表示三张detail texture的alpha信息,第四个通道表示什么我忘了,很久以前看的。
  • 2006-12-07 01:51:50 回复该留言
  • quote 6.久远
  •  
  • 这也算是2级静态LOD的吧?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值