[转载翻译][重新整理]西川善司的”METAL GEAR SOLID 4”图形讲座(2)
http://www.huanimei.com/logs/94177874.html
比起物理方面的正确性,更重视电影效果的环境照明,
由美工手动设定半球照明
虽然现世代的3D游戏图形中几乎不怎么谈论到,但这两年,慢慢开始注重细节的画面引擎,这就是拥有特别环境光照的画面引擎。一直到PS1,PS2时代为止,所谓环境光就是根据场景设定一个适当的颜色来表示。也就是说针对动态的光照效果,没有一个彻底提升效果的设置参数。在画面表现力有大幅提升的现时代中作为吧角色融入到场景中的手法,或者说使角色有存在感的手法,就特别注重环境光的处理方法。MGS也可以说是一个很好的例子。
所谓环境光,不是从某个光源射出的直接光,而是根据相互反射等方式生成的二次光源(间接光)的总体,本来的话为了必须正确地得到光照效果,会进行辐射度计算,而现在简单地表示成在这个空间中存在的光。MGS4中,这个环境光的效果是用了消耗既低,又能得到较好效果的“半球光照的”方法。
现时代的3D游戏图形中人气很高的环境光是“AMBIENT CUBE” ,或者被称为辐射度VOLUME的手法。这个手法是预先进行场景辐射度的计算,在场景中相间隔适当的距离来设定带有方向的环境光,在实际的光照时会查找该区域的AMBIENT CUBE,来设定环境光的技法。
VALVE的HALF LIFE2是作为第一个采用AMBIENT CUBE的作品
高部说到,我们在开发初期采用的是AMBIENT CUBE的实现方式。但是,美术组对结果并不满意,从物理上来说是肯定是正确的灯光效果,但角色太融入整个环境了,我们希望使角色能稍微显得突出并有存在感。这样的话,必定需要美工手工调整AMBIENT CUBE的数值,但手工指定太费工夫,所以我们采用半球照明的方法
这样的制作方法的判定在电影制作中的打光阶段也是经常被使用到的。为了让演员看上去更漂亮,会避免场景中只有从窗直射进来的光,那样鼻子在脸上的影子过于强烈,效果不令人满意,这时就会从脸的正面方向打一个较淡的灯光。MGS4中也是虽然有基本的基于物理表现的效果,但也会根据美工的需求来设定有电影化效果的环境光,就是之前所说的采用简单的半球光照。
半球照明的演示图
半球照明在本连载中的篇中有详细的介绍,具体可以参照该文章,在这里简单解释说明的话就是把环境光由2个方向的光组成。一般简化成地面上的环境光和天空光2部分组成的模型,在MGS4中我们将其扩展为任意2个方向的光的概念。
在AMBIENT CUBE方法中,会把场景按一定距离来划分,自动组成若干个环境光。MGS4中,美工可以在每个场景中的任意方向,任意影响范围里,(有BOUNDING BOX指定)来设定环境光。即,美工会在场景中(包括指定影响范围),设置从2个方向照射的假象的照明器具 。还有,因为影响范围是设计成能够由层级指定的,例如越接近设定的的半球灯光,就能切换影响的半球灯光这样的设计结构。
开发中使用到的半球照明的设定工具的画面。
■ 使用分离PRELIGHTING模拟辐射度表现(HALFLIFE2中使用的NORMAL RADIOSITY MAPPING)
为了让角色的表现更令人印象深刻,我们使用了半球照明,通过放置半球环境灯光,就能够来表现在动态角色身上的模拟辐射度光照的效果(相互反射,间接光照等表现效果),而在MGS4中,和动态角色的处理方法不同的是,对于背景我们使用复杂的环境光表现手法。这就是在开发团队中被称为分离PRELIGHTING的技术。
具体做法是,在场景中美工设定分离PRELIGHTING专用的光源,把光源计算的光照效果预先烘培到背景的POLYGON模型的各个顶点的附带属性上。简单来讲,相当于顶点单位的LIGHT MAP。光照结果的烘培,该方法的特点是在相互垂直的3个方向的基准向量上进行的。
分离PRELIGHTING的概念图
这3个方向的光照结果会烘培到构成背景的模型的每个顶点中,包括用于背景模型的法线贴图等阴影处理方法也可以利用这3个方向的光照的结果。
这样处理,即使在较暗的环境中,在阴影中向来缺乏效果的法线贴图也能产生非常丰富的阴影细节。这就是这种技术的实现带来的最大的恩惠。而且,美工是在设计场景时设置这些灯光,而且这些分离PRELIGHTING用的光源数没有限制,通过仔细设置光源的放置方法和光源的强度,就能实现有辐射度表现的背景效果。
只有分离PRELIGHTING
同一个场景的完成FRAME
还有,光的分布分辨率本身也是在顶点单位上的关系 ,效果比LIGHTMAP要低很多,但在这方面,贴图的显存消耗完全节省下来了,这就是其优势。还有,背景多边形的各个顶点上烘培光照效果的工程不是在开发阶段完成的,而是在游戏启动之后,在PS3开发机运行时进行的。因为这个实现方案,我们就可以动态地针对场景的变化来对应烘培光照效果,这也是其一大优势。
在开发中使用分离PRELIGHTING的设定工具的画面
例如,一旦在街灯中放置灯,就会咋这个街灯的光的影响范围上新设置一个用于分离PRELIGHTING的光源,通过再次计算来更新分离PRELIGHTING的信息就可以了。这样做的话,街灯在点亮之后,就能得到实现动态光相互反射的辐射度效果。并且,当该街灯被破坏时,相反地会删除这个用于分离PRELIGHTING的光源并更新分离PRELIGHTING的信息,街灯也会相应表现出熄灭后的相互反射的辐射度效果。
烘培的光照计算结果因为是顶点单位的原因,表现精度低,并且如果顶点数据附带的信息很多的话,PERFORMANCE会很低的这些问题在PS3的RSX上对PERFORMANCE是严峻的考验。但在现阶段应该是比较现实的能够做到的,比较合情合理的用来模拟相互反射表现的一种实现方法。
分离PRELIGHTING对应动态场景。当击中电灯后,周围的环境光就消失了。这是通过删除消失后的分离PRELIGHTING的光源来实现的。
2008年最大的PS3杀手级作品非MGS4莫属。在揭秘MGS4中的3D图形秘密的3D图形讲座MGS4篇的后篇中,我们将向大家介绍阴影生成,特效及SHADER等话题。另外,对于作为针对PS3独占的开发,我们还将介绍MGS4中的CELL处理器的活用情况。