RTR开发日志(12)雪中特效
《古墓丽影:崛起》(Rise of the Tomb Raider,RTR)于2015年11月10日发售于Xbox平台,在等待游戏发售的同时,官方博客上不定期地更新游戏开发日志,讲述游戏制作的幕后故事。
这批日志由2015年10月起陆续在官方博客刊出,一直持续到DLC发布仍在更新。古墓丽影中文站对这些文章全部做了编译或全文翻译,查看原文请至官方博客。
- 目录总览:晶体动力开发日志之《古墓丽影:崛起》
雪中特效
TA(Technical Art)总监 Mike Oliver 这次介绍的是游戏中雪的特效。
在《古墓丽影:崛起》中,我们的主要目标之一,就是要让劳拉所处的环境真实可信,营造“挑战荒野”的气氛。劳拉身处险恶的环境,而雪山就是其中之一。雪山对我们来说同样存在着很多的挑战,有一项就是要让劳拉以一种真实的方式与周围环境相互作用。我们的解决方式就是创建一套雪中交互模拟系统,让劳拉在雪中行进时留下痕迹,在深深的积雪里更是走出一条堑沟。
我们探索了多种方式来解决这一挑战,例如视差贴图映射(parallax decal mapping)以及传统的2D和3D粒子系统,但它们都达不到我们所想实现的效果。在大量的、反复的尝试和试验后,我们创建了可变形地面系统(deformable terrain system)。
这个系统让设计师和美工师将地面的一些区域定义为可变形状态,这样,角色、动物、其他物件就能与环境产生互动。这一技术通过动态高度生成以及标准贴图而实现,它们将最高点移除,将表面平滑化,形成地表的峰和谷。
在开发过程中我们遇到一些障碍,其中最困难的就是设定顶点的密度。网格通常不是过于密集就是过于稀疏,导致变形效果很失败。我们的解决方式是以一个最佳密度手动嵌入网格,但在广大空间里这很快就引发了运行和内存的问题。此外,这样多层次的叠加,也增加了美工师的工作难度。最终解决方案是动态密铺。它能根据所给予的镜头范围,自动增加一个网格的密度。这样就提供了一个有效的解决途径,在允许美工师自由地进行多层次叠加的同时,也能抑制运行负担和内存占用。
另一个挑战在于,劳拉的环境从来不影响她。劳拉能轻易地在环境中移动,完全忘记了自己是在与什么东西互动。我根据地面变形程度,利用动态校正来修正她的行动速率和动作,于是,劳拉就变得在深雪中蹒跚而行了。看上去她就身处真实的冰雪世界。
最后的挑战是,玩家们会到处乱走,这会把一切夷为平地。于是我们增加了一个重置计时器,让变形的地面在一定时间内自然地回填。
啊,有个小八卦:在开发过程中,我们应用了动作捕捉,让劳拉堆雪人玩,但很遗憾,我们没法成功地把它们放进游戏里!
《古墓丽影:崛起》中另一个有趣的挑战是在精彩动作时刻(high impact moments,疑为上一代中的QTE动画类似的动作片段)上添加视觉趣味图层。我们希望这些图层不仅仅增加这些时刻的真实性,还能为这款游戏实现游戏界罕见的高质量。这些时刻之一就是劳拉在雪山遭遇的雪崩。
这一时刻需要实时演算来完成,无法利用提前渲染的过场动画。我们必须充分发挥游戏引擎的全部效能,改变劳拉所处的世界和劳拉装束的状态,但与此同时,又不能增加时间和运行的消耗。
在早期的概念阶段,我们尝试了在游戏粒子系统中组合网格平台,但毫无作用。我们需要在维持预算的同时,做到动作真实、有效互动,以及高质量的视觉效果。传统的技术无法达到满意的结果,于是我们转向电影技术寻求解决方案。目标是将流体动态技术集成到游戏的环境,模拟出真实的雪崩效果。
新的方向也带来了一系列新的挑战。我们怎样才能创建它?怎样才能集成它?怎样才能把控好角色、几何、镜头和光照?如何处理性能和优化?
我们第一个任务是决定雪崩在游戏中的实时视觉效果。在经过大量的研究之后,我们最终选择使用 Bink video。这在我们的引擎中已经是可用的,也被证明能有效控制内存占用。当时我们所不知道的是解码和绘图的效率。后来我们计算出解码和绘图平均每帧小于1毫秒,因此这是一个可行的方案。
接着我们研究了很多业内的标准组件来模拟雪崩效果,最后决定使用 Side Effects Houdini。Houdini 是一个专用于视觉特效的3D软件包,这是流畅而灵活的可视化脚本,让我们能够方便地安排我们所想要的特效的外观和感觉。在雪崩中,我们将粒子和烟花模拟与我们自己开发的着色器结合,做出最终的效果。
一旦我们有了一个可视化回放机制和一个视觉外观,我们就需要创建一个有效的、可叠加的工作流程。我们最关心的是在开发过程中几何、照明、镜头所经历的变形的数量,我们希望尽可能去避免。为了缓和这个问题,我们在各个方面设置最终时间,不再允许修改材质。我们还大量应用 FBX 和 Alembic 格式,以便于向 Houdini 直接输出升级了的材质。
下一步是点亮并渲染最后的场景。在《古墓丽影:崛起》中,我们使用了基于物理的渲染通道,因此这一步就变得很简单。我们能够在 Houdini 中使用已有的HDR环境贴图和照明信息,来复制游戏中的光照条件。Houdini 让我们能够将所有的材料渲染进图层,并且进行任何所需要的色彩修正。
合成游戏中要使用的图层是巨大的挑战。传统的技术是将每一个图层元素叠加在另一个图层之上,但这样一来,任何几何改变都要求对图层重新渲染,以保证所有图层的叠加序列正确和恰当。我们知道游戏中会有大量的图层叠加,而我们希望尽可能避免重复劳动。因此我们研究了深度合成(Depth Compositing)技术。这一技术可以让每一个渲染后的图像都包含多个图层深度的信息样本,克服了传统技术的障碍。
我们也研究了深度合成集成,但代价过于高昂,开发时间表也不允许。因此,我们只能找到一种方法,削减利用传统技术而导致的返工量。我们避开了雪崩与动态物体的互动,例如角色、衣服、植物等。
除了雪崩,这一技术还被运用在许多其他的区域,以帮助我们实现更好的视觉效果,增强游戏的趣味性。