章程

AWD引擎角色制作--从Flash游戏到“权力游戏”


demo传送门
起因:
1
斯图加特一家小特效公司,近年来,承接了一些美剧《权力的游戏》里面的一些场景,群集动画的镜头。所以如何高效的制作,预览,修改这些电影级别的美术素材,就成为他们公司的一个需要寻求解决方案的课题。
这家公司的自身情况比较特殊:他们有一个自己多年编写完善下来的,角色动画的群集行为系统,以及角色AI系统的平台软件。该软件类似于新西兰作《指环王》的WETA工作室用的Massive。
2
现在,在电影级别的特效以及镜头制作过程中,有一个环节很大程度上,拖慢了研发的节奏和迭代,这个环节就是角色群集动画的时候,材质,灯光以及摄像机动画,机位,这些元素的准确预览和快速修改的需求。由于画面里信息量的巨大,以及材质灯光动画的复杂程度,使用传统的离线渲染,预渲染方式,即便把各种效果开到最低,反走样以及镜头特效关闭,千军万马在复杂的场景里,再加上复杂的行为的话,即便是连上render farm, 渲染一帧也需要十几分钟甚至好几小时的时间,这样给CG人员与电影导演,美术指导思想之间的交流和修改,带来了相当大的不便。
打个比方,比如剧本和小说里简单的一句话“夕阳西下,一直大军兵分两路向敌人冲杀过去”。电影CG在制作的时候,必须首先量化这些描述,才能最好的表现美术效果,“夕阳西下”,太阳和地平线呈30度角时是夕阳,15度角时,也是夕阳。“兵分两路”,人群分开50度是两路,分来70度也是两路。 而且作过角色,尤其是群集角色的人都知道,在CG角色的制作过程中,光源稍微移动一下,角色的位置稍微旋转一下,摄像机机位稍微变化一下, 角色的皮肤,盔甲,高光,反射这些效果,都会有比较敏感和大幅度的变化。 所以,怎样在进入最后的render farm漫长的高精度渲染前,迅速的观察到最接近真实的艺术效果,而且能够快速的,高效的,修改这些效果,这就涉及到了一个电影电视行业不太熟悉的领域,而恰恰是游戏行业的强项的领域,实时渲染。
这家德国公司的人员也当然首选想到了unity 虚幻之类商业化的实时渲染平台,但鉴于两个原因,导致他们还是需要自研。 首先,他们已经自己有一个成熟的,强大的,完全可控的群集AI角色动画的平台,要把这个平台嵌入到unity,虚幻的架构中去,工作量无法估算,结果和潜在问题也不可知。第二个原因:unity 虚幻的很多既定效果虽然很猛很夸张,但都是以“黑盒”形式存在的,研发人员仅仅停留在工具使用层面,比如一些景深,光效的滤镜,一旦导演或者美指需要做比较大的改动或者优化,研发人员没有在代码层面上和美术层面上对效果有双重理解的话,接下来只好对这些商业引擎里的现有功能进行二次开发,其成本也是相当大,可见可控性也是比较差得。
鉴于以上原因,该公司更倾向于结合自己已有的平台,内部研发一个比较强大的实时渲染环境以及美术流程,嵌入到原有平台里去。这个原始动机就和我们引擎起步的时候有点接近了。 电影行业的从业人员对纯实时渲染这块还是有一定的距离。所以他们找到我,想做一个实时三维角色的测试和评估,看看实时游戏角色能够在多大程度上接近最终渲染效果。一旦实时的效果是可以接受的,并且和最终离线渲染的效果之间是有紧密的逻辑联系的,那么,在实时游戏引擎状态下,所见即所得的调好各种效果,然后最后再放入离线渲染器里面作提高精度的最终渲染,这样的美术工作流程,无疑是比传统的电影电视CG制作,在效率和效果提升迭代上,比较起来是一个飞跃了。
因为都是比较倾向于自研,他们给了一些《权力的游戏》的资料截图,然后我接下来基于我们自己的AWD引擎里的渲染特性,开始各个原素的高低模以及纹理的制作。
3
4
在我们自研引擎中,按照离线渲染的元素,尽量多的还原成实时渲染的效果:
一、皮肤:
5
角色表现中,非常重要的皮肤效果,其实是一个综合效果,在我们的引擎里,我给他们展现了用来表现皮肤油脂层反射的物理克莱门高光,用来模拟皮肤由厚度产生的质感模糊的 softDiffuse,最后还有以及其低廉的性能开销,用来模拟的皮肤透光的优化的“次表面散射”效果。
二、毛发:
6
在毛发的表现上,首先使用我们的双pass半透明,这样既可以得到细腻的毛发半透明边缘效果,更重要的是,又可以保持半透明物体准确的Z buffer信息,可以在使用景深,气效等大招的时候,保持一个正确的排序的效果。这种既有景深信息,又能半透明的解决方案,即便在unity的默认设置下,也是一个待解决的问题,需要二次开发的。 还有就是我们双层各项异性过滤得算法,可以使头发的高光非常的细腻,有层次感。
三、眼球:
7
激活我们的双层高光材质,以及法线反转的选项,以及其廉价但是又相当有效果的解决方案,在同一个低模,一套法线贴图上,实现了眼球虹膜以及玻璃体的材质,反光以及凹凸感的区分。这种解决方案,适合既想做出中高端视觉效果的眼球,又不想在效率上产生太多开销的项目。
四、盔甲皮革效果:
8
9
在金属盔甲以及皮革布料的表现上,我们引擎有基于物理算法的BRDF高光的加持,以及针对法线贴图的压缩,做了专项优化,如果法线贴图是通过高质量高模,按照正确的设置生成的话,能最大程度的保持细节,还原度相当高的导入我们的引擎。
五、SSAO:
10
加载了我们AWD的实时的SSAO后,角色的层次感大幅度增强,虽然屏幕空间的AO和离线渲染的AO在精度和细节度上尚有差距,但AO的参数,范围,浓淡这些,已经可以作为电影海报级别的离线渲染的重要参考了。
六、景深:
11
我们引擎里的景深模块,其效果已经可以逼近离线渲染的景深模糊的质量了,但在易用性,互动性,可操控性上,又能做到所见即所得,大大超越了昂贵缓慢的离线景深渲染。
七、HDR:
12
可以看到,我们新拓展的HDR效果非常接近于离线渲染里的后期调色流程,画面的对比度,饱和度,曝光度,以及高光的辉光效果,都得到了巨大的提升。最近几周新增加的 Linear Corrector和blend weight,前者是对效果的精细调控,后者是快速简单调控,都是增强美术对HDR效果的操控性,避免HDR效果太弱,画面发灰,或者效果太强,画面太“焦”的情况出现。
八、投影:
13
精确的,柔软的投影,也是创造气氛,电影级别离线渲染的一个重要标志,我们引擎里的屏幕空间柔化投影,可以在最小的功耗下,用最少的投影sample采样,达到非常柔和的投影效果,由于效果和逻辑都很接近高端离线渲染,所以在实时状态下调好的参数,几乎可以不用修改,直接套用在最后的renderfarm的离线渲染里,大大节省了光影调试的迭代时间和次数。(注:投影柔软度功能的调节,对负责光影的美术师帮助相当大,但其他大部分商业引擎比如unity,默认的设置里是没有提供的,是需要投入一定的人力物力财力,搞懂unity投影的shader架构,进行二次开发的。)
九、群集及其效率:
14
在960级别的显卡上,轻松复制了100+以上的角色,并且进行了各项参数stats的监听,因为测试的最终目的是要为群集动画作配合,所以效率也是很重要的一部分。在同频100+以上的角色数量下,所有摄像机滤镜,屏幕空间特效AO,HDR,景深,抗锯齿,软投影,全部开启的情况下,160上轻松全程满载60帧,所以,我们引擎的优化也是非常惊人的。
15
甚至在搭载一些全屏气效和雾效的情况下,效率和优化依旧是非常乐观的,这就意味着,当在进行群集动画调试的时候,美术指导可以把屏幕中的几百上千人当作一个整体,完全没有延迟的进行调试和修改,而且还是在动画状态下。这样,几百幅盔甲金属作为一个整体时候的反射,摄像机的机位,灯光在几千个角色场面里的角度和强度,这些原来需要几个小时才能迭代一次的修改,可以在几分钟里面迭代完成了,而且大部分实时渲染的设置参数因为逻辑接近,可以导入到最后的离线渲染里做最后的出图渲染,美术流程的效率瞬间提高了很多。
结论:
当对方看到一个webgame的引擎可以在实时渲染的领域,在美术流程,美术效果,运行效率,以及工具操控上,作出这么强大的验证,对我们还是比较钦佩的,对网页三维实时渲染,实施三维引擎的未来也是非常看好的,从长远来看,是越来越接近电影效果的一个很有潜力的行业。通过这个案例的验证,他们是被我们引擎目前取得的视觉效果上的成果所感染,认为在一个较为封闭的体系下,决定开发和提升一个嵌入的实时渲染模块,作为影视级别渲染的数据导入,应该是很可行的。
16