在 SpeedTree、Substance 和 UE4 中制作丛林环境
介绍
我最新的环境“光之守护者”是我参与过的最雄心勃勃的项目之一。它涉及创建具有多个不同位置的大型可玩环境。整个环境本质上由两个主要部分组成:森林和隐藏的寺庙。在本文中,我将提供该项目的完整细分,其中将解释环境创建的各个方面,从遮蔽、建模、材料、照明和我的树叶创建方法。会有一些关于我在项目中遇到的技术问题以及决策背后的思考过程的反思。
关于艺术家
我的名字是 Son Nguyen,我是来自英国伦敦的环境艺术家毕业。关于我的一些历史,我从越南河内 FPT 大学获得了平面设计学士学位。刚毕业,我就在当地一家动画工作室开始了我的背景艺术家生涯,然后在那里工作了两年。那时我觉得自己的能力超出了我的表现,尽管我不断努力,但我的职业生涯仍然停滞不前。“是时候采取行动了,”我心里想。借此机会出国留学,不仅是为了走出停滞不前的局面,重新确定自己的职业方向,更是体验和融入异国文化的一次新鲜空气。这绝对是一个改变生活的决定。我参加了游戏艺术硕士课程 & 在伦敦大学金史密斯学院设计,并以一等学位毕业。在所有模块中,专注于 3D 艺术的模块吸引我为游戏创建环境,然后我就看到了我的胡同。从那时起,我一直在磨练自己的技能,以适应环境艺术角色,并开始大步前进。我目前期待在游戏工作室担任初级角色,以帮助创造一些有趣的游戏体验。
我总是对游戏开发者愿意互相帮助并将他们的理解和知识贡献给社区感到惊讶。我喜欢阅读文章,他们分享他们在每个决策背后的思考过程,以解决技术问题或实现某种艺术效果。本文的结构类似,包括四个主要部分:研究、故事、设计和技术故障。
希望你能从这篇文章中找到有用的东西,并将这些方法应用到你的作品中。事不宜迟,让我们开始吧!
研究与前期制作
一旦开始一个新项目,我总是设定目标。一个项目可能永远不会被视为完成,因为我们总是有机会在另一个时间回去并增加 5% 或 10% 的额外工作。通过设定目标,如果我勾选了清单中的所有方框,我就能确切地知道我何时完成了我的项目。
《光之守护者》的初衷是创造一个具有美感的游戏就绪环境;最重要的是了解如何将修剪表用于资产创建工作流程,并使用行业标准软件(如 Maya、ZBrush、Substance Suite、SpeedTree 和 Photoshop)流畅地创建树叶。另一个需要勾选的框是在创建过程中尽可能减少使用外部资源。最终,除了我从 Quixel 的 Megascans 获得的一些摇滚资产之外,其他一切都是我自己创造的。
我花了几天时间研究热带雨林的生态,主要基于国家地理和 Mongabay 的信息网站。令我惊讶的是,这个过程远没有我预期的那么艰巨。相反,我遇到了无数有用的信息,满足了我的好奇心。热带雨林是令人难以置信的多样化、复杂和可怕的。大多数雨林分为四层:紧急层、树冠层、林下层和森林地层。这些层中的每一层都相互依存,并根据不同水平的水、阳光和空气循环具有其独特的特征。纵然潜入一些生态仅仅几天就像是触及冰山一角,它确实让我知道雨林的组成应该是什么样子,或者树叶的外观可以看到哪些突出的特征。例如,林下的植物通常有深色的底面、颜色更深的叶子,由于这一层光线不足,叶子比仅几米以上的冠层植物更大。或者一个真正的灌木故事的存在是非常不寻常的,因为它是阴凉的,只有零星的藤蔓和灌木存在。该信息有助于根据雨林的特征更准确地创建和分散树叶资产。然而,应该考虑的一个重要方面是,将环境艺术推向现实主义确实限制了艺术家的创作自由。在任何情况下,在现实和艺术方面之间总会有一些不可避免的权衡。就我而言,我只想强调森林的印象,而不是真正的森林。归根结底,我们通常寻求的是完全沉浸在一个充满美学想象力的世界中,而不是被静物照片包围。
故事分解
探索和思考悬而未决的事情一直让我着迷。我想这也可能是人的天性,就是沉迷于未发现的事物,而不是对一个物体或一个现象有一个清晰、全面的答案。听起来很荒谬,但每隔几年就会在刚果的热带雨林中进行严肃的科学考察,以寻找活的、会呼吸的恐龙的存在。
我的项目“The Guardians of the Light”的目的是基于类似的想法,这给好奇的人留下了自己解决的问题。为什么普通的森林里会有一棵形状怪异的神秘树?之前有人发现过这座寺庙吗?狐狸神社的目的是什么?我的最终目标是激发玩家对寺庙内神殿隐藏和保护的东西的好奇心。您绝对不想错过探索的奖励。
我从Kieran Goodson 的文章中学到的一个非常有用的方法是寻找一段可以捕捉我想要表达的感觉的音乐,即使我可能不打算制作视频。通过这种方式,我可以将摄影与音乐一起可视化,因此我可以快速绘制出富有想象力的关键帧并验证艺术作品的方向。当我听到古斯塔沃·桑托拉拉 (Gustavo Santaolalla) 的 The Last of Us 主题曲时,我知道我找到了合适的歌曲,它描述了一种沉重的神秘感,伴随着并置的乐观感的危险。这与项目的主题完美契合。
另外,我应用了Tim Simpson 的方法来收集参考资料。我将参考照片分为三大类,包括关键、闪电和 AAA 基准。参考 AAA 基准无疑是必要的,因为它可以让您直观地将您的艺术品质量与行业标准进行比较,以便您了解应该推动自己达到的质量。我还创建了另一个板,其中包括不同的动画电影背景和游戏概念艺术。事实上,我参考了 Ghibli 电影中的许多关键帧和顽皮狗工作室的 Uncharted 4: A Thief End 的概念艺术。这是鼓舞人心的,因为您可以研究它们的构图、照明或配色方案,甚至可以从不同的作品中借用一些元素来制作自己的艺术品。
为了对树叶创作进行更具体的处理,我收集了大量各种植物的参考照片。然后,这些植物根据它们的种类和层数在 PureRef 中被分类到不同的板中,所以如果我在森林的每一层上发现至少一两株植物,我就知道何时找到了足够数量的参考。然而,这座寺庙并不是围绕建筑和历史的准确性而开发的。更重要的是,我也想给它一个独特的外观,所以我收集了不同类型的建筑,比如柬埔寨遗址,或者印度岩石寺庙。此外,我的守护者——狐狸雕像——参考了日本寺庙中的稻荷神社。这些稻荷神社通常用于驱除恶灵,在传达故事中起着至关重要的作用。我喜欢宁静。
![](https://cgbox.oss-cn-guangzhou.aliyuncs.com/cg-box-1/2021/08/60e5559845120.jpg)
遮挡和场景设置
我使用虚幻引擎的景观雕刻工具和在 Maya 中建模的非常简单的占位符来遮挡场景。通过这种方式,我可以快速迭代以获得场景的动态构图并估计需要创建多少资产。我花了好几轮来组成这些占位符并移动东西,直到我觉得我的作品牢固且可读。由此,我可以用我的构建套件替换占位符,并在需要时对其进行改进。
设置主材质是我在初始阶段所做的下一件事情。这个初始设置允许我调整不同的材质属性,还能够在使用分离的纹理(如果我想使用 Megascans 资产)和打包纹理之间切换。
我从Kem Yaralioglu学到的一个非常有用的方法是将节点的功能组组装到不同的材料函数中,以获得可组织、整洁且易于理解的图形。除了避免将图形变成一盘杂项外,这使我能够在后续阶段继续时在这些基本函数之上分别添加且相当直观的顺序函数。例如,通过这种方式添加了一个非常方便的苔藓覆盖系统,它可以在一些物体(如岩石、墙壁和雕像)的顶部生成苔藓。它被压缩成一个材质函数,然后在我完成顶点混合功能设置后立即添加到主材质中。通过初始设置和封锁,我确定了环境艺术的方向,并推进了资产创建阶段。
树叶和植被
我的树叶工作流程源于Peyton Varney 的演练他的树叶创作。最初,我从 Maya 创建了基础叶子网格,然后将它们带入 ZBrush 进行雕刻。在 ZBrush 中,我一般使用 2048 x 2048 的文档大小。然后,我将基础网格划分为两个或三个细分,然后从大形状到中等形状,最后添加小细节。一旦我对叶子感到满意,我就会复制它,然后将其稍微修改为三到四个变体。我最喜欢用来雕刻树叶的画笔是 Clay、Move 和 Dam Standard。您可能不想花太多时间雕刻完美的叶子;它不会有太大的不同,除非你有一个真正的树叶特写镜头。我的另一个经验是,您不必担心改变叶子的大小,因为稍后您可以使用 SpeedTree 来做到这一点。
然后,我不会在 ZBrush(或在 Photoshop)中使用顶点绘画来创建反照率贴图,而是在我最喜欢的软件 Substance Designer 中完成。对我来说,程序方法总是比手动绘制纹理更可取。然而,在我最终在 Substance Designer 中确定主图之前,仍然需要进行多次迭代以及尝试添加/删除不同的功能。该图只需要一张高度图(可以使用 Grabdoc 功能直接在 ZBrush 中烘焙),并且可以为叶状颜色变化、叶脉着色、虫害、枯萎甚至叶子上的水滴生成许多不同的东西。这也是我考虑基于这个完全参数化的图设置自定义节点时的重点,因此,在对大量树叶资产进行纹理处理时,速度会快得多。但由于我还没有完成,我仍然必须以勤奋的方式完成它,即复制图形并为我的每个植物手动调整其中的属性。然后将每个资产的输出打包到 RGBA 纹理(用于反照率和不透明度贴图)和 RGB 纹理(用于环境光遮蔽和粗糙度)中,然后将其导出到虚幻引擎中。
SpeedTree 集成
这也导致了我对 SpeedTree 的介绍。您也可以在 Maya 中为植物创建几何体,但就个人而言,我发现 SpeedTree 更方便。SpeedTree 为树叶和植被建模的程序方法减少了每次迭代的大量时间。SpeedTree 的 YouTube 频道上的演示系列通过这个强大的工具奠定了我的基础,我强烈建议您查看一下。本质上,无论是简单还是复杂的结构,每一种植被都可以在 SpeedTree 中完整地创建。
我创建地面植物资产的工作流程相当简单。我将使用 Substance Designer 中的纹理并在 SpeedTree 中为其创建网格。我通常会从一个区域开始对植物进行分区,然后是一个分支生成器来创建枝条。根据特别不同的植物,最后一件事是叶子发电机或叶子发电机。
制作树结构:
.通过创建主干和几轮分支生成器来建立基础树结构。
.将分支生成器的模式设置为分叉。您应该注意噪声属性,因为此模式会在曲线或弯曲处生成分支。此外,调整 Gen 选项卡内的分叉属性(阈值、间距、平衡、对齐),直到您对分支的位置感到满意为止。
.修改树枝的长度。子分支的长度应该部分但不完全依赖于其父分支。您必须在 Spine 选项卡中的“Absolute”和“% of parent”参数之间找到一个正确的平衡点才能实现这一点。
.此外,在同一个 Spine 选项卡中,使用 Orientation 部分中的属性。在某些情况下,您可能必须绘制起始角度参数内的曲线以类似于特定类型的树枝。在我的橡树中,我使用了钟形曲线,这意味着子树枝在开头和结尾处呈扇入状,但在中间呈扇状状。
.最后,添加叶生成器来模拟树的叶子。您可以使用 SpeedTree 中的默认纹理,从 Megascans 下载地图集,或者如果您想创建自己的纹理,您可以在接下来的步骤中跟随我。
制作簇纹理:
.该簇纹理可以在另一个 SpeedTree 文档中创建。同样,您可以使用多个分叉分支生成器来设置基础结构。
.用叶子生成器插入最后一个分支生成器。您可以通过在大小、变形和方向上引入一些随机性来改变叶子。
.在主分支中添加一些结并在置换选项卡中调整一些噪音。这可以为集群纹理带来大量真实感。
.将相机视角切换到 XZ 平面,并在正方形大小的纹理中构建分支簇。您可能需要手动省略一些碎叶或旋转其中的一些以使簇的轮廓更具可读性。捕获集群(文件 > 导出材质)并导出所需的输出贴图。
.(可选)您还可以通过简单地删除叶生成器来创建此的无叶版本。拥有这种无叶版本确实有助于打破原本只是绿色簇的树冠。
精炼和装饰:
无论是使用其他地方的纹理还是自己创建它,我想现在你有一个看起来不错的树,这意味着你可以进入精炼阶段。在这个阶段,我想做几件事。例如,在树干表面模拟一些起伏的形状就是一个好的开始。您可以通过处理“置换”选项卡内的属性来实现此目的。另外,我发现它有点挑剔,但是,我通常切换到手动模式并稍微调整一些奇怪分支的长度或角度。添加根和一些结是我在优化多边形计数之前做的最后一件事。
这只是锦上添花,但是,您还可以生成一些生长或附着在主枝上的附生植物。有不同的方法,包括使用其他建模软件来实现这一点,但我在 SpeedTree 中找到了一个快速、可迭代的解决方案来处理这个问题。解决这个问题的关键在于划出树枝上的向上表面,在那里附生植物可以自然生长。然后,您可以在这些区域生成苔藓或附生植物,就像处理地面树叶一样。您可以按照以下设置找到这些区域:
.添加另一个与主分支生成器相连的分支生成器。您可以将这些生成的分支视为定位器。将其 Gen 模式切换为 Interval。
.在 Skin 选项卡中,将 Type 切换为 Spine 只是为了隐藏它,我们不需要它可见。勾选焊接开始选项,同时增加修剪部分中的向下属性,直到省略那些指向下方的脊椎。
.创建一个区域生成器并将其与之前的生成器链接。在生成选项卡中,减少位置属性,直到这些区域仅位于脊椎的最低位置。这意味着现在这些区域只覆盖了主要分支的向上表面,也就是说,任务完成了。你可以在这些区域内种植任何东西,它自然会留在主要树枝上。
以上是我在 Speedtree 中创建植物资源的方法。然后可以将植物直接导出到虚幻引擎。设置树叶的材料也是在引擎中实现可信外观的一个重要方面。我强烈建议您查看Ben Cloward 的创建树叶材质的系列教程。次表面颜色在着色器中非常重要,因为它允许光线像在现实世界中一样穿过树叶。您也可以对分离的次表面纹理进行采样,但在我的情况下,次表面颜色仅源于着色器中的反照率。这也有助于减少引擎内的绘制调用,因为次表面需要 RGB 贴图,并且您不想在着色器中采样太多纹理。
建筑资产
我在 Maya 和 ZBrush 中创建了我的模块化建筑资产。此外,这些建筑资产嵌入了装饰物,以提供更多细节,而无需对其进行实际建模。这可以通过使用单独的第二个 UV 通道进行修剪来实现。这种方法对我来说是实验性的,因为我花了一段时间在 Substance Designer、Maya 和 Unreal Engine 之间反复工作才能达到我感觉习惯的程度。对于修剪纹理,我在 Maya 中为装饰品的基础网格建模,并在 ZBrush 中为它做一些雕刻。然后,我使用 Grabdoc 功能为每个装饰品捕获单独的高度图。这些贴图用作 Tile Sampler 节点的图案输入,然后在 Substance Designer 中以正方形大小的纹理布局。你甚至可以用更多的细节来修饰它,比如裂缝、表面起伏。法线贴图是我在虚幻引擎中的着色器中唯一需要使用的输出。
我遵循在 Maya 和 ZBrush 中创建资产的传统工作流程。以这个石柱为例,我是这样制作的:
.在切换到 ZBrush 进行一些雕刻之前,柱子在 Maya 中以基本形状建模。
.在 ZBrush 中,我雕刻了网格的边缘,使用几个自定义画笔来添加裂缝或雕刻起伏的表面。可能有帮助的一件事是,您可以使用置换笔刷从岩石纹理中投射一些噪点,以引入一些强烈的细节。雕刻微观细节是不必要的,因为它可以稍后在 Substance Painter 中创建。然后我使用 hPolish 画笔来细化细节并清理一些嘈杂的地方。
.为低多边形网格复制一次网格。然后将网格减少到大约 2000 到 3000 个多边形计数。
.在 Maya 的默认通道中展开低多边形网格的 UV。为第二个通道中的修剪创建另一组 UV。您只需要解开您希望装饰品出现的网格部分。导出网格。
.将网格导入 Substance Painter 以进行烘焙和纹理化。然后导出纹理。
网格和纹理现在可以导入到虚幻引擎中了。我们需要创建一个自定义着色器来渲染网格上可见的装饰物修剪。下面是我的着色器中法线的设置,我将简单解释一下。首先,我需要采样两个法线纹理,一个用于网格,一个用于修剪(设置为使用第二个 UV 通道)。在使用 BlendCorrectedNormalAngle 节点混合之前,将它们插入到具有两个单独参数的两个 FlattenNormal 节点上,以独立控制它们的强度。它是可选的,但我什至使用 alpha 蒙版进行修剪以更巧妙地混合它们。
材料
我喜欢创建游戏环境的迭代过程。就像,您始终可以在开发的任何阶段尝试不同的材质和着色器。实际上,我的地面纹理是在项目开始时很快创建的。它一直使用到项目结束时我还剩下一些时间并决定通过制作质量更好的来替换它。
我不需要太多时间来创建新的森林地面材料,因为我在初始阶段已经创建了一个。创建这种材质的过程主要包括:创建地面泥土,然后用树叶、岩石、针、树枝等覆盖它。我还利用了在我之前的树叶创建阶段拥有许多不同树叶纹理的优势。然后将它们的高度图拖放到 Substance Designer 中,并使用 Shape Splatter 节点散布在整个地面上。
我认为可能有帮助的一个提示是,您应该只为地面上的特定区域遮掩密集的散落叶子,而其余部分则稀疏,这样就不会被细节所淹没。在自然界中,由于风、雨和表面起伏的影响,树上的枯叶分布不均,通常成大团。接下来我在材质中添加的东西,是地面上的一些树枝,以同样的方式散落。这些分支最初来自 Megascans,并在 ZBrush 中为它们的高度图烘焙。最后,我用针和石头盖住地面。您还可以在Javier Perez 的创建逼真土路教程中学习如何制作这些。
当一切都布置好后,就该细化细节了。在这一步中,我调整了一些涉及每个组件(树叶、岩石、树枝……)的尺度、分布和密度的属性,以刺激这种材料的自然外观。最后,我使用了我最喜欢的节点之一 Water 节点,在地上创建了几个水坑。对于这张图的最终版本,我只花了一点时间就制作了另外两个版本:一个叶子更拥挤,一个湿度更高。所以我可以在引擎中更好地改变地面纹理。
另一方面,树皮材料是我第一次接触 Substance Alchemist。这个强大的工具使我能够完全从网络上的单个图像创建快速、逼真的材料。主要挑战是避免计算机生成的外观并保持自然、易于阅读的材料。我还将 Alchemist 的输出纹理贴图带入 Designer 以改进一些元素,主要是关于修改一些高度数据并减少来自反照率的闪电信息。只花了很少的时间,突然之间,我对这些材料后来的结果感到非常满意。
闪电和后期处理
在为场景设置照明时,艺术家会考虑三个重要因素:现实、艺术和技术限制。对于前两个因素,从后一个因素,我强烈建议您查看 James Gurney 的“颜色与光”一书。他的书对光在现实生活中的不同场景中的表现提供了清晰而全面的理解。另一方面,在技术方面,更不用说51Daedelus的虚幻4闪电学院系列了。
场景完全使用动态照明。它确实会降低一些性能,但在相反的方向上,为了使用静态照明而在整个地图上烘焙照明的想法刚刚消失。在现实生活中,照明涉及三个不同的系统:太阳、来自天空的漫射光和来自被照明物体的反射光。这分别对应于虚幻引擎 4 中的定向光、天光和反射捕捉。 所以我用定向光、天光设置我的场景,并将它们都设置为“可移动”,这意味着它们只投射动态闪电. 另一方面,反射捕获对整体外观没有真正影响,因为场景中没有多少反射对象。
定向光的设置非常简单,因为除了调整强度和温度之外,我几乎将所有设置都保留为默认设置。我还打开了 Light Shafts,以通过树木的光圈获得一些不错的神光。随着光源越来越远,阴影会变得柔和和模糊,这意味着太阳本身只会投射出柔和的阴影。我知道刺激这种类型的软阴影的技巧之一是降低级联阴影贴图的分辨率。问题是,如果分辨率太模糊,它不会渲染小地面植物的阴影,所以它确实需要一些调整,以达到恰到好处的级联阴影分辨率。
在 Sky Light 中,我将 Source Type 切换为 SLS Captured Scene。此外,我用 HDRI 贴图替换了默认天空。通过这种方式,它可以提供与天空颜色匹配的更准确的阴影,而不是根据指定的立方体贴图发出闪电。我从HDRIHaven.com 上拿了很多 HDRI 贴图,并尝试了哪一张最适合场景。
我还放置了几个聚光灯以及一些假闪电的场景。这可以帮助照亮一些黑暗的地方或提高构图的可读性。
我使用了网格距离场环境光遮蔽 (DFAO)。DFAO 在提高场景的真实感方面具有巨大的影响,因为它在对象周围的边缘提供平滑、柔和的阴影。它确实为场景提供了良好的深度感,但问题是,我觉得整个树叶的柔和阴影不足以描绘我们如何在茂密的森林中观察植物或灌木。自然界中很明显,叶子或树冠之间的缝隙中总会有一些非常暗的阴影。我发现一种有效的解决方案是在 PostProcessVolume 中利用 Screen Space Ambient Occlusion (SSAO) 来实现更集中的阴影,并结合 DFAO 引起的软阴影。您可能需要将天光中的遮挡组合模式切换为正片叠底以获得此结果。此外,在缓冲区可视化中,切换到 Ambient Occlusion 以可视化 SSAO 并调整其属性,直到 AO 变得密集但在远处逐渐消失。您可以比较下图中的结果。
在我的后处理阶段,我只想做几件事。在 PostProcessing Volume 中,我打开了 Bloom、Chromatic Aberration、少量的晕影,并应用了锐化材料。最后但并非最不重要的是颜色分级。它确实在场景的最终外观中发挥了重要作用。在决定颜色分级过程的工具时,这完全取决于个人喜好,但我个人觉得在 Davinci Resolve 引擎之外对我的场景进行分级可以更好地控制。除了全面的颜色编辑功能外,该工具还提供对颜色数据的深入分析。这非常方便,因为我通常更相信数据而不是我的眼睛,可能是因为怀疑屏幕的准确性。有时将您的颜色数据与 AAA 基准的颜色数据进行比较,
我在 Davinci Resolve 中的颜色分级设置以 65-Point CUBE 文件导出。然后我将它带入 Photoshop 并将分级应用到默认的查找表 (LUT) 纹理。然后可以将分级的 LUT 直接拖到 Unreal 后期处理中。
建议、技巧和挑战
我在初学者的环境艺术中经常看到的一个常见错误是他们容易将多余的细节放在场景中。我也犯了那个错误。似乎我们对细节很着迷,因为它通常是我们在杰作中关注的焦点。事实是,这些作品的构图、造型语言、意境、讲故事的基础都已经打得很好,我们不会被任何东西混淆,然后我们的大脑就无法详细阅读。我对此的建议是始终截取屏幕截图并在 Photoshop 中检查其值和形状,或者在每次重大更改后将它们与以前的值和形状进行比较。进入是一个好习惯。您可以在 Photoshop 中简化屏幕截图以更好地可视化值和形状的一件事是应用剪切过滤器(过滤器>过滤器库>剪切;级别:3-5,边缘简单性:6-8;边缘保真度:1)。通过这种方式,更容易检测噪声区域或主要形状是否足够清晰。然后您可以在虚幻引擎中应用必要的更改。
该项目的主要挑战是在整个大型地图中保持每个镜头的质量一致。它涉及调整闪电设置,尤其是找到适用于不同镜头的直角。我也放弃了试图为每一个镜头都用黄金比例、眼睛引导线制作完美构图的想法,而是一个坚固、可读的构图。仍然花费了我大量的时间,但最终,它在每个镜头中都表现得很好。
犯了很多错误,但也吸取了很多教训。如果没有 Dinusty 和 Experience Point 社区的建设性反馈,该项目永远不会以积极的方式结束。
![](https://cgbox.oss-cn-guangzhou.aliyuncs.com/cg-box-1/2021/08/60e554e6eef78.jpg)