《MU渲染技术研究》doc版.doc_第1页
《MU渲染技术研究》doc版.doc_第2页
《MU渲染技术研究》doc版.doc_第3页
《MU渲染技术研究》doc版.doc_第4页
《MU渲染技术研究》doc版.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 TerrainVertexfloat x, y, z; / positionDWORD diffuse; / need or not?float tu, tv; / texture coordinatesfloat lu, lv; / lightmap coordinates;这个结构里面,文理坐标只有2组:一层基本纹理,一层光照贴图。那么在地表需要过渡的地方,需要多层纹理Alpha混合的,这怎么办?我假设MU是在载入关卡的时候,把所有需要多层纹理Alpha混合的方块都预先渲染到一个固定的贴图里面去了,渲染的时候,这就相当于另一种地表贴图(非基本的地表贴图,比较罕见),用在tu、tv上,这就大大减少了TextureStage的数目。一个多层纹理Alpha混合需要3个TextureStage(底层纹理、Alpha图、上层纹理),如果使用多层纹理Alpha混合的话,相应的顶点就要4组纹理,结构如下:struct TerrainVertex / 支持多层纹理Alpha混合的顶点结构float x, y, z; / positionDWORD diffuse; / need or not?float bu, bv; / bottom texture coordinates, the first texture stagefloat au, av; / alpha map texture coordinates, the second texture stagefloat uu, uv; / up texture coordinates, the third texture stagefloat lu, lv; / light map coordinates, the fourth texture stage;但可不是所有的方块都需要多层纹理Alpha混合,绝大部分方块都不需要,所以顶点结构变成这样的话就未免太浪费了。因此还是应该使用只有两组纹理坐标的顶点结构。至于光照图,有可能是有多张光照图,每个方块都对应一张光照图,但一张光照图可以对应多个方块。每个方块也不见得使用整张光照图,可能只使用光照图的一部分(一个矩形区域,可能还要旋转,做纹理变换)。这反映在纹理坐标上就是,lu、lv可能会取任意值,不一定限定为0或1,可能是0和1之间的数值,也可能是0和1区间以外的数值。光照图和各顶点的纹理坐标都应该是在制作游戏时,由光影渲染程序计算好,存在导出的地图文件中。tu、tv和lu、lv不同,他规规矩矩的对应正方形的地表贴图的四个角,所以只应该取0和1。每一个方块都对应一张光照图,那会不会让光照图泛滥起来?前面说一个关卡的基本地表贴图只有2个,大大节省了空间,如果这里的光照图泛滥起来的话,就把这个节省空间的努力给抵消了。我想应该不用太担心,Quake3的关卡就是这样的,每一个Face(也就是渲染用的Polygon,是Triangle Fan)都对应一张光照图(使用这张光照图的全部或一部分),一张光照图为多个Face共用,这样下来光照图也不是很多,Quake3的第一个关卡就只有9张光照图,每张都是128*128*24的。如果实在不行的话,可以考虑整个关卡使用一张大光照图,把这个光照图延伸,平铺在整个关卡的地表上。不过我担心这样会使得明暗边界过于模糊。顺便说一下下面这幅截图(图5)。整个区域都覆盖着草丛,但草丛上也有不均匀的明暗分布。上面说的阴影只对地表贴图起作用,草丛是附加的Billboard,基本上跟地表是垂直的,那么草丛上的阴影是哪来的?我觉得有这样几种可能:1、那是一种错觉,位于阴影区域的草丛本身整个都是暗的,本来草从的颜色就不是很亮丽,所以阴影以外的草丛跟阴影内的草丛对比不是很扎眼;2、MU有一种分层渲染机制,首先是地表层(包括地表和草丛),然后是障碍物层(包括建筑、树木、大岩石、海底的珊瑚礁等,人物也在这一层),然后是魔法层(打怪时的魔法、随处飘舞的蝴蝶、海底的群鱼)。这些层次的划分只是相对渲染顺序而言,并不意味着先渲染的对象一定位于后渲染的对象的下面,遮挡关系仍然是由深度缓冲决定的。那么野外的阴影很有可能是在地表层渲染完毕、障碍物层渲染尚未开试时,渲染的一种类似Overlay一样的面片,一定会写入成功的且不影响深度缓冲(关闭深度缓冲测试、禁止写深度缓冲)。然后渲染障碍物层时,再打开深度缓冲。由于人物是在障碍物层,自然不受阴影面片的影响,这就解释了为什么图5中的人物,其下半身已经位于阴影区域但却没有受到阴影的影响。图5如果是第2种情况的话,那就再次推翻了上面定义的地形顶点的结构:它应该只需要一组纹理坐标!因为阴影(光照图)完全可以在地表层渲染完了以后,以2D Overlay的方式渲染在地表层上。这是有好处的。把阴影(光影)的渲染从地形顶点的纹理坐标中解放出来,就可以很方便的把阴影做成动态的(比如缓缓流动的阴影,以模拟流云在地面的投影),可以动态的添加阴影(比如一个爆炸或魔法产生的临时光照,把周围邻近的地表照亮)。 这也是有坏处的,那就是我们最好只用斜视角,如果成了FPS那样的自由视角的话,可能效果就不对了。上面所说的阴影,在MU中不一定出现在背光处(你能说出图5的阴影是哪个山坡的背光面吗?说它是云彩在地面的投影更合理些),它的主要作用是丰富原本单调的地面贴图效果,而不是模拟大自然的光照。至于建筑物、人物的影子,那才是为了增加真实感而存在的。三、建筑物的光影建筑物、人物的影子,都是水平的面片,一点不打折,所以人物的影子经常插到凸起的山坡里了。这里只说被火把、魔法照亮墙壁、地板什么的。在野外,可能是我上面说的那种做法,但在某些“室内”,建筑物被照亮是另一种做法,如果它是属于障碍物层,显然就不能用上面提及的办法临时照亮了。MU是把建筑分成很多部件,某个部件一但位于火把或魔法影响圈内,就整体的被照亮。这样的效果,使得这些被照亮的区域显得很扎眼,这是MU取巧的地方。见图6所示图6类似暗黑,MU的人物周围也有一圈被照亮的范围。地表被照亮还好办,可以使用前面说的在地表层渲染完毕后用面片(Overlay)的方式。但是墙壁上的光影就要另外处理了。据说Quake3的墙壁被照亮也是临时贴面片。MU的方式应该是这样,图中的墙壁并不是一个整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论