如何加强角色渲染的真实感(self shadow + subsurface scattering + rim lighting)

     最近一直在玩street fighter IV,被其夸张的角色建模、华丽的动作和漂亮的油画效果所震撼。里面的角色,在对手跳起或蹲下时,自己的头部会一直注视着对手;近身时,如果一方发出必杀技,另一方的面部将作出恐怖和惊吓的表情。这些许细节,将角色的个性表现得淋漓尽致。值得一提的是,头部注视对手的效果,2D格斗的年代,早在SNK的《世界英雄》里已经实现,虽然表现力以现在的眼光来看,确实有点粗糙,但足以一窥日本人在细节上的重视程度。

     不过,真正让我惊艳的,还是bio5。日本人对于各种高端图形技术已经运用得相当成熟,整部游戏,完全的实时渲染,让人感受到一部大片的视觉享受。其对技术的熟练程度,当吾辈还在摸索shadowmap精度问题,为到底是psm还是vsm或是csm好争执的时候,他们早已可以将这些技术整合完成,并已经用于艺术表现。

     传统的局部光照diffuse + specular, 效果比较单一,不受周围环境影响,给人的感受就是,单个物体看着还行,复杂的场景渲染就会觉得有点假。真实世界中的全局光照,是不会出现LdotN的背面那么黑的情况。因为大量的光线在散射后,基本上不会出现“绝对黑”,仅仅一个ambient是无法模拟出来的,这也是为什么各种GI渲染的效果如此逼真的原因。

     大致地总结了一下,为了表现更生动,需要重点关注的是人物头部,以及光照渲染,其他的可参照现有技术:


角色头部相关技术
------------------------- 

1. 丰富的面部表情,通过morph网格变形实现,需要做一个编辑器,供美术调整面部顶点,并记录下来,供后期VS混合时使用。

2. 活动的头部,通过控制颈部的骨骼,限制一定的活动范围,达到“注视”目标的效果。(国外的游戏很早就开始关注的到这个细节,特别是一些恐怖和解谜的游戏,可怜我国的单机游戏,血狮做完就直接大跃进到MMO) 

3. 活动的眼球, 眨动的眼皮。WOW的实现是,眼眶是固定的模型,眼睛是一个片,可以左中右三方向随机固定运动,至于眨眼,只是随机时间内短暂出现一个皮肤色的片,暂时挡住眼球部位,实现瞬间的眨眼效果。这样的细节程度,可以满足WOW这种近境渲染不多的游戏;对于生化五这种注重人物表现的游戏,通常的实现应该是,眼眶的顶点可活动,随时时间播放“合拢”动画,达到眨眼效果,也可以实现各种“瞪眼”和“眯眼”的效果。而眼球,一个半圆的球面,通过一根骨骼控制,同头部实现。


光照相关技术
------------------------- 

1. self shadow,众多shadow map,我选择的是vsm,它在实现self shadow的效果中表现良好,一定程度模拟出soft shadow的效果,部分精度、走样和漏光都可以解决,通过淡化阴影,效果不错。

2. 3S(subsurface scattering),次表面散射是指光线照射到物体后,进入物体内部,经过在物体内的散射从物体表面的其他顶点/像素离开物体的现象。在透明/半透明的材质上,这种效果比较明显,比如说是皮肤,玉等等。怎么理解?请把手张开,挡住太阳,然后观察这只手。可以说这种效果是比较难以模拟的,在没有复杂的预计算前提下,很难达到接近物理真实的。这里通过在ps中拿到已经projection后的z,即可以简单的理解为散射的一个参数,通过一些非物理的计算,控制住其散射的比例,以达到柔和的效果。

3. rim lighting,皮肤边缘上的汗毛和毛孔能捕捉光线,当光源正对着摄像机时,你可以观察到这种效果。这里可以通过1 - VdotN来达到这个目的,为了得到更好的边缘,最好将oneMinusVdotN再乘以自己一次。是的,因为是VdotN,这种边缘模拟实现只在高镶嵌的模型上效果最好,对于低模,相对效果要差一点。



  

 

原文地址:https://www.cnblogs.com/oiramario/p/1592983.html