创建丛林环境

介绍

大家好,我是 Livio,我是一名环境/灯光艺术家,目前在 Forza Horizo​​n 5 的 Playground Games 工作。我在法国的 ETPA 学习游戏设计并于 2017 年毕业。经过一些自由职业后,我被录用了作为 Ubisoft Sofia 的环境艺术家,我有机会为《全境封锁 2》和《刺客信条:英灵殿》等游戏做出贡献。我来这里是想谈谈我是如何处理我最新的个人项目Before the Storm 的。

1 个,共4 个

入门

当我开始 Before the Storm 时,我的目标和想法与项目的最终结果完全不同。起初,我想做一个小项目来训练植被建模和构图,只关注一个主要镜头或类似的东西。我的灵感来自 Espen Olsen Saetervik 的一个概念。这是我早期封锁的样子:

但很快,我意识到我在制作植被资产方面获得了很多乐趣,我认为做一个我在脑后有一段时间的想法并向我最喜欢的游戏之一致敬会很酷:制作一个受 Uncharted 4 启发的丛林场景。我从一开始就知道我必须完全重新考虑项目的范围,因为 Uncharted 游戏在规模变化和大视野方面发挥了很大作用,所以我开始考虑新的封锁和地点。

看真人版《花木兰》的时候,我爱上了那些圆形的村庄和周围的稻田,觉得很适合我的场景。于是我开始考虑从一个高点开始,在丛林深处,在村庄周围的山丘上,然后到达观景点,然后开始一路下到村庄。

2 中的1

我也开始考虑制作一个从玩家角度展示整个关卡的完整视频,因为我认为这将是理解规模的好方法,我希望观众能够想象它可以成为实际游戏的一部分。一旦这个想法在我的脑海中正确形成,我就开始收集参考资料。

规划

所以基本上,我知道这将是巨大的,并且需要大量的资产和关卡艺术中的不同类型的处理。我真的不希望它只是一个从顶部到底部的茂密丛林,所以我开始绘制俯视图,试图找出一个很好的方法来沿着关卡有一个很好的节奏,从密集到几乎幽闭恐怖的丛林到开阔的区域等等……我在工作时会画很多像这样糟糕的图画,即使是在专业项目中,它们看起来也很糟糕,而且大多数时候我是唯一一个可以理解它们,但它们确实帮助我弄清楚如何处理事情:

这是我开始考虑河流的时候,以及我如何使用它作为一种很好的方式来寻找路径。基本上,当您观看视频时,您会意识到只要环境类型发生变化,您就可以过河。这是显示它的顶部照片(红色路径,蓝色河流):

因此,从这一点开始,我能够开始规划我需要的资产,即使在项目期间数量一直在增长。

植被

所以让我们先谈谈植被。我已经为我之前的一个项目“日本村”做了一些,但与我在这里需要的相比,这算不了什么。此外,我真的希望场景更逼真,所以我必须提高我的技能。在对它们的外观感到满意之前,我花了很多时间在树、草等上进行迭代。

我们先去种草。我想要逼真的草,带刀片,从顶视图看也能工作,而不会太明显,它只是简单的平面。第一步是获得合适的刀片。我开始研究 Megascans 库。一旦我找到了我需要的所有东西,我就开始在 3ds Max 中收集地图集。从那里,我将能够创建自己的集群。这个过程相当简单,我只是将带有基色和 alpha 的材质从 Megascans 应用到平面上,然后切割我想要保留的区域。在这里,我选择了我认为最好的刀片,然后将它们全部淘汰。然后我可以开始创建集群。我创建了四个并将它们放在一个方形平面前,看看它们烤好后的样子。虚幻引擎 5 中的 Quixel Bridge您通往 Megascans 和 MetaHumans 的门户现在就下载

1的3

我现在可以将网格导入 SpeedTree。在这里,您可以轻松地将其设置为平面视图,非常适合烘焙纹理。SpeedTree 的 YouTube 频道上有一个很好的卡片创建教程。我从 Megascans 导入材料并将其应用到刀片上,瞧,您现在拥有了一个干净的图集。据我所知,SpeedTree 是唯一可以从现有法线贴图烘焙信息的软件,非常适合烘焙来自扫描的树叶。

2 中的1

所有的植物和地面碎片都是使用完全相同的过程完成的,这次混合了来自 Megascans 的多个图集。以下是来自 3ds Max 的照片,其中收集了各种地图集,准备导出到 SpeedTree 进行烘焙:

1 个,共4 个

现在,我留在 SpeedTree 中,只是为草和植物创建簇,正确设置风,一旦我对结果感到满意,我就可以最终将它们发送到 Unreal

2 中的1

其他类型的植物也是如此,这里有一些例子:虚幻引擎 5 中的 Quixel Bridge您通往 Megascans 和 MetaHumans 的门户现在就下载

1的3

为草地选择合适的材料是一个挑战,我很难获得合适的“绿色”以及合适的 SSS 颜色和值。我从 Epic 找到了几个不同的演讲,并尝试应用我学到的知识。使用“FuzzyShadingGrass”节点有助于定义更多草并为颜色添加更多细节,该节点可让您使边缘变暗或变亮,以及更改刀片的核心暗度。

这是最终的草材料的样子:

为了让草看起来更清晰,我还禁用了 Opacity 纹理上的 Mipmapping(我实际上对所有植被图集都这样做了),它花费了更多但结果更好。这是如何做到这一点和一个比较镜头:

2 中的1

对于树木,该过程是草地和经典 SpeedTree 过程之间的混合。我从收集参考资料开始。

然后,我创建了一个合适的树皮纹理。这里没什么特别的,我将不同的照片与我在 Megascans 库中找到的扫描树皮混合在一起,以获得我喜欢的结果。然后我使用 Substance Alchemist 生成 AO 和法线贴图。

完成后,我创建了一个简单的分支卡,然后我将使用它来生成带有叶子的较小分支。为此,我只是在 SpeedTree 中使用了与烘焙草相同的场景设置,并尝试获得良好的树枝形状。我在 1st 留下了很多空间,我想以后会创建其他分支,但我从来没有需要,它一直保持这样。对于专业项目,我会使用 UV 的最大空间做得更好。

一旦对第一个分支感到满意,我就搬到了有叶子的分支。相同的过程,除了我添加了来自 Megascans 的叶子图集。我决定创建 2 个分支和 3 个单叶(图集上的位置不是“最佳”,但我真的想避免进入 3ds Max 来创建卡片,而 SpeedTree 只允许您将枢轴向上放置,所以我坚持下去)。

所以现在我有 3 组树木的纹理,一个树皮,一个树枝和叶子。我可以开始创建树了。

就像我们工作中的任何事情一样,最好从大的形状开始,然后再深入细节。所以第一个想法是拥有一棵看起来令人信服的“死”树。在我看来,在没有 100 万个多边形的情况下拥有漂亮而详细的分支的最佳方法是使用卡片通过我们之前创建的分支终止所有分支。然后,您可以使用锚点从刚刚添加的卡片中生成新的分支。这将有助于为您的树提供更密集的方面。然后,您可以添加新的较小分支(这次是实际网格)并重复相同的过程,直到您得到这棵令人信服的死树。

1的3

一旦你对它感到满意,你就可以开始从这些树枝上产卵了。让它们尽可能地面向天空很重要(总是有一点随机性,所以它看起来不做作)。这样,反射会在你的叶子上做出正确的反应,看起来更逼真,因为在现实生活中,叶子总是尽可能地面向太阳。不要忘记也使用折叠、卷曲和扭曲参数来帮助给树一个逼真的外观。

2 中的1

现在,让我们移到树干上的藤蔓上。这里的想法是将树的树干转换为“力”。它会简单地创建一个树干的副本,它将作为葡萄藤用来对抗的力量。您可以通过选择您的树干(如果有的话,在本例中为根),然后使用“从选择创建集合”按钮来实现。

现在,您可以创建简单的树干并使用放置参数将它们放置在您的树干周围。然后,你告诉他们使用新创建的“力”,并使用参数让他们按照你想要的方式跟随你的后备箱。您需要设置力以在力行动中吸引和在碰撞行动中阻碍。一个有用的技巧也是添加一个指向上方的方向力,这将迫使你的葡萄藤总是向上。

1的3

现在,您可以简单地从藤蔓上生成叶子,仅此而已。

现在,让我们快速谈谈树木的优化和风。使用曲线来减少树干末端和较高树枝上的多边形数量,这是获得具有详细树干的美观树木的好方法,但成本低廉。玩家永远不会看到这些区域,所以完全没问题。(我们稍后会看到 LOD 创建,因为这是在 Unreal 中处理的)。

对于风,一旦您有了适合您的预设,您就需要针对树的每个特定部分对其进行调整。例如,我不希望藤蔓上的叶子像树顶的叶子一样移动。他们不应该像在森林深处那样受风。

一旦一切正常,您就可以将树导出到 Unreal 中。这是 SpeedTree 中的最后一棵树:

我通常不使用 SpeedTree 制作的材料,因为我更喜欢使用自己的材料。唯一的就是一定要加SpeedTree节点,不然风就不行了。

这是进入 Unreal 的最后一棵树:

种类

现在这个过程对我有用,我可以开始生产各种各样的树木和植物。最后,一棵树需要我大约 1 到 2 个小时才能完成并对结果感到满意,因为我可以重用第一棵树中的大部分图。我们的目标是至少有 2 棵高大的树木来使树冠多样化,因为我知道会有一个可以看到森林顶部的远景点。然后我想要一棵非常高大的树在森林的某些地方有大树干。我对中型和小型树重复了相同的方法,每次都有 2 到 4 个变体。这些是最通用的树,可以在任何地方使用。

我还需要具有良好构图形状的树来构图并引导视图,因此我创建了这两棵较短但更有趣的树。

然后是异形树,形状更加独特。我创建了其中的 2 个,但最终主要使用了远景点上的第一个。这个需要有这么长的风树干形状,以提升地方的高度和感觉,同时也引导玩家的视野。这是我主要使用的截图:

现在,我需要给丛林一个适当的密集方面,是在大树周围生长的小树。所以我创造了那些廉价的灌木丛,它们对于遮挡视线和增加密度非常有用。

2 中的1

然后,我需要一些地上的东西。使用与树木完全相同的材料,我创建了地面树叶,然后我就可以将其分散到任何地方。

2 中的1

之后,使用蕨类植物和小型棕榈植物增加了品种。对于几乎所有类型的植被,我都有 3 种变化:大的、中的和小的。这是所有地面植被类型的镜头。

我还创建了小碎片散落在路径上。这些是使用在 SpeedTree 中烘焙的地图集在 3ds Max 中创建的,遵循我们之前看到的相同过程:

我使用程序化的树叶体积将森林散布在各处,排除路径和村庄区域,对这些区域进行手动控制。然后,使用植物工具,我沿着玩家的路径手动放置所有东西。这花了一段时间,但至少我完全控制了构图。

根部在 ZBrush 中雕刻,在 Substance Painter 中纹理化,并使用虚拟纹理与地面混合。

材质、悬崖和地形

对于材料,我通过创建一堆我知道我需要的主材料来开始这个项目。所以我有一个标准的,一个准备用于 RGB 蒙版纹理的,一个树叶的,等等……

但最具挑战性的是悬崖峭壁。我花了很多时间让这些工作正常。首先,我需要石头。我开始雕刻较大的岩石,然后是中等的,最后是小的。我还可以使用我之前星球大战项目中的一些。以下是一些雕刻示例:

1 个,共4 个

然后我做了多次测试以获得正确的纹理。我知道我需要纹理是可平铺的,因为我希望能够对岩石进行大量缩放以适应各种变化。我尝试了 Megascans 材料、照片来源等,但我对结果并不满意。我最终在 Substance Designer 中创建了 3 种材质,一种是基本嘈杂的扁平材质,一种具有大形状,一种具有详细的损坏。这些将作为可平铺和可缩放的材料应用到网格的烘焙 AO 和法线之上。

然后我在 Substance Painter 中为每块岩石创建了一个 RGB 蒙版。考虑到黑色是基岩材料,它是这样的:

  • 红色用于大形状材料
  • 蓝色表示损坏材料
  • 绿色代表污垢/灰尘
  • 边缘损坏的 alpha

这是引擎中的结果:

最重要的是,我添加了一个在 Substance Designer 中创建的简单细节法线贴图,以确保岩石从近处看起来仍然很好。

但我觉得岩石仍然缺少什么。由于天气和颜色变化导致的大滴水/泄漏。所以我在 Substance Designer 中创建了两个蒙版,然后使用世界空间位置应用它们。泄漏掩码然后使用黑色和不同的粗糙度来增加湿度,颜色变化使用去饱和节点。我还添加了使用顶点涂料增加湿度的功能,特别是对于瀑布区域和接触水的岩石。

这是在 Unreal 中的样子:

在那之后,我希望岩石要么有苔藓,要么在平面上应用森林地面纹理,以帮助将所有东西混合在一起。按照本教程,我使用了顶部混合功能来实现这一点。

我还需要岩石与地形融合,所以我使用虚拟纹理对地形材料进行采样,并在进入地面时将它们应用到岩石上。

毕竟,我对岩石的样子很满意,所以我开始建造悬崖。这是最终结果:

这是最终材料的样子:

地形材质相当简单,它使用了我从 Megascans 中抓取并在需要时在 Quixel Mixer 中修改的 6 种材质。所有材质的参数与标准主材质的参数相同,因此我可以控制颜色、法线等。我使用每种材质的高度贴图作为混合蒙版,以确保它们能够正确混合,并且还可以在四处跑动时激活曲面细分以获取更多详细信息。以下是 6 种材料的外观:虚幻引擎 5 中的 Quixel Bridge您通往 Megascans 和 MetaHumans 的门户现在就下载

对于稻田,事情变得有点棘手。我想使用样条线蓝图,但您不能在蓝图 act​​or 上绘制树叶。所以我首先使用样条线创建它们,然后我将这些样条线导出到 3ds Max 以从它们创建独特的网格,所以我能够在它们上绘制草。我还能够创建水面以跟随田地的形状。

2 中的1

优化

现在让我们谈谈优化。我真的需要场景以至少 30 FPS 的速度运行视频。最后,我设法在普通的高清屏幕上做到了这一点,但不是 4K(视频是在 4k 中捕获的,这就是为什么这里和那里有一些滞后……)。首先,对于所有资产,我使用了 Simplygon,这是 Unreal 中已经设置的插件,用于为您的网格生成 LOD。它非常强大,真的可以让你控制你想要的 LOD 数量,以及你想让它们改变的距离。

显然,最重的部分是植被,经典的 LOD 系统不足以让场景运行。所以我不得不为所有的树创建冒名顶替者。我按照本教程下载了插件。一开始有点棘手,但是在一两棵树之后,每个资产只需 5 分钟,并且节省了大量内存。基本上,距离玩家路径 100m 处的所有树木都是冒名顶替者,并且是 4 个三角形。

对于地面植被,我使用了树叶工具中的剔除系统,使其在远处消失。我本可以在优化方面走得更远一些,但这不是最有趣的部分,我只需要让一个视频的场景流畅运行。

一开始我尝试将场景发送到虚幻引擎 5 中,尽管灯光真的很酷,但 Nanite 脱离了植被的网格,因为我需要它使用顶点偏移随风移动。此外,他们摆脱了曲面细分,所以我坚持使用 UE4。

灯光

对于天空,我使用了大气系统和体积云,因为我想要一个漂亮的风暴前天空。我从 Dinusty下载了这个惊人的体积云着色器,并开始使用这些值。我希望一切都是动态的。该场景仅使用定向光和天光。我观看了 William Faucher 的所有关于 Unreal 光照的视频,我从那里学到了很多东西。

我能够使用光线追踪进行反射,但它在其他一切方面都没有使用,因为它不适用于植被。所以我不得不使用旧的距离场系统。这使我能够在树木中获得良好的 AO,并在远处获得漂亮的阴影。尽管如此,要做到正确并找到正确的平衡点是很棘手的。我还必须设置适当的曝光,以在森林内外工作。

然后,我使用后期处理体积使森林中的所有东西都变得更暗、对比度更高,而外面的亮度更高。

我还启用了接触阴影,因为它们确实有助于使一切更加接地。最后我还创建了 2 个 LUT 表,一个在森林里,一个在外面,只是为了稍微调整颜色并确保一切正常。

2 中的1

拥有良好丛林感觉的主要因素之一是雾。我真的需要来自热带森林的空气中这种非常炎热和潮湿的东西,它会发出很好的神光,每个人都喜欢神光。所以我只是创建了一些简单的局部雾体积,我可以沿着路径散布。令人惊讶的是,它们在性能方面并不重,因为它们产生的粒子量非常低。我遵循了来自 Epics 和本教程的这个很棒的视频,但我删除了颜色控制并使其在粒子方面更便宜。

我还添加了一个光照功能,让假云阴影沿着整个关卡移动。它真的给人一种很好的生活感,有助于销售暴风雨的天空。我跟着这个教程。这是一个没有树叶的镜头,可以真正看到它对场景的影响:

2 中的1

最后,我为远处创建了假云,这里没什么特别的,但它确实有助于增强场景的深度。

2 中的1

结论

这个项目作为一个整体是一个巨大的挑战。场景的规模确实让一切变得更加困难。我必须确保一切都在运行,灯光很难调好,我一直在调整它直到最后一刻,让植被合适花了我很多时间,我不得不解决很多我从未解决过的问题之前遇到过。

首先,主要问题之一是我没有很好地计划它,并且我一直在不断添加新资产。此外,我对自己拥有的东西从不满意,而且我花了很多时间重做很多东西。场景经历了 3 或 4 个不同的封锁,在某个时候,即使我在关卡艺术方面非常先进,我也改变了一切,所以我浪费了相当长的时间来重做一切。

而且,一开始的野心太大了。我没有提到的是我还想创造村庄的内部,有很多新的道具等等……不仅对照明来说是一个挑战,而且创造所有的时间这将增加一倍。我最后决定剪掉它。

最后,从我决定它会是丛林的那一刻起,这个场景花了大约 4 个月的时间。但是当我在做第一个完全不同的封锁时,你可以再增加一个月,所以大约 5 个月。

一直保持动力真的很难,我最终几乎精疲力竭,因为一方面我白天在 Playground 努力完成 Forza Horizo​​ n 5,并在晚上和周末完成这个场景。我想有一天我不会再做一个这么大的个人项目了。

我真的要感谢在整个项目中支持我并给我反馈的所有朋友,他们帮了我很多。我还想特别感谢我的弟弟 Enzo Ambrosini 为场景的声音设计和我的朋友Florent Fontalbar制作音乐,他们的工作为最终场景增添了巨大的力量。还要感谢80级,经历过程真的很酷,希望能帮到一些人!

返回首页 

作者 CG-BOX

发表评论