Neil Gowland 制作世界末日被遗弃的咖啡店 Drive Thru
大家好,我是 Neil Gowland,目前是 Sumo Digital Newcastle 环境团队的首席美工。作为环境艺术家,我在游戏行业工作了 16 年多,并创作了 17 部已出版的作品,包括《使命召唤:先锋》、《胡德:亡命之徒与传奇》、《麻袋男孩:大冒险》和《汤姆克兰西:全境白盒》。
本文1.1万的字数,讲的较为详细,阅读需要一定时间。

在进入主要制作之前,如果有一条信息我希望人们从中获取,任何人都可以完成这样的环境,而无需将自己锁起来并无休止地工作。我有一个相当完整的生活方式。
我作为环境负责人的工作可能非常苛刻;我有两个对我要求更高的孩子,我有兴趣爱好,而且我有足够的时间和我的未婚夫一起看电视或玩游戏。

我的秘诀是每天坚持小跑。在专业工作之外,我的第一要务是花 1 小时处理我的项目,我将其分解为 2x 30 分钟完全无干扰的会话,即番茄工作法。我不会在这里详细介绍,但我强烈建议研究番茄钟并尝试一下,因为它可以让我在更短的时间内取得更多成就。试着让每天一小时的时间不可商量,尽管我们都是人类,你不可避免地会错过几天。
如果你不能被打扰,你会说服自己摆脱它。跳过一天会变成跳过两天;在不知不觉中,你会经历很长一段时间没有工作,重新开始会更加困难。
遵循此方法的另一个好处是,如果您设置了一个简单的习惯跟踪器,则可以轻松跟踪您在项目上花费了多少时间。例如,我在这家咖啡店工作了 15 个月,时间正好是 502 小时。

502 小时听起来很多,但如果你把它分成 8 小时,你通常会在专业环境中这样做,这将是大约 60 天的工作量。考虑到从道具到材质再到着色器的一切都是从头开始创建的,这将是一个合理的时间表。
使用同样的理念,有更多空闲时间的艺术家可以每天花两小时而不是一小时来快速完成项目。
项目与目标
在开始任何你必须长期致力于它的项目时,设定目标并知道你会从中得到什么以保持动力到最后是至关重要的。
在提交任何环境项目之前,我喜欢先问自己一组问题:
1. 这个项目将把我推离我的舒适区多远?
如果你选择一个几乎是全新学习的项目,那将是一个真正的工作,你会一直觉得自己进展缓慢,最终,你会更倾向于放弃。另一方面,如果你选择了一个过于简单的环境,而且你完全处于舒适区,你就不会学到任何新东西。
选择一个在您的舒适区之外但又不太远的项目是最好的前进方式。您将能够每天都取得良好的进步,同时在进一步学习的过程中遇到挑战。
关于这家咖啡店,我从来没有创造过太多的树叶或世界末日后的环境,所以这是我在这些领域变得更加精通的机会。

2. 这个项目需要多长时间才能完成?
尝试在开始之前衡量您认为环境需要多长时间,并将其与您想要投入的时间进行比较。在理想情况下,我喜欢在一个环境中工作大约一年,并且我相信在我开始这个项目时这是可以实现的。
重要的是要注意这些项目几乎总是比你预期的要长,所以添加一个缓冲区。20%-30% 是一个很好的误差范围。

3. 我对这个项目的工作有多兴奋?
多年来我了解到,你对项目的兴奋和动力会随着时间的推移而减弱,所以你必须在一开始就对项目感到兴奋,因为一旦工作完成,你的兴奋更有可能下降而不是上升开始。
如果你对这个项目不感兴趣,并且感觉工作是一件苦差事,那么你更有可能选择其他活动,比如玩游戏或看电影。
如果我对一个项目不感兴趣,我通常会推迟开始任何事情,而是开始考虑其他更有吸引力的想法。

4. 这个项目与我从事的专业工作有冲突吗?
这个可能看起来很奇怪,但我总是避免承担与我目前从事的专业工作有显着相似之处的个人项目。原因很简单。我更有可能厌倦做类似的风格。如果我在工作中开发一款中世纪游戏,我会更倾向于在家里开始一个科幻项目。

5. 这个项目完成后会补充我的作品集吗?
当我选择一个项目进行工作时,我喜欢考虑完成后它在我的投资组合中的外观以及它可能填补哪些空白。例如,我在创建这个环境时的作品集是相对干净且维护良好的环境,所以我想证明我都可以制作肮脏和邋遢的环境。
虽然项目可以为上述问题提供一些完美的答案,但答案越有利,我就越有可能在项目期间保持动力。

规划与灵感
当我开始这些个人环境时,我的脑海中经常没有一个明确的方向,这没关系。我让这个想法随着时间的推移而发展。
对于这种环境,我从一个明确的目标开始。创建一个不会在 Last of Us 游戏中显得格格不入的内部/外部环境。

我考虑了你在《最后生还者》中经常看到的环境(餐厅、酒吧、商店和药房)。我选择了一家咖啡店,因为它们可以成为独特的建筑,不必与其他建筑相连。
每当我要制作一个真实的环境时,我都会松散地基于一些真实世界的参考,所以我的首要任务是找到一个真实世界的位置作为基础。对于这个特殊的环境,我选择了靠近我住的地方的星巴克作为内部和外部建筑的灵感。

对于环境的外部部分,即停车场和周边地区,我选择了另一家星巴克餐厅,但这次我在洛杉矶找到了一家。我喜欢它感觉像是一个相对较小的独立区域,边界墙将是我环境的逻辑分界点。
你会在我的最后一张照片中看到,虽然我没有直接复制任何这些参考资料,但你仍然可以看到灵感来自哪里。

有趣的事实是,以现有事物为基础的环境甚至可以帮助实现未来主义设置。
例如,我之前的作品——未来城市的一家科幻餐厅,灵感来自于多年前的一个夏天,我在英国惠特比的一家海鲜餐厅。


一旦我有了这些重要的现实世界位置作为参考,我就知道我将要制作什么样的环境。所以我专注于收集尽可能多的通用参考图像,所有这些都在我机器上的一个文件夹中。我主要寻找的一些东西是:
不同品牌的咖啡店,尤其是小型独立品牌。
其他类似环境的游戏。
其他艺术家的类似环境。
有了一个充满参考图像的文件夹,我开始通过建立一个 PureRef 板并将所有内容组织成结构化的部分来理解这一切。

现在这个想法终于在我脑海中形成了,我很高兴开始,但首先,我浏览了所有的参考资料,并列出了我认为我必须制作的每一条内容。我宁愿有一个臃肿的清单而不是一个未煮熟的清单,因为一旦你看到它们是如何被使用的,就很容易削减资产,而不是始终处于计划的心态并考虑需要添加的新资产。
我使用 Notion 对我的环境进行规划。我所有的资产清单和任务都在我每次工作时打开的一个页面上。我将资产清单分为五个部分:
1. 标准资产(很可能需要独特纹理的资产)
2. 结构资产(将应用平铺材质的模块化资产)
3. 平铺材质
4. 贴花
5. 着色器
我已经准备好进入资产清单完成的白盒阶段。
白盒
在环境中工作时,我总是在我选择的 DCC 中创建一个白盒。对于这个项目,我使用了 Blender。我知道许多艺术家直接跳到虚幻中进行白盒,这非常好。但出于以下几个原因,我更喜欢在 DCC 包中创建完整的白盒:
更少的程序交换——我在同一个文件和程序中建模和设置修整。
虚幻引擎需要一些设置才能看起来不错。(如果没有烘焙照明或光线追踪设置,内部看起来会很垃圾——当然,这是 UE4 的问题)
更快的“外观开发”——着色器可以更快地设置和应用。
我有一种在 Blender 环境中工作的独特方式,这是我在很多地方都没有提到的,所以值得深入研究。
与 Max 不同,Blender 可以在单个文件中包含多个场景。这很棒,因为您可以将主场景用作虚幻的复制视口,即放置资产的视口。然后,您可以创建任意数量的新场景。我使用这些额外的场景来容纳同名的资产组;例如,如果我计划制作五个窗口,它们都将位于名为 SM_WindowA 的场景中。
在这些资产场景中,您可以使用 Collections(本质上是一个美化的文件夹)分隔每个资产。回到您的主要合成场景,如果您按 Shift+A 添加新资产,您将在底部附近看到 Collection Instance。

单击集合实例将为您提供文件中所有“集合”的列表;单击其中任何一个都会以“实例化”形式将相关集合添加到场景中。您无法在此视口中编辑模型,但您可以像在 Unreal 中的任何静态网格体一样放置、缩放和旋转它。

对我来说,这样做有几个关键的好处。
资产被放置在 0,0,0 而不会妨碍。
您不再需要将资产放在一边来处理它们。
由于资产位于 0,0,0,因此您无需采取额外步骤来准备它们以供导出。
与传统实例不同,集合可以包含多个网格。
它们的行为类似于实例化网格,但与 Max 不同的是,几乎不可能意外断开链接。
您甚至可以在集合中放置集合,如果您想创建一组资产以便于放置,这非常好。
在我的主要布景场景中,我总是打开绝对网格捕捉,因此除非我选择,否则几乎不可能脱离 1 米/10 厘米的网格——非常适合我在虚幻中重建场景。
我的网格设置为默认设置,这意味着如果我移动一个对象,它每 1 米捕捉一次。移动对象时,我可以按住 shift 键,然后捕捉切换到 10 厘米的网格。

为了开始我的白盒,我首先浏览了我的标准资产列表,并以一种快速而肮脏的方式对所有内容进行建模——纯粹关注规模和数量。创建这些 Whitebox 道具为我提供了一个可以使用的资产库,因此我可以在场景准备好时快速修饰场景,还可以帮助我构建可扩展的结构。
我首先关注的是椅子、桌子和门,因为这些是最容易按比例构建的,然后你就有了其余资产的参考点。
我在这个阶段所做的一切都在 Blender 实体着色视口中,应用了相同的主要灰色材质。所以在这个阶段我不关注颜色或纹理。

对大部分白盒资产进行建模后,我将注意力转向结构资产。
对于结构资产,我总是尽量使我的场景模块化。我总是从一个介绍性的 4m 宽的墙部分开始构建场景。如果我遇到一个 4m 的部分无法解决的施工问题,我会先做 2m 的部分,然后再做 1m 的部分。
我所有的墙都是 10cm 厚,我的想法是墙背靠背放置,所以总墙厚变成 20cm,即 4m 的内墙与 4m 的外墙背靠背放置。下面是我如何安排模块化资产的示例图像。

随着越来越多的资产上线,我逐渐在我的主要构图场景中构建场景。下图显示了我在投入生产之前的最终封锁。
当我屏蔽场景时,我偶尔会将整个场景作为单个网格导出到虚幻引擎,以便在第三人称视图中四处奔跑,等等,以检查规模。


当我对场景的进展感到相对满意时,我会对所有道具和结构资产进行第二遍处理,在其中将颜色引入场景。我为每种颜色创建一个 Blender 材质并调整视口显示颜色。

下面,我为 Whitebox 椅子分配了两个 ID。一个用于木材,一个用于靠垫。

这种颜色只会在“着色视口”模式下显示。
当我处理这些资产时,场景变得全彩色,最终看起来像下图。因为调整这些颜色是一个如此简单的过程,所以我借此机会调整场景的艺术方向并尝试不同的颜色组合。

正如你所看到的,我在封锁上花了很长时间——可能太多了,但这些是基础。看看现实世界中的建筑物。建筑师在施工开始前多年规划建筑物。然后,当施工开始时,它们通常会在双倍的时间内从头到尾建造完成。如果地基不牢固——建筑物就会倒塌。
当我开始制作时,我有一个最终场景的立体 3D 表示。
最后,我将块导出到 Unreal,打算在它们可用时用最终质量的网格交换所有内容。
道具
在创建道具时,我 80% 的资产都经过了高多边形模型到低多边形模型烘焙的标准资产制作。可以使用其他更有效的技术创建一些资产,但对于个人环境创建,我发现您的工作流程越重复,您就越能更快地完成资产并进入节奏。这对于环境的结束至关重要,因为不可避免地,你会厌倦看到它。
我将引导您了解我的一项典型资产,让您了解我的流程。
我议程的第一项任务是确定我对资产的原始设计是否是正确的选择,或者根据进一步的参考,我是否改变了主意。如果我愿意继续,我将开始将封闭模型转换为为 ZBrush 准备的模型。我的高多边形模型开始时非常简单,因为我让 ZBrush 完成繁重的工作,我将进一步讨论,但现在,我将模型放入 ZBrush 的过程包括以下内容:
将资产分成多个部分——即子工具
确保在任何曲面中都有适量的多边形,从长远来看,这将使生活更轻松
删除任何 Ngons - Zbrush 不喜欢它们。

随着资产分解成多个部分,我将它们作为多个子工具带入 ZBrush。然后我遍历每个子工具并将它们动态化到高密度,然后是变形>抛光。
波兰语将为您的所有边缘提供平滑的斜面外观,这是我们烘焙法线贴图所需要的。使用波兰语时,我没有使用固定值,这是一个用肉眼判断的情况,并不断抛光直到美观。您还可以掩盖区域以应用不同强度的抛光。

对于 Dynameshing——我强烈建议从 ZBrush Central 网站下载 Dynamesh Master。这是一个相当古老的插件,但它仍然可以与较新版本的 ZBrush 完美配合。Dynamesh Master 插件允许您为 Dynamesh Meshes 设置目标多边形数,而不是使用任意数字。
有时,您会遇到一个子工具,由于曲面需要更多基础几何体,因此无法适当地进行动态划分。像这样对模型进行动态网格化将使其保留多面外观。
在这种情况下,您希望在 Dynameshing 之前尽可能地平滑表面。我通过将多组分配给模型然后单击按多组折痕来实现平滑的表面,这将添加支撑环以帮助保持形状。
然后我多次细分几何,直到模型明显平滑。一旦你有一个顺利的结果 - Dynamesh 将完美地工作。

从这里,我可以根据资产的类型进行一些雕刻,比如一些边缘损坏或自定义细节。
在这一点上,我有一个基础高模,当你习惯它时,这是一个快速的过程。在这个阶段,我想看看我的库中是否存储了任何高度 alpha 以进一步增强道具。使用高度 Alphas 是一种很好的方法,可以让一个高多边形模型看起来像你在它上面花费的时间比你花的时间长得多。市场上到处都是可供购买的 alpha 产品,每一分钱都值得。如果我想要其他东西,我偶尔会制作我的 alpha 以供将来使用。
下面是一些显示我要添加的详细信息类型的图像。


完成高多边形模型后,我将所有子工具导出到资源管理器文件夹中以备后用。如果计算机可以处理它,我几乎总是以完整的 Dynamesh 分辨率导出 High Poly 模型。我宁愿不进行抽取,因为它少了一个需要担心的步骤,并且减少了错误的余地。
现在我回到 Blender,复制 Pre-ZBrush 模型作为将其转换为我的低多边形模型的基础。我的部分生产策略没有对 ZBrush 进行重大更改,因此该模型几乎可以在游戏中使用。之后,只需在需要的地方清理一些拓扑、删除隐藏的面、解包和打包模型即可。

对于展开,我使用 Blender 的标准工具。首先,我手动标记希望成为 UV 接缝的边缘,然后选择模型的所有面 > 展开。
我倾向于将我的展开方法更改为保形,因为它更适用于几何形状,而基于角度的方法往往更适用于有机形状。

在标记接缝时,您可以通过选择锐边 (Shift + G) 并一次性将它们标记为 UV 接缝来加快此过程。使用上述方法可以让你完成 90% 的工作,但总是需要进行一些清理工作。

对于UV包装,我使用UVPackmaster。它需要花钱,但它为您节省的时间是值得的。对于这个项目,我的目标是每米 1024 像素的纹素密度。

烘焙——我用狨猴工具包。虽然这是一个额外的程序和成本,但我更喜欢您获得的额外控制权。我通常在 Marmoset 中烘焙法线贴图、曲率贴图和环境遮挡贴图。

烘焙道具后,我进入 Substance Painter 开始纹理,在其中我引入了 FBX 文件以及我在 Marmoset Toolbag 中烘焙的法线贴图、曲率贴图和环境光遮蔽贴图。一旦我分配了相关的源纹理。我在 Substance Painter 中烘焙剩余的源纹理(世界空间法线贴图、位置贴图和厚度贴图)。我也可以在狨猴里烤这些。尽管如此,Substance Painter & Marmoset 烘焙这些图像的方式可能存在一些差异,而且由于智能材质严重依赖这些贴图,我更愿意继续使用长期以来对我有用的东西。
关于纹理资源的一个节省时间的技巧是保存上一个 Painter 文件的副本作为新文件的基础,然后换出所有相关的源资源。这比从空白场景开始要快得多,而且如果您以重复的方式进行纹理处理,就像我在处理环境时所做的那样,它为您提供了一个很好的开始基础。
如果我从头开始创建一个 Painter 文件,我所做的每个资产总是倾向于具有相同的顶层集合,所以我首先设置它们:
曲率贴图(通常设置为覆盖 20% – 40% 不透明度)
AO 贴图(通常设置为叠加,不透明度约为 5% – 20%)
我根据个人喜好不断调整整个纹理的 Passthrough Sharpen 过滤器,但我通常将其设置在 0.2 - 0.4 左右。
在对资产进行纹理处理时,我总是倾向于执行相同的步骤。我总是从为资产的所有组件设置基础材质开始。通常关注资产在出厂时的样子。为此,我会使用可用的材质,但有时我会设置平面颜色、粗糙度和金属度值,以获得稍后可以修改的基础。

接下来,我将对道具上的每种材质进行局部风化处理。这种类型的风化在文件夹内,只影响相关材质。

最后,我会做一个全局风化过程,它会平等地影响所有材质——比如灰尘和污垢——它通常是微妙的。尽管如此,这仍然有助于将资产联系在一起,并使所有不同的材质感觉它们作为一个一致的资产属于一起。

资产完成后,我通常会在具有中性照明的资产健身房中查看它们,并在必要时进行调整。

我可以比我做的更进一步,但这是一个有意识的决定,能够产生个人环境。正如艺术家所说,资产的最后 20% 与前 80% 的金额相同。考虑到这一点,我避免做很多手绘或局部细节,因为这总是最耗时的。您需要选择在哪里花费时间,如果资产需要更多关注,那么我会这样做。
结构性资产
结构资产是我给资产的标签,这些资产通常太大而无法保证使用独特的纹理集。在我的场景中,它们通常是墙壁、地板、天花板和道路。因此是结构标签,但毫无疑问还有其他资产也属于这一类。
当涉及到结构资产的最终生产时,十分之九,我为 Whitebox 版本建模的几何图形对于最终资产来说也足够好,因为我在 Whitebox 级别上花费了大量时间。
结构资产使用世界对齐纹理在此特定场景中进行纹理化。因此,除了光照贴图 UV 之外,它们不需要 UV,我使用与道具相同的技术创建它们。
在项目接近尾声时,当我对结构资产不需要任何修改感到相当满意时,我会在所有主要结构资产上每 20 厘米添加一次边循环,以便对材质混合的顶点绘制进行大量控制。每 20 厘米可能是多余的,但可以将其用于个人项目。

在这个项目中应用于结构资产的着色器遵循类似的结构,墙壁和地板之间略有不同。因此,首先,我将回顾地板着色器,然后讨论我对墙壁所做的更改。
就像我为道具制作纹理的方法一样,我总是以最干净/未损坏的瓷砖纹理为基础,然后从那里建立风化。因此,我为地板创建了两个主要的纹理集,一整套瓷砖和一个损坏的集。(我将在下一节讨论创建耕作纹理)。然后,在 Unreal 中,我设置了一个着色器,使用红色顶点通道在它们之间进行混合,使用噪波纹理分解混合,使其看起来更自然。



接下来,我添加了一个表示平铺灰尘的材质层——使用绿色顶点通道将其绘制到网格中,并再次使用与上面类似的噪声分解。此外,它还受到高度信息的影响,因此灰尘会首先积聚在缝隙中。


最后,我通过创建一个添加湿度作为顶层的材质层来完成着色器,再次受到下面所有层的高度图的影响。


对于墙壁着色器,它会丢弃灰尘和潮湿材质层,因为它们对垂直表面没有意义。
最后,我决定使用世界对齐蒙版来增加所有模块化资产的连续性,而不是手动顶点绘制材质 A 和材质 B 之间的混合。



瓷砖材质
与现在的大多数艺术家一样,我在 Substance Designer 中为这个项目创建了所有的平铺材质。
在我为这个项目创建的所有材质中,我可能对赤陶地砖最满意。伟大的 Substance Designer 教程充斥着互联网,所以我不会过多地介绍我的 Substance Designer 工作流程。我倾向于遵循传统的工作流程,首先关注高度图,然后是粗糙度,然后是反照率图。


根据我的经验,我认识的大多数人都直接从 Substance Designer > Unreal Engine 导出纹理,但我的工作流程略有不同,因此值得解释一下。我没有从 Substance Designer 导出纹理,而是从 Substance Designer 将一个 SBSAR(Substance Archive File)文件直接发布到我的 Substance Painter 架子目录中。您可以通过右键单击图形文件名 > 发布 SBSAR 文件或 Ctrl+P 来执行此操作。


如果您将 SBSAR 文件保存在 Substance Painter 架子(材质文件夹)的位置,它将自动在 Substance Painter 中可用。
从这里,我有一个模板 Substance Painter 文件,其中设置了四个平面,代表 4x 平铺材质,每个平面覆盖 4m 平方。我也有一些比例字符站在平面上方,因为确保细节与材质覆盖区域的正确尺寸至关重要。
每个网格都有一个单独的材质 ID,如下面的纹理集列表所示,允许我对任何纹理集进行四种变体。我通常坚持两种变体,但很高兴可以选择在不创建新模板文件的情况下添加更多变体。

每个平面上的材质都是相同的材质节点,但通过调整暴露的参数来创建变化。


我选择使用此工作流程的原因有几个:
我喜欢一切都以相同的方式导出,无论是道具、材质还是贴花。
如果我愿意,它允许我以传统的手绘方式更改材质。
我可以在同一环境中查看所有材质变化并对其进行调整,而不是一次查看一个或等待在虚幻引擎中查看它们。
如果我搞砸了 Substance Designer 图表,我可以在不记住有效值的情况下自由地做出变化。
它允许我混合预先存在的物质 Painter 材质以进行进一步的变化。
这些材质可在我的标准资产纹理处理过程中使用。
我经常将我的一种材质发布到 Substance Painter,一旦我在视口中看到它就需要进一步调整。为此,我在 Substance Designer 中进行了相关调整,然后再次发布 SBSAR,但这次是作为增量版本,即 FloorTiles_Version02 等。
我增量保存的主要原因是如果程序打开,Substance Painter 不会刷新材质。相比之下,保存到架子中的新材质会自动填充,使其速度更快。这是一个烦人的问题,如果开发人员修复它会很好,但就是说,有时
很高兴拥有以前的版本来比较并确保您所做的任何更改都是一种改进。
Hotspot Textures
除了独特的烘焙和平铺纹理之外,我使用的唯一其他纹理工作流程是热点纹理。热点纹理是一种快速将纹理应用到几何体但将面匹配到预定义矩形的方法。我最初是通过 Valve Source Engine 了解到这种技术的,但我相信许多其他开发人员也使用这种技术。
对于这个项目,热点纹理是一种快速映射门框、窗框和其他金属部件(如屋顶)的有效方法。
我只为这个工作流程制作了一个纹理集,速度出奇的快。但是,如果我没记错的话,它是你作为测试快速生成的纹理之一,但你永远不会返回,并且它最终在项目的其余部分保持不变(你会惊讶于这种情况发生了多少,即使在专业工作室)。
为了开始这个材质,我制作了一个黑白模板图像,以了解我希望如何分割表面。该模板旨在获得尽可能多的不同尺寸的面板,加上一些重复的变化,同时保持网格模式。

一旦我对模板纹理感到满意,我的下一个任务就是将其转换为法线贴图。以前 NDO / NDO2 非常适合这项任务,但 Quixel 停止了对该程序的支持,尽管我仍然觉得它有它的用途。
例如,它曾经非常适合制作快速法线贴图,而无需打开需要进行一些设置才能开始工作的密集程序。无论如何,在我研究 NDO 替代方案的过程中,我发现了一堆模仿 Thiago Klafke 的 NDO2 的 Photoshop 动作。我相信它们是他在 Unreal 4 中制作办公室教程的一部分,我之前购买了该教程,强烈推荐 https://youtu.be/nu1YC8nwOX8。
安装了 Photoshop 动作后,我打开了我的模板纹理,并使用矩形选框工具,我开始一一选择每个面板并运行 Bevel_8_Soft。运行 Bevel_8_Soft 动作会产生一个 8 像素的 45 度法线贴图斜角,它更像是一个圆角斜角,非常适合我想要的。

重复此过程,直到我最终获得类似于以下的纹理:

法线贴图完成后,我将其导入 Substance Painter 并使用我之前在道具创建部分中描述的设置将其应用到平面上。然后,我在painter中快速烘焙了所有的源贴图,从法线贴图中得到一个曲率、AO贴图等。
烘焙源纹理很重要,因为智能材质通常依赖于这些贴图,因此拥有它们会产生更好的效果。
随着源纹理的烘焙,我快速应用了我库中的智能材质并对其进行了调整。

纹理完成后,我将介绍我使用 https://github.com/leukbaars/DreamUV 的过程,这是一个由 Bram Eulaers 提供的免费 Blender 插件。
我在 Blender 中制作了一个应用了热点纹理集的飞机,并开始将面板切割成单独的元素。
这架飞机将是我分配给 DreamUV 的 Source Atlas Object。目前有两件事是必不可少的;多边形必须是四边形;否则,插件将无法工作,并且多边形必须作为单个对象附加。


接下来,我开始准备使用热点纹理对资产进行纹理化。在这种情况下,我将对门框进行纹理处理。为了让这个过程正常工作,我需要确保资产都是四边形,因为 DreamUV 只会映射真正的四边形。我还确认我没有不必要的分割,因为 DreamUv 将单独映射每个多边形,使模型看起来分割。

一旦门框模型准备就绪。我选择了我想要映射的所有多边形,然后单击热点按钮。您可以选择要映射的多边形,但在这种情况下,我选择了所有内容以一次性运行该过程。
单击 Hotspot 将使用作为源图集对象的精确映射来映射每个多边形;它将比较源对象和目标对象之间的多边形大小,并选择适合您尝试匹配的多边形的最接近的映射,从而生成可以通过单击按钮进行纹理化的资产。

这需要一些设置,但这可以在整个项目中节省大量时间。
灰尘
我很满意我的场景的一个技术方面是出现在所有道具上的灰尘。
当我开始这个场景时,我想设计一种在资产上做一些程序灰尘的方法。我喜欢添加这些效果,因为它打破了重复资产的重复性,反过来又让它们感觉它们具有独特的纹理。灰尘还有助于将所有内容作为同一场景的一部分联系在一起。
不幸的是,我没有任何早期尝试的图像,但我从探索预计算 AO 开始。对于任何不知道的人,您可以在 Lightmass 烘焙期间生成 AO,然后将该 AO 用作材质输入并将其作为任何着色器的一部分进行修改。

虽然 Pre-Computed AO 很棒,但我并不特别欣赏我的场景依赖于光照烘焙来看起来完全纹理化。因此,我开始探索其他选择。
当我寻找灵感时,我喜欢做的一件事是打开其他市场包或内容示例,尤其是 Epic Games 制作的那些,因为理论上,没有人应该比自己更了解他们的引擎。不幸的是,我不记得我正在查看的具体内容示例,但我发现了一种仅出现在资产顶部表面的苔藓材质。通过一些调整,这可能是尘埃的绝佳基础。
我开始创建一个着色器,使用 Epic Games 版本中的一些技术作为灵感。在最基本的层面上,它本质上是一组世界对齐的平铺材质,被世界对齐的蒙版掩盖;因此,灰尘会出现在一些道具上,但不是全部。

一旦我对着色器感到满意,我就把它变成了一个带有输入和输出的材质函数,并将它插入到我的标准着色器的末尾,我用它来纹理我的道具。这样,它采用了基本的纹理集,并在它们之上添加了另一种效果。

当我处理这样的将与其他纹理混合的着色器时,我喜欢使用突出的平面颜色,而不是直接插入我的灰尘纹理。这样,您可以看到它的效果以及您需要进行的调整。
例如,我将颜色设置为粉红色,您可以看到着色器对场景的影响。请注意,尽管是相同的资产,但每把椅子都有独特的外观。

下图显示了打开和关闭的道具灰尘。


灯光
如果我要总结这些年来对我的场景的所有积极评价,总是会提到灯光和氛围。然而,这可能会让人们感到惊讶,这是我在制作环境时最挣扎的第一件事。尽管对结果相当满意,但我在照亮这个环境时犯了一些错误。
我知道我想要实现什么,但我总是觉得我正在与相互影响的大量价值观作斗争。很清楚为什么如今照明是一个单独的部门。
我将照明视为整个制作过程中的一个持续过程,例如,我可能会在遮蔽处进行照明传递,制作一些道具,稍微调整照明,创建一些材质和一些道具,调整照明等等。这个方法对我很有帮助,但这可能是我在这一刻的垮台。我是如此专注于内部并让它看起来正确,以至于外部成为事后的想法。
在制作的早期,我的室内照明看起来相当不错,但是当我走出大楼时,照明被超级冲淡了,而且曝光调整还不够。

心灰意冷,我最终放弃了我的整个照明设置并改变了我的方法。这一次我专注于让外部正确,然后使用曝光将更多光线带入内部。但是,再一次,这是我应该从一开始就做的事情。
该场景在照明的技术方面使用烘焙照明。我没有像通常那样从 HDRI 开始,而是决定使用 Unreal 的 Sky Atmosphere 系统,这在当时还是很新的。我首先将 SkyAtmosphere 和 Volumentic Clouds 添加到场景中,然后调整设置以获得美观的天空外观,就像我在互联网上寻找合适的 HDRI 图像一样。我在这里的主要目标是让它看起来像太阳在云层后面。
注意:下图中的天空看起来很暗,很黑;这是因为我在添加雾之后对其进行了调整,并且添加了很多对比度;否则,雾会使天空看起来非常平坦。

如上所述,我添加了一个指数高度雾,用作天空的延伸。它有助于将天空与环境的其余部分融合在一起,并有助于为场景添加一些非常需要的深度。


该场景在实际照明设置方面很简单,由蓝色天空/雾创建的氛围。我只需要一个低强度的固定方向灯,这样它就可以给环境增添一点流行感。

我还在所有窗户上添加了 Lightmass Portal,以便 Unreal 强力强制光线通过这些小孔,从而使更多的光线进入内部。
最后,我决定添加一些点燃的垃圾箱,为场景增添一些温暖。场景很蓝,需要补色。我喜欢下面这张照片,因为暖光从图像的一侧到另一侧产生了很好的渐变,因为它过渡到了冷蓝色的氛围。

最终打磨
如果没有其他部门(如 VFX、音频和技术支持)的参与,制作环境中的环境艺术将是非常静态的。因此,作为我的环境最终润色的一部分,我喜欢浏览市场包,尤其是 Epic Games 为任何 VFX 或 Ambience 演员制作的那些,这将增加最后一点质量。
我最终使用的主要东西是一堆 VFX 资产,例如 Epic Games Subway Scene 中的滴水和水坑,我在 Epic Games Infiltrator Demo 中找到了一个极好的蓝图,它增加了低悬雾并有助于增加一些额外的深度 现场。

最后,我开始喜欢在我最后几个环境中的场景中放置角色。我认为如果做得好,这有助于销售一个故事,一个仅靠环境无法讲述的故事。它允许你设置一些专注于角色的电影摄影机,你开始想象它在基于故事的游戏中会是什么样子,等等。
我在这个场景中使用的角色来自 Unreal Marketplace 上免费的 Twinmotion 包。

结尾
总的来说,我对环境的结果感到满意,但在精神上,这是一个具有挑战性的项目,因为我一直在寻找我还没有完成的工作;感觉就像有一座山要爬,但我每天都在努力,我很高兴我做到了。
我希望您喜欢阅读这篇文章,并希望它能激发您开始自己的环境。

