芳草春晖

偶尔记录自己思绪的地方...

 

次世代游戏引擎光影制作简述

一、游戏光影的范畴
实际游戏制作当中,狭义的灯光只是指程序实时根据灯光影响的顶点色和动态阴影,但实际应用当中,影响玩家整体感觉的光影效果,也就是广义上的光影效果包含的范围要更加广泛。
程序的即时光影,shader的定制固然对光影效果至关重要,美术制作的lightmap,normalmap,VertexColor乃至Glow都可以构成一般玩家认知上的灯光效果。
即是说,在游戏制作应该以游戏玩家的感觉为基准整体的设置光影的效果,而并非仅以技术手段作为分界,对于游戏制作来说,综合程序美术的多种表现手段,最终呈现给玩家的光影的感觉,才是游戏制作当中的灯光。

二、基本灯光系统介绍及使用方法
从画面渲染来说,无论一般网游还是次世代游戏,运算的规则构建是大体相似的,我们可以通过分析这个构架得出其中制作各种光影效果的可能性,下图是比较常规的各种图素经过如何的运算达成了最终画面的pipeline。

http://school.ogdev.net/upload/img/3870298832.jpg


在这样的pipeline中,对最终光影有影响的环节

http://school.ogdev.net/upload/img/3871184690.jpg


Dark Map
Dark Map 也被称为 Lightmap,这是我们目前常使用的方法之一。
这个通道一般放置bake过的灯光贴图,或者Ambient Occlusion Map, 常用的方式是赋予一个另外的UV ,这一张很小的Dark Map就可以在没有灯光的情况下获得良好的光影效果,很多引擎当中是可以由灯光自动生成lightmap的,它的效果一般用在静态物体上。
http://school.ogdev.net/upload/img/3875870158.jpg


Project lights
Project lights就是一般我们所说的硬件灯光,由于效果是即时运算,有一定的硬件要求,推荐一般不要超过3盏,否则对效率会有一定的影响.除非完全必要,不建议使用这种方法。
Project lights的运用一般是三个平行光来构筑一个整体的天光环境,(另外 Ambient light在这个过程中也有重要的意义),由于Project lights是对资源比较耗费的部分,应该由程序尽量优化。

Base map
Base map就是diffuse map就是我们常说的:贴图。
在贴图上我们可以在固有色之上进行光和阴影的绘制,从这个角度来说也是影响光影效果的重要方式,这种做法几乎不会在光影表现上耗费任何系统资源。效果主要依赖美术人员绘制贴图的水平。
同时,这也是在美术人员能力许可的条件下,完成大部分光影的最佳方式。

http://school.ogdev.net/upload/img/3691264776.jpg


http://school.ogdev.net/upload/img/3694395147.jpg


http://school.ogdev.net/upload/img/3694921405.jpg


Project Shadow
Project Shadow和project light一般有相同的光源点产生,作用是生成阴影,由于project Shadow是动态的阴影,一般用于表现有动画的物体,实际运用中Project Shadow和lightmap往往互补使用,分别解决静态和动画物体的阴影。同样,这种方法非常耗费系统资源,除非完全必要,不建议使用这种方法。

http://school.ogdev.net/upload/img/3698467791.jpg


Normal Map
Normal Map是次世代游戏常用的技术,他解决了机能对面数限制的情况下如何体现物体细节的问题,通过RGB三色代替XYX三个Normal轴向值的方式获得了更多物体细节。
Noraml Map机理的主要是在各种灯光位置会对物体的diffuse specular和reflect进行扭曲来达到近似真实,但是他不会对base map产生影响,既是说normal map影响的仅仅是材质本身,而非贴图。
由于Normal Map的这一盲点,prallax map(或displacemap)方式被创造出来弥补normal map不能扭曲basemap的缺陷,实际应用中,常常在运用Normal Map之后配合prallax map来达到更好效果。

http://school.ogdev.net/upload/img/3704374670.jpg


http://school.ogdev.net/upload/img/3705272991.jpg


Vertex Color
Material of vertex map是游戏中重要的运用,顶点色可以适用的范围很多,透明柔体等都可运用,但是最主要的应用在色彩上,通过刷取顶点色可以方便迅速的改变物体的色调,对系统资源的要求也较低,但是他与灯光色彩有一定冲突,通常情况下灯光色彩与顶点色不会用于同一物体以避免冲突,顶点色可以手动绘制或者灯光烘培,在面数较低的物体上能发挥更多的影响。
顶点色是对游戏光影最佳的解决方法之一,也是最常用的解决方法。

http://school.ogdev.net/upload/img/3707259314.jpg


Gloss map
Gloss map即我们所说高光贴图,一般灯光对物体高光是基于顶点色进行影响,如角色毛发,皮衣等物体财政很难表现出质感,如果运用Gloss map即可借助贴图的肌理界定高光的外形,也是可以通过较少资源占用达到影响光影效果的手段,另外很重要一点,Gloss map与我们一般常用3D软件中的界定不同,并非仅仅影响高光,对反射贴图也有影响。

http://school.ogdev.net/upload/img/3721312782.jpg


Gloss map其实并不一定需要是灰度图,用彩色贴图一样可以使用

Environment Map
Environment Map可以理解为我们一般所谓的反射贴图,有球形和盒体等多种方式,表现金属物体时常用,可以通过 gloss map进行限制。
Enivironment Map在max下的贴图槽为Reflection slot,默认的贴图放置进去会用球形坐标方式进行反射,如果对贴图有更高要求,也使用box贴图,六张贴图组成反射盒,如果是dds box贴图可以直接调用,但是坐标会有不同。

http://school.ogdev.net/upload/img/3723172328.jpg


MixGlow Map
Glow Map一般用以体现各种发光物体,如灯,火焰等等,是比较常用的特效类channel,在Glow 贴图栏里面贴上所用glow map ,会和其他贴图的最终效果产生相乘效果。

http://school.ogdev.net/upload/img/3729843678.jpg


Post Effects
除去上述效果,在Final效果输出之后,有时我们会通过各种post effect效果对画面加强,如Glow等,对画面光影感觉也会有巨大的影响。

http://school.ogdev.net/upload/img/3732810506.jpg


http://school.ogdev.net/upload/img/3733384620.jpg


Channel Mix

http://school.ogdev.net/upload/img/3743859463.jpg


http://school.ogdev.net/upload/img/3744321500.jpg


http://school.ogdev.net/upload/img/3745548849.jpg


http://school.ogdev.net/upload/img/3748110257.jpg


http://school.ogdev.net/upload/img/3749159018.jpg


http://school.ogdev.net/upload/img/3750176913.jpg


http://school.ogdev.net/upload/img/3750872451.jpg


http://school.ogdev.net/upload/img/3753136923.jpg


http://school.ogdev.net/upload/img/37537107094.jpg


http://school.ogdev.net/upload/img/3755084591.jpg


灯光系统分级方法及制作要点
在实际游戏制作当中,一般不会将所有的channel都开启,一方面其实要做出一款出色的游戏画面并非取决于使用多少新技术,令一方面也要考虑程序的负载。
根据游戏的种类和需求选择正确的方法合理的节省资源能够让游戏拥有更好的效果。

技术是手段,不是诉求
《Doom III》 虽然在当时是技术绝对领先的游戏,但是美术过度的依赖先进的技术,导致在美术风格上的切入不够,本应该更优秀的游戏,未能更上一步。

http://school.ogdev.net/upload/img/3763459715.jpg


与之相对,几年后推出的《Lost Plant》则成功找回了游戏美术最本质的东西,使技术成为一种手段。

http://school.ogdev.net/upload/img/37655109434.jpg


哪些地方?该使用哪些手段?
我们首先要明确,在一个成熟的美术团队中。对于一款游戏画面中的各种光影,是如何去表现,以达到画面效果和系统负担最佳的结合点的?
我们需要找到:最优化的手段。

From http://www.wz-online.net/web2/home/Detail.asp?id=47&FromType=1

posted on 2010-05-18 16:53 CrazyDev 阅读(446) 评论(0)  编辑 收藏 引用 所属分类: 游戏引擎


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

C/C++

CEGUI

Friend Bog

Game Industry

Lua

OGRE

Other

搜索

最新评论

阅读排行榜

评论排行榜