在本年度游戏开发者大会初期,Epic Games通过实时演示视频《渗透者》展示了新的虚幻引擎4。在使用GPU演示粒子模拟、碰撞和动态粒子光时,部分UE4的先进技术成为改进效果的重要工具。Epic Games资深FX艺术家Tim Elek将讲述有关UE4的性能以及在《渗透者》中的应用。
记者:可以谈一下UE4,特别是在实现设计效果方面的新特征吗?
Tim Elek:作为级联工作流的补充,UE4具有许多新的效果特征。在视觉效果编辑方面,虚拟级联是虚拟引擎的制作基础。GPU粒子模拟使以最小成本模拟空间中数以万计的粒子成为可能。UE4一直使用GPU模拟级联,以此来控制GPU系统行为。这些新的GPU粒子为UE4的新特征提供支持。
矢量场的网格帮助艺术家在GPU粒子系统内创造动力、有机的运动效果。在级联中,矢量场可以被处理来为任何一个GPU模拟添加额外动作。使用较低的混合成本发射网片现在表现为一种在每次发射时都要根据材料情况进行的单一的绘制调用,取代了在每个网片中进行绘制调用。UE4效果师可以在场景中以标准GPU模拟成本发射大量的网片,而不会增加额外的绘制调用成本。
《渗透者》图片
当前使用GPU模拟,深度缓冲碰撞是在低评估成本下使用大量粒子做出高细节的碰撞效果的一种有效的方式。系统使用深度缓冲信息,正如在模拟粒子运动时使用表面普通信息一样。深度缓冲粒子也会参照隐藏的表面性能工作,因此在其中任何格栅、空洞、或者其他附着隐藏表面的都将会允许子图形使用深度碰撞来消除差距。在UE4中,点燃的半透明效果取决于光线和影子的信息。点燃的效果也进行自我阴影投射并融入到环境中。
在UE4中,自定义粒子系统有一些新型材料的展示方式。这些展示使艺术家们在控制子图形方面上升到更加精确的水平;比如,你可以在子图形周转速度的基础上示例粒子速度,返回速度值,实时修改材料。你还可以在子图形运行速度的基础上软化子图形的整体外观。
通过延期着色你可以通过使用级联将动态粒子光放置到世界中。我们使用传统的级联模块来控制色彩、大小、生活用光度以及粒子光的数量。通过粒子光,我们还可以把光线效果直接拉进粒子系统进行捆绑,这样可视化灯光就能在编辑器内实时产生可视化的效果,而不需要模拟或者运行游戏。
延期贴花在艺术家眼中也是一个非常有价值的工具。比如,延期贴花可以使我们设置《渗透者》里所有地下段内渗透的水滴、液滴和水坑效果。
记者:UE4中的粒子光是怎样工作的?
Elek:粒子光是非常容易实现的。通过定位粒子的位置、大小、颜色的模块属性来产生粒子光。粒子光传承了这些属性,并且有其专属模块确保对于光的控制更加精确。其中包括产生率、颜色、亮度、大小以及指数控制。粒子光也支持对更高质量衰减的反平方衰减。除了衰减以外,所有的属性都可以通过使用超时的曲线、载体或标量值的传统级联工作流程而被修改。因此,随着时间的变化改变光线的颜色从而来修改其强度和饱和度变得十分简单。粒子光半径还很容易进行级联,并进行视图编辑。
记者:以上技术是如何应用到《渗透者》中的——有令人惊奇的地方吗?
Elek:我们在各种不同的情况下使用粒子光。场景集成时间非常快,这是由于其光照和行为可以刹那间通过级联进行控制。例如,在级联中你可以给一盏灯设置半径和颜色,然后在世界上安放10名这样的角色。每当角色被召唤,它将以同样的方式发射光线。不会加到每个独立的角色中并用手工动画改变它们,这是因为级联在同一位置完成了所有繁重的工作。如果你需要自定义变量你可以设置实例参数并在角色层次中改变效果,或者快速地复制这种效果。在角色层次中通过设置相对时差来添加另外的细节层次是非常容易的,这样在不同的速率下光线都可以被评估。
《渗透者》图片
在《渗透者》中的远景镜头中,我们给机器人网格附着自级联发射出粒子光。机器人进行了初始速度和位置的设置,因此当他们通过世界时,他们在一定距离内阐明结构,并通过机器人网格附着在前景和中景使用中表现优异。初始值随机设置,因此你不会看到重复的效果。
我们还给每个士兵的头盔上附着粒子光。你可能会注意到《渗透者》中面具上微弱的光线,因此当他放低面具时,他的眼睛点亮了护目镜的接口。粒子光还附着到了追踪器、枪口火花、扫描效果、焊接火花以及燃烧等效果中。在节目结尾,当他引爆榴弹发射器时,我们甚至在《渗透者》中使用的武器上用粒子光来照亮他的手。
记者:可以谈谈如何处理互动光和子画面吗,或者说是,粒子?
Elek:对于每个有级联经验的人或者任何以子画面为基础的、实时粒子的工具,添加光效果都将是一个直观的过程。Epic的工程师和我们效果艺术家通力合作,给予我们足够多的控制来确保工具使用和实现效果都是精确的。
了解粒子光最简单的方式就是把它当做一种亲子关系来认识。光传承了通过级联模块定义的光的变化以及其他特性。物质和光断开的层面提供了更高一级控制。如果需要,我可以很容易地通过物质参数修改子画面的颜色,以使用附着黄色光发出紫色子画面,并在级联中把光的颜色设置为黄色。
《渗透者》图片
记者:在《渗透者》中有个很赞的水滴的镜头,可以谈谈怎样实现的吗?
Elek:水滴实际呈现的样子远没有第一眼看到它时给你感觉的那样复杂。水流形式和在管道中滚动的效果是一个折射材料自定义的静态网格,它使用Matinee制作动画特效,这样可以得到在管道的结合处会上升,然后围绕着管道的轮廓流动的效果。
实际上,水滴滴落效果是使用了我在Maya中创建的变形目标动画。我指的是用一系列慢动作照片生成配置文件,并使用Maya手绘水滴,然后用Matinee输出和控制动画播放。水滴滴落和瀑布是独立的网格,我发现此时变形目标水滴的动画会快速上升。
时间抗锯齿可以帮助柔化所有的网格边缘,当我们制作在空中的水滴动画效果时有助于协调这种转变。还有其他的一些沿着结合处边缘的网格细节帮助输出水滴信息,这些网格利用平移物质帮助输出管道中的水流。最后,小水滴的贴花分层有助于展现出这样的一种潮湿环境的效果。
《渗透者》图片
记者:怎样使用虚拟级联粒子编辑器实现《渗透者》中枪口的闪光效果?
枪口的闪光效果是网格和子画面粒子的混合效果。通常我们会寻找参考画面然后试图在物体目标的基础上旋转它。《渗透者》中我们需要现实世界中的弹道和自动版自动枪声。枪口闪光需要从环境中脱颖而出,因此我们添加了过饱和的蓝色和紫色元素来和调色板中主要的橘黄和黄色进行对比。
由于网格发射的固定渲染成本低廉,我们不会为发射量大而担心。比如,所有自《渗透者》武器中发射的弹壳都是由网格发射到空间中的。在有大型机器人的最终序列中我们甚至使用独立网格位置来发射来自每一个落地的弹壳产生的卷须的烟雾。
《渗透者》图片
记者:怎样实现枪口或弹道口与闪光效果的连接?
Elek:在《渗透者》中,我们把闪光效果和弹壳进行绑定这样可以在每次开火的时候更容易发射弹壳。自动和半自动武器开火时需要一个恒定的速度,我们通常使用循环影响来实现。例如,扣动扳机,效果开始播放;放开后,效果停止。这使得在一个位置控制所有角度的发射效果变得较为容易,而不是为了增加场景中的发射角色而付出额外的内存和评估成本,不得不进行两个而不是一个发射控制。
记者:GPU粒子模拟和碰撞系统是怎样处理冲击效果的?
Elek:在《渗透者》中,有几种典型的冲击效果。最大的一些冲击(效果)展示了很多细节,包括飞扬的粉尘、火花、大块的混凝土、金属和瓦砾效果。也有小的和中等的冲击(效果),通常可以从设施的地下部分可以看到。大多数冲击(效果)利用了粒子光、深度缓冲碰撞、粒子碰撞以及我们的事件系统。
例如,在其中一个冲击(效果)中我发射出一组具有碰撞属性的CPU子画面。当这些子画面在表面碰撞时,碰撞结果会传递到系统。当结果触发,它会告诉同一粒子系统中的另一个发射器来产生数千小型的GPU火花效果——每一个火花效果都使用了深度缓冲和曲面法线来和世界产生碰撞——就像是粒子光,烟雾和巨大的闪耀火花。这使得我们可以在效果中添加更高级的细节和次级运动。需要补充的是,这些典型的相互作用,如果没有静态发射性能是不能够单独实现的。