视觉特效制作技巧
介绍
80lv : 能给我们介绍一下吗?你来自哪里,你做什么,你做过什么项目?你是如何进入 VFX 并最终进入 Bungie 的?
我的名字是Mike Stavrides,我是Bungie 的一名高级 VFX 艺术家。我已经在 Bungie 工作了将近 6 年,并且参与了每个 Destiny 版本的工作。
我从 13 岁起就想从事游戏工作,我花了很长时间才达到这个目标。我创作游戏的愿望主要源于我对这些游戏的热爱:子午线 59、永恒任务、最终幻想战术、命令与征服红色警戒和末日系列。
我的职业生涯实际上是在东海岸重新开始的,我找到了好几年的合同工作方式。我从事手机内容、广告、儿童教育卡通和医疗动画。对于大多数这些工作,我是一名建模师或通才。
我会尽可能多地学习,以尽可能长时间地保持自己的相关性和就业。这些工作都是合同工,我希望每一份工作都尽可能长。我会开始为一个项目建模,然后通常帮助进行索具、照明和渲染。这让我可以在整个项目长度上留下来,也教会了我许多技能。当我在日本的一家公司远程为儿童制作卡通片时,我和妻子搬到了西海岸。我们已经有了在西雅图附近认识一些朋友的安全网,因为我在家远程工作,所以我能够带着我的工作。我也很想搬到西雅图,因为它是一个视频游戏中心。如果我能够找到进入游戏的方式,我必须离工作地点很近。我最终找到了获得 Microsoft 合同的方法,这就是我开始获得第一次实时体验的地方。我被雇来建模、纹理和装配一个角色,该角色将与 Kinect 一起用于他们带到大学的一些演示。他们让我坚持了大约一年。我们制作了各种项目,有些是实时的,有些是预渲染的,但这是我实时工作的开始。
对我来说幸运的是,我在大学遇到的一个朋友已经在 Bungie 工作了。现在是 2012 年。 Bungie 想出了他们想要为 Destiny 制作什么,并且他们开始为此雇用更多人。我的朋友一直在跟我说话,我得到了一个正在创建的新团队的面试。该团队在内部被称为 Spec Ops,其想法是这将是一个小型的多学科团队,负责处理游戏中的精彩瞬间。我们需要尽可能地自给自足,这样我们才能从头到尾接受一个想法。我首先开始做技术设置、索具和制作门。任务很快变得越来越复杂,在我意识到之前,我们正在为游戏创造大型故事情节。随着时间的推移,我一直注意到瓶颈始终是 FX。Destiny 中的所有东西都几乎没有发光点或某种空间魔法,而且永远没有足够的人来创建所需的 VFX 内容量。看到这一点,我开始向任何愿意倾听并帮助我学习的人询问有关着色器 VFX 的问题。我还会查看 VFX 艺术家正在创建的文件并尝试对其进行解构。我利用这些知识开始制作非常简单的发光卡,用于我的任务。从那时起,我不断提出越来越多的问题,然后将这些学到的知识应用到我的下一个任务中,并且每次都尝试将我的能力提升一点。在我知道之前,我正在研究原始的幽灵着色器 VFX,并为玻璃穹顶创建水晶着色器。VFX 的伟大之处在于它是许多技能组合的综合体,可以使效果唱歌。我从以前的工作中学到的所有知识开始融合在一起。我能够为着色器 VFX 对我的壳进行建模和 UV,添加灯光以支持 FX,装配和动画模式,并且我知道引擎的内在和外在做我想做的事情。我想我在 Iron Rise of Iron 的某个地方正式成为了一名 FX 艺术家,但到那时,由于我已经在做的所有 FX 工作,界限是如此模糊。我一直喜欢在 CG 工作,但直到我开始制作 VFX,我才意识到这才是我真正热爱的地方。但到那时,由于我已经在做的所有 FX 工作,这条线已经很模糊了。我一直喜欢在 CG 工作,但直到我开始制作 VFX,我才意识到这才是我真正热爱的地方。但到那时,由于我已经在做的所有 FX 工作,这条线已经很模糊了。我一直喜欢在 CG 工作,但直到我开始制作 VFX,我才意识到这才是我真正热爱的地方。
我喜欢 VFX 的一件事是几乎没有人去上学。这就像一个旧式的学徒制,在那里你找到了一个人,出于某种原因,他们决定将他们所学到的所有知识传授给你。然后你成为那个老师和你自己独特风格的结合。真漂亮。
游戏中的视觉特效
80lv: 您能分享一下您在视觉特效方面的总体理念吗?您认为对每个 VFX 制作最重要的主要元素是什么?
视觉特效在游戏中最重要的作用是交流,尤其是在《命运》中。我们制作了许多玩家需要与之互动的资产。他们中的许多人有不同的状态,在命运时刻的混乱战斗中,每个状态都需要可读。玩家需要立即了解某物是否危险,是否有计时器,定义捕获位置或损坏的拒绝区域的界限。在一天结束时,游戏玩法和任务的设计胜出。我们希望它看起来尽可能漂亮,但如果它对游戏玩法不起作用,那么我们需要停下来问问为什么它不起作用,并进行更正。我非常相信对游戏进行游戏测试并了解资产在空间中的使用方式以及玩家如何理解它们。
视觉特效就是要具有欺骗性。尤其是在实时 VFX 中。大多数资产只是一系列简单的粒子或网格着色器,它们都层叠在一起,看起来非常复杂。Destiny VFX 工具非常强大,我们有权超越大多数公司拥有 VFX 艺术家所做的工作。我们目前不使用翻书来制作 Destiny VFX,但我们有一个纹理库,我们将它们混合和匹配在一起以制作所有不同的视觉效果。我总是试图以一种有人永远无法捕捉到真实纹理的方式进行混合和匹配。混淆是 VFX 艺术家的朋友。我们经常将运动隐藏为全方位的,我们的着色器网络有时会变得非常复杂。
我处理的许多资产都包含照明技术、网格着色器 FX、粒子 FX、后期处理、相机抖动和隆隆声。正是将所有这些元素组合在一起,才能产生出色的视觉效果。我经常发现轻微的相机抖动对销售效果大有帮助。如果某物感觉平坦但应该感觉更大,请问自己相机抖动是否合适。
Gambit Motes VFX
80lv: 我们 真的很想专注于你所做的一些作品。您不必在这里深入研究,但如果您至少可以大致了解这些是如何创建的,那么人们就可以尝试在他们的个人项目中做类似的事情,那就太棒了。在开局莫特看起来令人惊讶!你能解释一下你是如何制作这种美丽的灯光效果的吗?这种玻璃在里面无休止地反射的错觉是如何产生的?
在开局微尘是最开心的一个,而且很难,资产我从事的命运被遗忘。它必须在各种各样的光照条件下工作,吸引玩家的注意力,并为玩家提供有关它在哪里的信息,以及在它消失之前还剩下多少时间。
大多数 Gambit Mote VFX 都是使用网格着色器完成的。我选择这条路线有几个原因。战斗,一般来说,会消耗大量的引擎粒子预算。我们有一个优先级系统,可以帮助处理 VFX 的重要性、屏幕上应该显示的内容以及效果中可以省略的内容。使用网格可以让我更轻松地获得体积,它还可以让我使用不同的着色器技术和渲染混合模式。微粒是添加剂、alpha 混合和不透明着色器的组合,它们一起工作。此外,因为它主要是基于网格的,所以它绕过了可能导致优先系统启动并开始移除其他 VFX 的运行时间限制。
反射的舞蹈灯光效果是我们将在这篇文章中关注的着色器。对于尘埃的这一特定部分,我决定使用具有自发光属性的不透明着色器。我有一些没有任何不透明的早期版本,我得到一致的游戏测试反馈,玩家没有看到它们,尤其是在我们的一张更明亮的地图上。我创建了一个地理外壳并翻转了法线,以便面始终朝向微粒的中心渲染。对于着色器本身,它相当简单。我有一个瓷砖纹理,上面有三角形,每个都有不同的灰度值。理想情况下,这个纹理会有更好的灰度范围,但因为它是免费的,并且已经在库中,我只是按原样使用它。
然后我使用了一种有时称为梯度映射或调色板查找的技术,因为它在命运引擎中被称为。我利用游戏时间告诉 Palette Lookup 不断滚动这个不同的灰度三角形纹理,当它达到一个新值时,整个三角形都会照亮。我们还有一些内置的 PBR 彩虹色设置。我用它也给它一个额外的闪光,它会根据相机角度而变化。该特定着色器的最后一个元素是三角形纹理的法线贴图。这给了它更多的深度,让它感觉更像是刻面玻璃,而不是平坦的地理表面。我使用了两次法线贴图。它的一个版本有一个视差偏移,然后我覆盖了相同的法线纹理,但在它上面以不同的平铺率覆盖。所有这些层都试图在不增加太多成本的情况下提供尽可能多深度的错觉。相同的法线纹理也是用于灰度蒙版的相同纹理。我只是选择了只使用绿色通道。这让我节省了一些纹理内存。所以在一天结束时,着色器是 1 个法线贴图,以不同方式使用了 3 次,一个非常小的渐变纹理滚动了所有这些贴图。因为三角形的灰度值散布在它周围,所以看起来像在微粒中折射的光线中,刻面在跳舞。也因为这是一个不透明的着色器,我现在有一个一致的光照背景,供其他着色器和粒子元素播放,无论光照条件如何。这只是微粒着色器的众多元素之一。下图显示了每个网格壳,
![](https://cdn.80.lv/api/upload/content/fb/images/5d288ff414f19/widen_920x0.jpeg)
![](https://cdn.80.lv/api/upload/content/fb/images/5d288ff4d7766/widen_920x0.jpeg)
Raid Orbs VFX
80lv: 你在这些惊人的复杂效果上做了很多工作,这些效果有很多不同的步骤和元素,就像 Raid Orbs 一样。你能谈谈这些东西的结构吗?我相信从本质上讲,这种方法与我们一段时间以来在游戏中使用的效果非常相似,但是凭借您的工艺和详细的方法,您设法将其提升到了一些令人难以置信的水平!
您假设该方法不是新事物是正确的。这完全是关于将技术类型与正在创建的资产类型相匹配,然后在该资产中为它拥有的每个状态使用正确的技术。
关于这个资产的有趣之处,在回答这个问题之前我并没有真正停下来思考,它使用了我们在引擎中可用的所有类型的 VFX 钩子。
天空中的热身部分是所有面向相机的卡片和一些用于向下击落的圆柱黑色条纹的粒子网格。我在这部分使用了更传统的粒子,因为它们如何让动画更容易发生。您可以随着时间的推移将它们放大并为它们添加一些随机属性。这种类型的方法适用于介绍类型的效果。我还应该提到,热身 VFX 是从为 Taken Public 活动介绍制作的一些粒子开始的。我还应该提到,我不是其中一些 VFX 的原始创建者,但我确实重新调整了所有从其他东西开始的项目。一个好的视觉特效团队分享!
![](https://cdn.80.lv/api/upload/content/4c/images/5d288ff5b2305/widen_920x0.jpeg)
效果是动态光(有助于使 VFX 接地)、进行径向泛光模糊的后期处理屏幕效果(以一种有趣的方式填充屏幕)以及我使用过的一些使用的 FX 套件的混合被遗弃(帮助您的团队并尽可能地考虑模块化!)。你可以在gambit传送门上看到类似的爆发式FX,也可以看到将玩家带到上升领域的传送门。我还添加了一点相机抖动和控制器隆隆声。
![](https://cdn.80.lv/api/upload/content/95/images/5d288ff66b93d/widen_920x0.jpeg)
空闲的柱子和底壳都是静态的3ds Max生成的地理。该列是一系列用于绿色发光的十字四边形和用于黑色墨水的圆柱体。我个人的 VFX 方法是使用更多的网格着色器类型的视觉效果,而不是所有基于粒子的效果。我觉得 Bungie 比其他游戏 VFX 更推的一个方面是网格着色器 VFX 的使用。我觉得这样的方法有助于这种需要闲置很长一段时间的动态资产。我能够减少粒子在做类似的事情并一遍又一遍地淡出时会产生的过度绘制。我们也限制了屏幕上可以有多少粒子,所以我通过使用网格来确保 VFX 保留来解决这个问题。Bungie 也不为 VFX 使用翻书。我们有一种方法可以将多个纹理混合在一起并以某种方式偏移它们,这样您就无法分辨正在使用的蒙版,但也允许 VFX 长时间保留在屏幕上而不会看到重复。底部也是一系列 3ds Max 外壳,用于绿色和黑色间歇泉外观部分。从底座延伸出的粘稠粘稠物是动态贴花。这让设计师可以更轻松地将图案放置在世界中,而不必让它始终是 100% 平坦的表面。诀窍是让不透明的边缘有一些 alpha 测试,这样它就会打破边缘并融入贴花开始的地方。底座的这种方法让我在地面上创造了一个有趣的形状,让它不必在一个完全平坦的表面上,并且能够空闲未知的时间而不会重复。粒子也用于非常基本的次要元素,如火和会游来游去的小尘埃。再次为外观的那部分选择粒子,因为您可以更轻松地以随机方式散布它们,而对于微粒,它们可以使用 GPU 矢量动画为它们提供更有趣的动画。
![](https://cdn.80.lv/api/upload/content/22/images/5d288ff71928b/widen_920x0.jpg)
最后一部分是中心的球体。这主要是粒子(加法、阿尔法混合和失真)。它还使用了动态光和镜头光晕。为这部分选择粒子是因为它更容易将所有这些类型的视觉渲染类型分层并为它们提供漂亮的动画来打破轮廓。
所以,最后,这个资产使用了面向相机的粒子(加法、alpha 混合、失真),柱子向下的网格粒子,撞击的后期处理 FX,撞击和空闲的动态灯,空闲柱的网格 FX和拍摄的底座,球体中心的镜头光晕,图案与世界相交处的动态贴花,最后,相机抖动和控制器隆隆作响。
![](https://cdn.80.lv/api/upload/content/22/images/5d288ff7cf540/widen_920x0.jpeg)
优化与测试
80lv : 你如何测试你的 VFX 并确保你的效果不会太贵?这里有什么诀窍?您能否稍微讨论一下 VFX 可以给开发人员带来的主要问题,以及在现有限制下使其全部工作的一般经验法则是什么?
VFX 是一种在实施不当时绝对会破坏帧速率的艺术。这实际上是一个我们可以使用比当前设置更多的工具的区域。大多数时候,我们致力于一个效果,只是梦想远大,并试图让它看起来和感觉像我们想要的那样。我们在检查 CPU 和 GPU 粒子的整体运行时内存方面有一些调试帮助,但目前,我们没有一种简单的方法可以从我们正在创建的效果中查看帧的总成本,直到性能团队介入并发现问题帧率区域。他们标记发生帧率下降的区域,并提供性能 PIX 捕获,我们用它来帮助识别有问题的 VFX。从那里我们在需要的地方进行优化。希望永远不会收到那支球队的消息。在大多数情况下,我们依靠先前的经验并在制作 VFX 时尽量保持理智。
我们有距离设置,可以从屏幕上移除粒子或网格,并在您靠近它时将其淡出。这些都是用户定义的,因此您可以为正在处理的特定资产进行设置。我们尽量不以任何理由打开或关闭 VFX。对于粒子,我们还有确定粒子效果重要性的优先级设置。优先级 1 对外观非常重要,优先级 2 有味道元素很好,优先级 3 是环境 FX 之类的东西。在重税下,系统开始移除优先级较低的系统,以便保留重要的游戏元素并保持稳定的帧率。
我们拥有的另一个不错的功能是我们添加元素的四分之一分辨率缓冲区。这仅花费全分辨率 VFX 价格的 1/16,因此选择何时使用此缓冲区非常重要。像全屏环境灰尘之类的东西总是在这个缓冲区中,以及像通用体积填充一样的粒子和任何其他可以以较低分辨率逃脱的 VFX。
着色器
80lv:你也在用着色器做一些不可思议的工作。您对着色器的总体方法是什么?您建议如何使用它们?在这里进行实验的好方法是什么?它们如何帮助您以更好、更有趣的方式来构建这些出色的东西?
正如我之前提到的,与传统粒子相比,我更倾向于着色器风格的工作。在大多数情况下,您实际上可以使用非常便宜的数学运算。我主要使用乘法和加法数学运算将低分辨率纹理混合在一起。我们的大部分纹理都是 512 x 512。我们有一个纹理库,我们试图依靠它来帮助解决内存问题,而这一切都是为了以一种不会让玩家意识到它的方式一遍又一遍地使用这些纹理看到的相同的几个纹理。掩码的混淆是关键。尽量不要让玩家看到 VFX 中使用的实际蒙版。帮助混淆的一个快速提示是简单地交叉平移两个纹理,这些纹理以不同的平铺率和不同的 UV 偏移速度相乘。
我为着色器制作的几乎每个 VFX 都从深度缓冲区读取,以在交叉点处进行遮罩或创建一条热交叉线。以智能方式使用深度缓冲区还可以让设计人员更轻松地在许多位置使用资产。如果您的着色器对自动遮罩本身很聪明,那么它可以在更广泛的条件下工作。
另一种方法是始终使用菲涅耳来模糊来自相机的掠射角度,以帮助柔化形状而不是形成强硬线条。就像隐藏您正在使用的蒙版一样,隐藏底层几何体的外观总是很好的。
创建良好着色器的一个经常被忽视的部分是能够制作自己的自定义几何外壳并对其进行 UV。我尝试将我的 UV 保持在 0 – 1,然后依靠诸如世界空间和纹理的平铺率之类的东西,而不是将我的 UV 拉伸到超过 1。
我比较依赖的另一个系统是在我的网格上绘制自定义顶点颜色并将其读入着色器。您可以使用它来创建自定义蒙版,而无需使用新纹理。是的,这确实增加了每个顶点的额外成本,但它通常比内存中的新纹理便宜。在需要匹配环境创建资产中的 UV 时使用它们也很重要,因为它们超出了 0 – 1 个 UV,但在匹配来自环境资产的底层纹理时,您仍然需要使用自定义创建的遮罩。
给学习者的建议
80lv:总的来说,你能推荐一些很酷的资源来帮助人们开始使用 VFX 吗?什么是开始的好地方,什么是值得关注的好人,书籍,教程?这些将是惊人的建议。
很难找到 VFX 的资源。它有点晦涩,直到最近才在学校教授。我经常浏览 Artstation 寻找艺术作品,但即便如此,其中大部分内容也与 VFX 无关。另一个不错的网站是 realtimevfx.com。如果您对启动 VFX 感兴趣,我建议您打开 unreal 并在 youtube 上搜索一些基础知识。大多数较新的引擎都采用越来越多的基于节点的数学路线来创建 VFX。我有点被宠坏了,因为当我开始我的 VFX 之旅时,我不必打开记事本来定义着色器数学,从第一天起,这对我来说都是基于节点的。我也很幸运能够在工作中从我周围的人那里学到这项技能。