项目
在这篇文章中,我想描述一下我在一个场景上的工作流程,并重点介绍其制作的一些重要方面。尽管这个场景发布已经有两年了,但我直到现在才有时间完成这篇文章。
然而,除了Nanite、Lumen和RVT,大多数工作流程仍然相同。这个场景是在UE4上制作的。
概念
David VDB 最初设计了树木和植物,这是挑战的第一部分。
主要目标
对于这个挑战,我有相当多的目标,实际上可能太多了。首先,我想在一个作品中展示尽可能多的技能。其次,我想更深入地研究Unreal Engine,因为过去几年我只使用内部引擎。
最后,我主要使用瓦片和装饰模组制作整个级别,所以我认为更新我的道具和纹理技能,并展示硬表面建模和有机体都是很好的。
这就是为什么我决定将原始故事扩展成类似《海底创世纪》的风格,加入坠毁现场、老式飞船的残骸、工艺和研究,以及探索异世界自然。
在氛围方面,我想营造一种美丽但危险、有毒的环境氛围。有种感觉,你会说:“我肯定想探索它,但我不确定我能否生存下来”。
显然,在挑战期间我不可能完成所有的工作,所以我决定仅仅完成自然部分,提交中间结果,然后尽我所能把重点放在最佳品质上继续完成。
在这里,我将讨论最终版本。虽然已经制作了很多东西,但我会尽量简明扼要。我把所有内容分为三个主要部分:景观生成、自然和硬表面人工物体。
建模
为了明确要制作的内容量,我首先用基本形状对一切进行了建模。
经过几次迭代后,我得到了这个:
必须至少有最初的构图方法,确定背景、前景、焦点、引导线等。第一个光照通道也必须在早期完成,尽管后来可能会偏离初始设置。
这里没有展示所有的道具,因为我计划在挑战结束后再制作它们。否则,我总是试图在阻挡阶段了解内容量。理想情况是在我们开始制作它们之前,所有道具、模块和其他内容都有粗略的形状。
在这种情况下,我们能够估计将要花在它们上的时间。
从关卡设计的角度来看,我只是想要一个方便导航的区域,没有玩家可能卡住的地方,并且我也会避免路径中的直线。因此,树木的根系分为三个簇,所有具有碰撞的道具也分成若干组合。
景观
Houdini中的景观生成,Houdini有惊人的地形生成工具。此外,现在对UE免费的Houdini引擎可以将Houdini高度场转换为Unreal景观及所有图层。我将一切分为两个HDA:地形生成和树木放置。
地形基于简单的多边形网格,我的HDA有5个输入:地形、保留区域(几乎不受噪声发生器的影响)、悬崖、河流和湖泊。第一个是必需的,其他的是可选的。
这个地形然后进入树木生成HDA。
最后的图层如下所示:
Unreal引擎中的景观材质
在UE4中,我可以为它们设置不同的材质,甚至散落网格。我在草地和树根上使用了这一点。对于纹理混合,LandscapeLayerBlend节点可能是最好的选择。它甚至支持高度混合。
要在同一材质上的不同图层上散布对象,有一个节点LandscapeGrassOutput。您还需要至少一个景观草类型与草设置。将不同网格与不同参数合并到一个草类型中是很方便的。
我使用了三个:苔藓、发光孢子和三种树根。
这里我决定手动放置所有发光树,以便更好地控制构图。
对于背景中的山脉,我使用了相同的HDA,但来源块几何体不同。
一些平铺纹理完全在Adobe Designer中创建,一些则以ZBrush为基础。
我的图中还使用了一些Megascans纹理。
自然与树木
树木是最艰巨的部分之一。David VDB设计了两种树:”Glorbwood树”和”Elderspire柏树”。
树根
两种树的根系基本相同。唯一的区别是一种更凹,另一种更凸。所以我制作了介于两者之间的东西。主体在ZBrush中雕塑并简化。
从关卡设计的角度来看,每棵树都有3个“入口”,使森林的探索不那么线性。
这里有一个纹理树的伟大技巧。只需弯曲壳体并垂直对齐它们,你就能用平铺纹理绘制所有的树皮。这并不复杂,只是比较漫长。
显然,你需要制作一个额外的UV通道用于光照贴图,没有重叠(下一代Lumen用户,这不适用于你)。
整个项目的texel密度为682 px/m(2048px/3m),几乎所有的纹理都是2k/1k,但对树皮可以略有不同。在有机模型上不太重要。
孢子
我只是雕刻出“分支”,两个,一个大的和一个小的。为了在表面上散布孢子,我可以只是在Maya或3ds Max中放置它们,但我想对每个孢子的形状和位置有完全控制。
这就是为什么我在Houdini中制作它。每个孢子的大小、弯曲程度以及后来我的材质中使用的顶点颜色渐变都由Ramp节点控制。
藤蔓是沿着根系绘制的样条,悬挂的那些只是复制并手动放置的。为了给它们设置顶点颜色渐变,我在3ds Max中使用了一个渐变纹理并分配了顶点颜色。我用蓝色通道表示风向。
树上的苔藓与地形上的苔藓相同。我使用了Unreal植被工具来放置它,然后将其导出为单个网格。最终的树是通过蓝图组装的。
植被
其他植物的管线相当标准:雕塑、低模、烘焙克隆树叶/花朵/孢子和纹理。当然也有一些变体。为了使植被的外观有某种连贯性,我使用了相当标准的植被艺术家技巧。
我创建了一个半球体并从中传递法线信息到我的苔藓上。这可以修复由一堆交叉多边形产生的杂乱外观。在Maya中,有一个传递属性工具,在3ds Max中有一个脚本Noors Normal Thief。
树根的制作方式与树木相同:建模并在平铺地图上映射,其中UV壳体拉直。
材质
我的所有植被材质都基于一个主材质。它相当复杂,所以我只介绍一些有趣的要点。
概览如下:
对每个模块,我都使用了一个静态开关参数。在这种情况下,我可以关闭所有不必要的功能,编译器将优化最终材质。发光色调模块基于蓝色顶点颜色通道和绿色通道的一些色彩变化添加颜色渐变。
距离淡化使我的远处对象的发光通道变暗。我需要这个来给场景添加一些深度并支持我的雾VFX。菲涅尔发光在中心添加了轻微的发光和周围的晕。孢子呼吸为树木孢子添加了“呼吸”效果。
基本上,它只是一个世界位置(Z)的余弦时间。余弦的相位也取决于对象的位置。否则,所有树将同时“呼吸”。这些是主要影响树木的模块。 XY发光是为小型绿色植物和发光棒创建的。
它通过一个简单的噪声纹理添加了一些基于Motion_4wayChaos节点和绝对世界位置(XY)的动态效果。
风模块只控制标准SimpleGrassWind的影响程度。它只是一个简单的移动波浪。要控制风向,我使用了一个简单的公式,包含正弦和余弦:
混合只是添加对象周围环境的一些混合。我使用了一个基本方法,其中DitherTemporalAA连接到PixelDepth Offset中。
我也使用了SSS,但没有什么特别的。只是简单地乘上一个参数。
着陆冲击
为了显示着陆时对行星土壤的影响,我决定从头开始创建一个贴花。我在Photoshop中散落了一些点,应用定向模糊,并将此图像用作我在ZBrush中雕塑的基础。最后,我将其烘焙并在Designer中略微调整。
Alpha通道也是在Photoshop中绘制的。
人造物
着陆舱和道具
我的着陆舱设计汇集了不同的真实航天器,特别是SpaceX的。我是一个航天迷,在Kerbal Space Program中花费的数小时不会让我做一些简单的“太空状”东西。我想让它尽可能高功能。
一个隔热盾,在大气层再入时抵御空气等离子体。姿态控制系统用于在太空中定向飞行器。着陆发动机用于下降过程中的最终减速。 6个燃料箱:每对3个着陆发动机各有1个装燃料和1个装氧化剂的。
所有这些对游戏来说都是不必要的,但我喜欢它。道具的主要视觉设计理念是一切都基于三角形。在高模没有什么特别的,只是四边形建模和织物的仿真。对于面板之间的接缝,我使用了悬浮几何体。在这种干净的形状上,它的操作要方便得多。
有时我会在ZBrush中添加细节。
对于道具和飞船,我使用了一个现在相当流行的管道:高模/低模、烘焙、独特的纹理,然后我使用第二组UV通道添加污垢和RGB遮罩。所有我可以复制/镜像的都不是独一无二的。
为了隐藏这种对称的外观,我只是在中间使用了独特的部分和带文本的网格贴花。可以重复使用的东西必须重复使用,只是用一些贴花稍微调整一下。在图片中,我用箭头显示了这种重用。对于我所有的管道,我都使用了一个装饰表纹理。 Texel密度与之前相同——682 px/m(2048px/3m)。
对于所有这些硬表面对象,值得一提的是,如果我有更多这样的对象,而且它们的尺寸更大,我会采用另一种流程:平铺纹理,映射到中等网格上,带有贴花和接缝的装饰表,以及污垢遮罩,遮罩到第二组UV通道上,以带来一些自然外观和视觉凝聚力。
软管是一个样条网格,端部有作为静态网格的插头。至于动画,我使用了相当标准的带骨骼和关键帧动画的流程。
在Unreal中,我构建了一个动画图来控制不同阶段的动画、卫星天线的旋转等。
后台残骸
对于背景中的残骸,最重要的是轮廓。在Maya中,你只需按下7键(使用所有光源),如果场景中没有灯光,你就会只看到一个黑色的轮廓。这可能在快速测试中很方便。
对于纹理,我使用了瓦片和遮罩。
水面着色器
水面的着色器对我来说相当痛苦。我想沿河流创建水流,并在近岸增加一些漩涡。为实现这一点,我使用了2个UV通道:一个用于垂直滚动,第二个用于流动地图纹理的扭曲。
要制作流动地图,我使用了Flowmap Painter。这是一个非常棒而且完全免费的工具。流动地图的工作原理是:它基本上是一个向量地图,但与法线贴图不同,它包含每个像素中流动水体的向量。
我的法线贴图随时间被这个流动地图弯曲。这为水流增加了一些非均匀性。
光照和VFX
光照经历了多次迭代。主要问题是,如果我的树发光,它们看起来才更立体。显然,它们吸引了太多注意力。我尽可能地使它们变暗,并试图通过我的主要对象——着陆舱——来平衡它们。
我还添加了灯光以引导视角。实际上,这里有数百个光源:为了从树中添加假全局照明,为了添加轮廓光,为了添加光晕。同时,它们几乎都静止不动,所以对性能没有影响。只是光照贴图烘焙时间变长了。我最终使用了这样的流程:
- 我从设置天光和定向光开始。
- 然后我用静态光照亮了一切。在这里,我使用了静止的聚光灯,有时使用矩形和点光添加重点和保持适当的明暗对比。在设置光照时最好切换到灰度模式,这样色彩信息就不会分散注意力。
- 在光照烘焙之后,我打开了动态光源以添加光晕和使粗糙度贴图起作用。在个人项目中,我更喜欢可移动的聚光灯。否则,使用固定的聚光灯会更高效。但是在Lumen时代,由于现在一切都是动态的,这可能会成为历史。
- 最后一步是添加一些轮廓光和重点。在这里,我也使用了可移动的聚光灯。我也可以补充一点,我在树蓝图中使用了静态聚光灯。
另一个让环境更容易理解的有力工具是雾气。我使用了许多带云纹理的平面。这是一张去掉光照的图像,雾气更明显。
顺便说一下,我为灯光、效果、后期和相机使用了不同的层级。 对于灯光,我也将灯光层转换为一个灯光情景。这是一个非常强大的工具,允许您尝试不同的灯光设置。
后期处理
后期处理容量是一个非常强大的工具,可以极大地提高作品的艺术效果。我使用了两个后期处理容量:一个用于主要设置,第二个用于查找表(LUT)。
对我来说,它的作用就像Instagram的滤镜。在主要的后期处理容量中,我添加了泛光、镜头光晕、色差、电影颗粒和污点遮罩。我也稍微调整了曝光设置。对于电影颗粒,我使用了后期处理材质。
结论
总的来说,这个项目变成了艺术方面和技术问题的结合。尽管完成它花了6个月的时间,并且我不得不将其分为两个部分,用于挑战和我的个人作品集,但这是我最好的时间投资之一。
与以前相比,我在Unreal技术艺术上走得更深了,提高了我的建模和纹理技能,并实现了我设定的大多数目标。回想起来,我可以说,这一特定场景在过去两年中也最影响了我的艺术生涯。
评论留言