大家好,纪元社区的朋友们! 我是《纪元117:罗马和平》的高级技术美术师奥利弗·默廷斯。我在育碧美因茨工作室工作了5年,从《纪元117:罗马和平》项目一开始就参与其中。 经常有人问我:“技术美术师到底是做什么的?” 简单来说,技术美术师是美术部门(例如关卡美术、3D美术、动画)和开发部门(例如游戏玩法编程、引擎开发、工具开发)之间的桥梁。 美术师通常会从形状、颜色和时间节奏的角度思考,而程序员可能会从游戏逻辑、代码设计模式或数据类型的角度思考。要在两者之间搭建桥梁,就需要一位技术美术师,他既要了解这两个领域,又能在会议中提供支持,编写脚本和小型工具来协助美术师,进行研究以探索新的兴趣领域,或调查资源优化以提升游戏性能。他们负责更偏向技术的美术工作,比如通过节点网络构建功能、为角色或道具创建控制 rig、开发程序化材质,或运用多种技术制作惊艳的视觉效果,甚至编写着色器。 提到《纪元》系列,你会立刻想到建造一个外观精美的帝国。但今天我要向你展示如何将它彻底烧毁,留下一片毁灭与混乱。好奇吗?接下来为你介绍 生火 在古代,火是人类生存和发展的核心要素。它不仅在夜晚提供光亮,还能让我们烹饪食物、制造物品和武器,并帮助抵御野生动物。但就像尼禄皇帝统治时期的罗马大火所展现的那样,每当我们以为自己完全掌控了自然的力量时,现实总会证明我们错了。 所有这些案例都融入了《纪元117:罗马和平》中——但在我们开始制造和控制一场大火之前,我们首先需要学会掌控小小的火焰和火花。为实现逼真的烈焰效果,我们将结合多种视觉元素,核心是自发光火焰,辅以火花作为细节点缀,还有热扭曲效果以及能向周围投射光影的光源,使其在游戏世界中表现得真实可信。与现实相比,部分元素会进行艺术化夸张处理,以便从玩家的常规视角能清晰看到,或营造更具戏剧性的画面。 在制作火焰动画时,我们会使用最先进的视觉效果创作工具:Side FX Houdini。借助该工具,我们能够基于现实世界中火焰的运动规律创建数字火焰规则。这一过程被称为模拟,我们将对火焰、烟雾以及在热空气中飞舞的余烬等每个元素都进行模拟。由于高分辨率模拟包含的数据过多,无法在实时游戏环境中处理,我们需要通过将单个动画火焰烘焙到纹理中来简化信息——即【翻页书】。之后着色器会以从左到右、从上到下的重复方式读取它。 现在我们还希望呈现出三维物体的外观,因此我们在空间中创建多个称为【粒子】的移动点,并在每个点上附加翻页书,以创建整体的动态火焰形状。以下是火焰的构成要素概述:

关于粒子、热效应和光源 “但是等一下,翻页纹理只有黑白两色,颜色在哪里呢?”你可能会问。 通过为火焰使用灰度纹理和火焰颜色渐变纹理,我们可以在游戏的中心位置调整所有火焰的颜色。这使得迭代和实现一致的质量变得更加容易。我们甚至进一步将颜色分为两个渐变纹理,一个用于发射色,一个用于纯反照率颜色。但这只是为了获得更生动的颜色变化效果。这些将在稍后作为我们着色器的单独输入使用。 你还能从火焰中期待什么?没错,火花!让我们补充一些内容: 回到Houdini中,我们创建了受风力扰动和重力影响而四处飞舞的粒子。我们将它们制作得比实际稍大一些,以便即使在较远的距离也能看到它们。

既然我们已经制作了那些更明显且“醒目”的组件,现在是时候处理那些细微的部分了。我们希望能感受到火焰散发出的热量,也就是说,我们想让火焰周围的空气产生扭曲效果。因此,我们也要为此添加一些粒子。为了实现这一效果,会在着色器中分配一张法线贴图,它会使位于其后方的像素产生变形。

由于《纪元117:罗马和平》拥有昼夜循环机制,我们的火焰也应在夜晚照亮道路。无论是为了让周围墙壁上浮现摇曳的影子,还是营造阴郁的氛围,添加光源都变得至关重要。

在现实世界中,不仅物体本身会被照亮,光源周围的空气也会被照亮。微小的尘埃颗粒在空气中飞舞,对光线产生反应并将其进一步传播,形成我们所感知到的光束或例如“神光”等效果。 将这种效果与壁炉和篮子相结合,能很好地照亮城市。

在游戏中点燃城市 既然我们已经制作了火焰效果,那就来看看不受欢迎的城市火灾事件吧。 在《纪元117:罗马和平》中,我们有三种事件类型:火灾、疾病和起义。我们现在要仔细了解的是火灾事件。 总体而言,火灾事件是一个复杂的主题,因为它需要多个部门协作才能营造出整体氛围。当火灾事件发生时,居民会惊慌逃离,救援单位会赶来灭火,扑灭较小的火势。空气中弥漫着烟雾,屋顶的破洞清晰可见,多处火势以危险的环形在城市中蔓延,留下一片废墟。因此,我们制作了多种类型、不同规模的火焰与烟雾效果,为每栋建筑添加了位置标记,并对所有元素进行了平衡与调整。例如:在初始版本中,从玩家视角看,烟雾效果过于浓烈,遮挡了居民和解决单位的行动。 观察单个住宅建筑,可以解释其视觉戏剧性:

首先,烟雾和小火苗开始蔓延,火势逐渐变大,威胁也越来越严重。 当火焰吞噬建筑物后,屋顶会出现破洞,可以看到发光的黑色烧焦木梁。当建筑物燃尽时,它会坍塌成废墟。 如何摧毁建筑物 这就引出了最后一个话题:建筑物摧毁。 由于《纪元117:罗马和平》包含多种不同类型的建筑,为每种建筑制作单独的摧毁动画需要占用大量额外的硬盘存储空间,因此我们针对特定情况想出了几种解决方案。对于那些不常被摧毁的大部分建筑,我们采用了一种着色器解决方案,为其添加额外的烟雾和灰尘效果;而对于城墙、塔楼、城门和别墅等军事战略目标,由于它们被摧毁的场景相对常见,因此保留了详细的破坏动画。 通常,建筑是按照“洋葱式”风格创建的,即通过添加多个单面外壳来组合成一栋建筑。但遗憾的是,这种方式对于破坏过程来说并不理想,因为破坏效果需要“实心”的几何体——也就是从各个面看都是封闭的几何体。 因此,我们首先会将网格准备为实心状态。之后,它会通过使用简化的碎裂模式被切割成碎片——我们称之为“碎裂”——每种模式代表不同的材料,比如木材会分裂成长条状碎片,而石砖则保持单块状态,混凝土材料则会碎裂成许多小块。例如,大理石会被水平切割成多块。

现在让我们来看看我们是如何实现【石塔的破坏动画】的。 如果仅使用松散的碎裂块,我们的塔会以不受控制的方式瞬间倒塌——但这并非我们想要的效果。因此,为了获得可控性,我们将松散的碎块粘合在一起,并随着时间的推移,在我们精确指定的位置和时间部分移除粘合剂。这样一来,塔的某些区域会先崩塌,然后是其他区域,依此类推,看起来更加真实。

在我们的游戏引擎——帝国引擎中,我们使用一种名为【顶点动画】的技术,在着色器中播放下落碎片的动画。这是一种用于动画网格的替代方法,与通常用于角色和动物的【骨骼蒙皮网格】方法不同。顶点动画除了破碎网格外,还需要两个动画纹理,一个用于破碎碎片的平移,另一个用于旋转。 这只是我们销毁特定资源主要过程的高级概述。在Houdini内部,逐步执行所有这些步骤的整个网络如下所示:

这就是我对火焰与毁灭效果的介绍了。希望大家在游玩《纪元117:罗马和平》时,能和我们一样喜欢这些效果。祝大家玩得开心,奥利弗




换一换 





















