MU渲染技术研究.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MU渲染技术研究.doc

MU渲染技术研究 MU的效果几乎是目前斜视角网游中最炫的。而且这个游戏的体积非常小,最初版本的奇迹只有几十M(现在官方最新版有150多M),十分便于下载安装。 一、地表贴图其实就一张 MU的地形,使用贴图非常简洁、节省,“其实就一张”。以“勇者大陆”的城镇为例,基本上地表贴图只有1张,如图1所示: 图1 我用红色粗线勾出来的方块,好好观察就会发现这些方块内的贴图是同一个。怎么看出来的呢?我用绿色短线标出来的地方,是地表上的3个疙瘩,每个方块内都有这样的3个疙瘩。这可以说明,他的地表最基本的贴图是同一张。 如此重复的使用同一张,难道不会使得画面太单调吗?为了解决这个问题,MU使用了光影、草丛(可以称之为地表装饰物)、多层纹理Alpha混合等技术,来营造一种多样的地表的“假象”,效果非常好,一方面使得整个游戏体积非常小,另一方面又不影响画面的美观。 光影、草丛(地表装饰物)、多层纹理Alpha混合,这3样技术,用的最多的是光影,用的最少的是多层纹理Alpha混合(因此说MU的地表多样性,并不是依靠多层纹理Alpha混合来实现的)。无论在城镇、野外,都用到了光影,但只有在野外才用到了草丛。 从下图(图2)可以看出,从1到6的方格,虽然使用的同一张贴图,但由于各处光影(明暗的分布)不同,使得画面看上去并不十分单调。 图2 但在野外,当草丛覆盖了地表的时候,玩家只能通过密密麻麻的草叶的空隙看到一点地表,地表上的贴图当然就不那么重要了,当然就可以无所忌惮的使用同一张贴图了。而且草丛在不断的“随风”摇摆,视觉上更加没有单调的感觉了。如图3所示 图3 下面我们去海底看看,如图4,看到那些颗粒分明的地表了吗,其实也是重复的使用同一张贴图,但是加上不均匀分布的蓝色光影以及动态的波纹光影,整个海底并不显得十分单调,更别说还有基于粒子系统和Billboard的鱼群,使得整个海底十分生动。 图4 我们来算一下。目前,MU共有“勇者大陆”、“仙踪林”、“冰风谷”、“地下城”、“失落之塔”、“亚特兰蒂斯”、“死亡沙漠”、“天空之城”8个大关卡,假设每个关卡都有城镇和野外之分,那么分别需要1张城镇地表贴图、1张野外地表贴图。这就是8*2=16张贴图。即便加上装饰用的多层贴图,这个数字也不会膨胀太大。这16张贴图如果是256*256的JPG的话,估计每张也就是几十KB大小,以50K来算,就是16*50=800K,还不到1M。就算加上更多的用于多层纹理Alpha混合的贴图,这个数字翻上5倍了不起了吧,那也才5M左右而已。地形贴图只有5M的资源。这为其他资源腾出了很多空间。 二、地表的光影渲染 既然光影这么重要,MU是怎么在单一的地表上渲染光影的呢?首先,MU的地形是很有可能不使用共享顶点的,也就是不需要Index Buffer。这从图1中就可以看出,红色方块内的贴图,是完全一样的,没有首尾相接。这样做有它的好处,主要是在处理顶点的纹理坐标上,可以少很多伤脑筋的事情,因为你不用担心改变了方块某个角的顶点数据会影响到相邻方块的相应顶点,也便于让两个相邻方块使用不同的贴图。Quake3的场景就是不共享顶点的。 假设MU地形顶点的格式如下: struct TerrainVertex { float x, y, z; // position DWORD diffuse; // need or not? float tu, tv; // texture coordinates float lu, lv; // lightmap coordinates }; 这个结构里面,文理坐标只有2组:一层基本纹理,一层光照贴图。那么在地表需要过渡的地方,需要多层纹理Alpha混合的,这怎么办?我假设MU是在载入关卡的时候,把所有需要多层纹理Alpha混合的方块都预先渲染到一个固定的贴图里面去了,渲染的时候,这就相当于另一种地表贴图(非基本的地表贴图,比较罕见),用在tu、tv上,这就大大减少了TextureStage的数目。 一个多层纹理Alpha混合需要3个TextureStage(底层纹理、Alpha图、上层纹理),如果使用多层纹理Alpha混合的话,相应的顶点就要4组纹理,结构如下: struct TerrainVertex // 支持多层纹理Alpha混合的顶点结构 { float x, y, z; // position DWORD diffuse; // need or not? float bu, bv; // bottom texture coordinates, the first texture stage float au, av; // alpha map texture coordinates, the second texture stag

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档