E3中最惊艳的美术风格当属The Last Night的立体像素风。预告片中的3D摄像机穿梭于这个由像素组成的赛博朋克城市中,真实的光效和雨水营造出有戏剧效果的氛围。最令人惊讶的是每个人物都能够和环境光源发生互动,根本不像是普通的像素图(2D Sprite),而是像3D模型一样受光影响。再加上片尾的飞行汽车的刻意塑造的锯齿状边缘,让人怀疑这一切都是3D元素进行了像素化的处理。而没有像素游戏用过这种方式。
以往的像素游戏的人物都是2D Sprite,上面的光照阴影也都是画在每一帧里的。一般都会默认光是从上往下照的。如果在游戏中游戏角色的脚下发生了爆炸,你会发现角色的光照不会有任何变化,除非有针对脚下爆炸专门制作2D序列帧,但那样工作量和资源占用都会变多。而在The Last Night中,主人公以及街道上的所有人都会受到头顶灯光的影响,以及偶尔的闪电会将所有人的边缘打亮,这又是如何做到的呢?
最初我和很多同事都觉得The Last Night用了特殊的着色器(Shader)将3D模型实时的翻译为2D像素,尤其是最后的黄色出租车表现出了明显的3D卡通渲染(Cel Shading),更让人觉得整个游戏的角色都是3D模型,然后通过像素化让玩家误以为是平面。但是问题也在于每个像素的方格是完全平行的,所以不可能是直接让UV贴图直接像素化(否则像素方块会因为模型体积的变化而发生扭曲)。有一种方法是通过摄像机投影(Camera Projection)来根据摄像机来重设贴图,类似于《返老还童》的纽扣片头。这样就保证不管3D模型体积和动作如何,它正对着摄像机的贴图一定是平面的。但这样计算量就会很大,而且UV包裹会出现问题。因为在游戏里,角色的像素都很完美的和人物边缘协调,不会出现有半个像素的情况。如果每一个不同的3D模型都能准确的渲染成完美的2D像素效果,那这个算法一定非常智能,来探测边缘和优化像素分布。
这也太黑科技了。没有人确定这是The Last Night的实现方法。但是如果不是3D模型,又如何做出带有法线的2D Sprite呢。
在惊叹和发愁之余,我将The Last Night的预告片逐帧反复观看了数十遍之后,终于得出了答案。其实没有黑科技,就是比较聪明。
3D和2D的混合
游戏中的箱子是3D模型上贴了像素化的贴图,就像Minecraft里那样。但本身是3D元件,也会受各种光源影响,即使倾斜,边缘也不会是锯齿状。
当然,同时是3D模型的还有街道上的一些垃圾箱,顶棚,和杂物。他们仅仅是拥有像素贴图。而这给人了一种误导,会以为“既然连箱子都是3D的了,那人和武器一定也都是。” 然而并非如此。
2D人物
人物是2D Sprite,就是一个纸片。当聚光灯打到人的身上的时候,你能明显看到柔和的边缘掠过人的身体,如果是3D渲染成2D像素,那么它会把光的信息翻译成像素的颜色,呈现出一个实心的色块。而非有渐变的柔光。这就是一个聚光灯打到一个纸片上的效果。
那闪电和灯光照耀时角色的头顶边缘光又如何解释呢?答案是那只是额外的一层“顶光”贴图。无论是任何角色,他们只有顶光和正面光两种情况,而且顶光所照亮的像素一模一样。比如一个前行的戴帽子的女士,无论她在灯前面还是走过灯,她帽子的顶光永远是那几个像素,只是明度上有变化。所以每个角色的sprite都有一个顶光图层,通过二手交易调节这个顶光图层的亮度来模拟出受路灯和闪电的影响。这依旧需要一定的工作,但是比之前的黑科技要可行很多。
没错,人物的动作都是一帧一帧做的,顶光图层也是,这些都是这个工作室最驾轻就熟的2D像素流程,从他们之前的Flash版The Last Night就能看出来。而且里面的路人角色也并不多,工作量很取巧。而最后的那辆飞车,则极有可能是3D预渲染,这一点国外Retronator Magazine网站也做出了判断。
镜头效果
强烈的景深效果,铺天盖地的体积光,真实的水面反射和雨滴流淌,都让这个游戏即使不用2D像素角色,也可以成为一个电影级别的3A游戏。
总结
因为The Last Night在本次E3上只放出了预告片,没有Demo可玩。所以现在所有的判断都是基于预告片。从中可以分析出整体的立体像素风格是由带有多层Pass的人物Sprite,在3D环境中摆放的2D纸片,和带有像素贴图的3D模型一起共同完成的。它们互相融入协调,和谐的共同作用让整个游戏拥有一个统一的令人惊叹的艺术风格。