(全流程)如何在UE4中创建科幻环境场景关卡
Alberto Catalan Gallac准备了他最新的3D场景Power Overload的详尽分步细分。使用的软件:UE4、3ds Max,ZBrush,Substance Painter和Marmoset工具包。
介绍
大家好!我叫Alberto Catalan Gallach,今年23岁,目前正在西班牙巴伦西亚的Florida Replay学习AAA电子游戏的动画和数字艺术硕士学位。我的目标是为视频游戏行业创造坚实的环境和道具艺术,这就是为什么我一直在寻找新的工作流程和工具来帮助我提高自己作为艺术家的技能并加快我的工作过程的原因,以便有一天我可以加入一支艺术家团队,并能够在艺术上进一步发展。
背景
高中毕业后,我获得了两年的视频和音频制作专业的学位,之后又获得了3D图形设计专业的毕业证书,最终在现在所在的同一所学校专注于视频游戏艺术。
对我来说,视频游戏的艺术世界不仅是未来的职业生涯,而且是一种激情,所以我每天花很多时间寻找有关Polycount线程的新技巧,分析诸如80lv之类的平台的细目,在许多新游戏中寻找灵感艺术家的作品,甚至分析软件创作者发布的许多视频,了解如何正确使用他们的工具。





功率过载:目标和参考
我做Power Overload项目的主要目的是创建一个科幻走廊,从头到尾执行创建环境的整个过程。我的中级目标包括:加深对模块化设计的了解,增加我对从高多边形到低多边形的硬表面建模技术的了解,在Substance Painter中进行纹理化,在虚幻引擎中进行环境创建(照明,材质创建)和蓝图),还可以了解有关引擎纹理优化的更多信息。
我为跑道的一般样式以及场景的各个元素(甚至是灯光)使用了大量参考,但是我始终牢记最终的结果必须具有创造性和原创性。可能,我的主要灵感是谢尔盖·蒂亚普金(Sergey Tyapkin)的作品。
我也一直在沉迷于《毁灭战士》,《星际公民》或《外星人隔离》等游戏环境,以及许多其他在艺术水平和环境方面都非常出色的游戏。我已经深思熟虑地检查了建模样式,场景的组成,调色板等。

建模工作流程
封锁
建模的开始实质上是计划过程。我开始确定需要多少个墙壁,地板和天花板模块,以便在不创建太多模块的情况下获得复杂的结果。在3ds Max中进行了阻塞测试之后,我最终决定除了门外还要制作2个地板模块,2个天花板模块和5个墙模块。为了获得正确的尺寸,我将高度为1.80 m的基于人的网格导入了我的Max场景。
在使用盒子进行了一些尺寸测试之后,我开始了一个非常简单的程序块,仅定义每个模块的轮廓和尺寸。为了确保所有模块完美地配合在一起,我决定所有模块必须具有1米的标准尺寸,即:每个模块的尺寸都是1米(3.3英尺)的倍数。
在规划舞台时,从一开始我就决定对两个灯具建模,以实现真实的照明点。
解决了主要模块后,我决定创建一条电缆槽以覆盖墙壁和地板之间的现有缝隙,因为我决定将地板放置得比墙壁略高。另外,一组模块化的管道为上部走廊区域提供了更多的复杂性,因此使其更具吸引力。
散落在大厅各处的箱子是我最后决定做的。


高聚
在高多边形模型创建阶段,我与3ds Max一起工作,在创建细分之前将每个细节添加到每个模型中,以获取平滑的边缘,这些边缘将在执行烘焙时在法线贴图上很好地工作。
每当在3ds Max中工作时,每次要在创建过程中进行重要更改时都添加一个新的Edit Poly修改器来创建模型,并在修改器堆栈中累积Edit Poly修改器时,此功能通常非常有用。这样,如果我们需要返回该过程,则只需消除不需要的“编辑多边形”修改器,我们将以无损方式进行工作。
在对高多边形建模时,我们必须考虑要在法线贴图中烘焙的所有细节都必须有一个斜面,尽管实际上它们没有这种形状。否则,当法线贴图垂直于表面烘焙时,它将不会在我们的法线贴图中生成像素,并且我们将无法正确捕捉法线贴图中的位移感。

为了实践两种不同的工作流程,我决定以两种方式进行细分:首先,通过传统的细分添加支持循环和Turbosmooth,其次,通过使用ZBrush中的细分。让我用一些示例解释每个工作流程:
-3ds Max中的传统细分
要在3ds Max中创建高多边形模型,首先创建具有所有所需细节的模型,然后在具有四倒角修改器或带有“平滑组”设置的Turbosmooth修改器的新“编辑多边形”修改器中手动添加支撑环。活性。之前,我还以期望的方式设置了模型的平滑组(对于不太复杂的零件,因为这样很难控制边缘的硬度),最后添加了我通常配置为的Turbosmooth修改器3次迭代。
我决定对要存储在法线贴图中的许多细节进行建模,然后在浮动几何图形的平坦表面上进行建模,以尽可能简单地创建基础网格,以方便进行细分。
此工作流程的优势在于,我们获得了具有干净拓扑的高多边形模型,并且通过以后消除了包含支撑环的Turbosmooth修改器和“编辑多边形”修改器,我们有了一个很好的基础来开始研究低多边形模型。
为了从此基础上获得低多边形模型,我删除了该模型的所有未生成轮廓的几何图形。所有不会对轮廓产生影响的细节都将在法线图中绘制,并且将正常工作。

-ZBrush中的细分
对于此工作流程,将在3ds Max中创建具有所有所需详细信息的模型。我以所需的方式设置了模型的“平滑组”,并添加了“ UVW展开”修改器。在UV编辑器中,我选择了所有UV岛,并使用“平滑组”(Smoothing Groups)使用“ Unwrap”功能对其进行了包裹,而不管这些岛是重叠的还是包裹得很差,因为我只这样做了,以便以后可以在ZBrush中创建多边形组。
使用FBX导出器/导入器工具将具有所有所需细节的3ds Max模型导入到ZBrush中,然后在“多边形组”部分中选择“使用Uv进行自动分组”,从而从3ds Max中未包装的UV岛创建多边形组。创建多组后,该进行Dynamesh了。
在模型中具有所需几何形状的情况下,我们继续对弯曲区域进行平滑处理,为此,我们使用“按要素抛光”选项,直到没有发现任何构面为止。
创建平滑边缘的最后一步是在Masking部分中激活“ Groups”的情况下按下MaskByFeature。这样,在多边形组中创建的遮罩就会更改。我们将这种面膜与GrowMask配合使用,直到达到所需尺寸为止。我们还可以使用SharpenMask和BlurMask为它提供所需的硬度。
当遮罩覆盖所需区域时,在视口的任何空白区域中按Ctrl + Alt + Left单击以反转遮罩,然后使用变形部分中的``抛光''滑块,直到获得所需的边缘柔软度为止。

就像在3ds Max的细分工作流程中一样,我们可以使用带到ZBrush的模型作为清理不必要的几何的起点。
我使用Marvelous Designer创建了墙模块的气囊,并在3ds Max中创建了基本模型,以便能够使用它进行模拟。
UV展开
要使用3ds Max编辑器解开UV,我通常如下进行操作:我正确设置了模型的“平滑组”,请始终牢记,如果角度变化大于45度,则必须更改“平滑组”。
平滑组的每次更改都意味着将减少UV,即不同的UV岛,但是可以进行其他切割以放松UV岛,但这并不意味着平滑组的更改。
为了正确地展开UV岛,最初,我使用选项“通过平滑组进行平整”来选择所有岛,然后使用选项“快速剥离”。如果我们正确设置了平滑组,这将为我们展开展开提供很好的基础,因为这些岛将正确分开。如果任何一个岛的张力太大,可能在我们的UV中产生变形,我们将引入其他切口。如果没有使用Quick Peel正确解开任何孤岛,我通常会使用Pelt Map选项来更精确地控制解开。
当我们正确地将所有岛屿解开后,就该将所有岛屿尽可能平直了。为此,我通常首先选择要完全水平放置的边缘,然后按“对齐边缘”选项。然后,选择其余几条几乎水平的边缘,然后按“水平水平对齐”,然后对几乎垂直的其余边缘按“垂直对齐”,以使其完美对齐。
将所有可能的边缘完全笔直将阻止我们获得锯齿效果,该锯齿效果是在存在倾斜边缘时在纹理中生成的,这在法线贴图中通常尤为烦人。
将所有岛屿解开并尽可能平直,是时候打包了。为此,我在3ds Max的UV编辑器中的方法是选择所有UV岛,然后选择“重新缩放元素”选项-这会将我们所有的UV岛转换为相对于其他岛的正确大小,即像素密度为所有岛屿的纹理都相同。
稍后,我使用“打包归一化”选项,改变填充选项,直到获得正确的填充。
这样,我得到了自动打包的UV,这些UV作为手动重定位我考虑的岛的基础,以免在UV中留下空白。如果有一个空白空间无法填充场景中的任何其他元素,我通常会选择增加一些UV岛的大小,这些UV岛在场景中将更加明显,就像我通常会减小如果我在UV贴图上需要更多空间,几乎看不到UV岛。
由于练习独特的烘焙是课堂作业,因此我被要求在没有修剪板或自定义法线的情况下做走廊。

我决定对每200平方厘米的纹理使用2048x2048的贴图,从而得出2048像素/ 200厘米的Texel密度= 10.24像素/厘米。要在3ds Max中使用Texel密度,我通常使用TextTools插件的texel工具,我只是创建一个具有所需texel密度的平面,复制texel密度,然后将其粘贴到另一个网格中。这将以该纹理像素密度将我们的网格UV缩放到合适的大小。
烘烤阶段
为节省导入Marmoset的时间,使用良好的命名法非常重要。我通常使用Marmoset快速加载程序,通过此工具,我只需要为低多边形模型的每个部分选择一个名称,后缀“ _low”,然后调用该模型的高多边形部分中的所有部分具有相同的名称,后跟“ _high”后缀,其后是一个可选的后缀“ _part1”,用于指示高端模型的哪个部分。
例如:object_low,object_high,object_high_variation1,object_high_variation2
这样,我们可以从3ds Max中导出要在同一纹理贴图中烘焙的所有模型,并且在导入时使用此命名法,Marmoset Quick Loader会自动将场景中的所有烘焙组正确分组。
Marmoset的另一个优点是可以通过“最大偏移”滑块轻松更改烤笼。我们还可以使用“油漆倾斜”功能来决定对象法线的烘焙方向,这非常有用,因为应该将法线贴图在平面上的所有细节都涂成完全黑色的值,以便强制法线的烘焙方向。使其完全垂直于表面位置,否则可能会在烘烤过程中出现不必要的变形。
为了节省尽可能多的时间,我的程序是首先仅烘焙具有低质量参数和非常低分辨率的法线贴图。然后,我完美地调整了保持架和偏斜度,并使用通常是我将在引擎中使用的目标分辨率的两倍的分辨率来微调参数:

让我们来谈谈我在Marmoset烘焙的地图:
法线贴图:在我的情况下,我翻转“ Y”通道,因为我的地图目标是Unreal Engine,默认情况下可与DirectX一起使用。相反,对于Unity,我们不应该翻转此通道,因为默认情况下它可用于OpenGL。
环境光遮挡:烘焙环境光遮挡时,我只想生成每个对象自身的光遮挡(一般的光遮挡将添加到马达中),因此停用“地板光遮挡”和“忽略组”的参数很重要。 ”在此地图的配置中。
厚度:在Substance Painter中进行纹理化时,必须使用此贴图,以后我将使用的许多生成器都使用此贴图。
材质ID:当仅在我们的高多边形中存在但在低多边形中存在的零件中要创建蒙版并对不同材质进行纹理化时,此贴图非常有用。
在3ds Max中,将不同的材质添加到我们稍后要在Substance Painter中创建的每种材质(一种材质为钢,一种材质为橙色漆,一种材质为白漆……),然后导出带有“嵌入媒体”选项的模型以进行烘焙。 ”在我们的导出设置中激活。
如果不想丢失我们在3ds Max中指定的颜色,则可以通过像Marmoset Toolbag中的Albedo贴图一样烘焙它来获得此贴图。如果我们只是烘烤材质ID,Marmoset将分配随机颜色。
曲率:当我们要使纹理遮盖对象边缘时,此贴图非常有用。Marmoset贴图的结果通常是一个相当细的边框,因此,如果我们想要一个具有更粗边的蒙版,我们也可以烘焙贴图,以便在Substance Painter中获得此结果。我通常在两个软件包中烘焙此贴图,以选择两个曲率贴图中的哪一个为我提供更好的效果,具体取决于在Substance Painter中进行纹理化时要使用哪种遮罩类型。
高度:仅当我们要在引擎内部使用镶嵌或视差遮挡时,才使用此贴图。我在两个元素上使用了视差遮挡。
世界空间法线和位置:当使用生成器或智能蒙版时,这两个贴图在Substance Painter内部使用,而我在Substance Painter中烘烤它们而无需添加高多边形。


织构阶段
要开始纹理化,从一开始就声明要使用哪种调色板非常重要。因此,我进行了一些测试,将来自不同调色板的基础颜色添加到我的某些模块中,并查看哪个效果最佳。最后,我选择了这个调色板。

一直以来,将模型带入引擎是一个好主意-在这种情况下为Unreal-在我们在目标平台上前进时查看我们的纹理,因为每种软件解释纹理的方式始终存在细微的差异。
接下来,我将逐步解释我如何处理一种纹理:
基础材料定义:尽管看起来不是很,但这部分是该过程中最重要的部分。良好定义基础材料将为我们提供所需的信誉。在这种基础材料中,我通常会调整颜色,粗糙度和金属行为。然后,我继续努力。
当产生我们材料的磨损时,重要的是要弄清楚它们发生了什么,即磨损必须讲一个故事。我决定我的飞船以前曾停在某个类似地球的野外行星上,因此沿着走廊走过的乘客留下了灰尘和沙子的痕迹。分析材料在现实中的工作方式也很重要。为此,寻找真实的参考非常有用,尽管大厅是科幻飞船,但我们总是可以找到在现实中会产生类似磨损的材料和物体。我选择在工业机械中寻找参考,以了解表面如何磨损以及污垢如何分布。
我们开始制造材料的磨损:
油漆表面的划痕和剥离:为了达到这种程度的退化,这次我创建了将在油漆下面的金属材料,并使用Metal Edge Wear生成器对其进行了遮罩。为了有更多的手动控制,我终于在减影模式下添加了一个油漆层,用诸如污垢刷之类的合适的刷子用白色值进行油漆,以手工擦除那些不能说服我的金属区域。
焊接:为了产生焊接效果,我创建了具有所需基础颜色的基础材料填充层,并最小化增加了height参数,以在法线贴图上为其提供一些信息,并且粗糙度很高。我将金属值设置为1,因为它是金属。在我想模拟油漆下而不是直接在金属上的焊缝的区域中,我只是使用了具有更高高度的层,而没有更改任何其他参数。为了创建焊缝,我使用了Substance Painter焊接工具,该工具经过谨慎操作并使用正确的基础材料可以提供非常好的结果。
氧化物:为了产生防锈效果,我使用了一种具有所需颜色基础和粗糙度也很高的基材。这次将金属值设置为0,因为金属在氧化时会失去其特征性的金属反射率,而使其具有金属性将是对PBR的误解。为了创建蒙版,我使用了在Substance Painter中生成的曲率图和线性减淡模式(添加)中的grunge贴图,以便在曲率图未遮盖的区域中添加氧化物。然后,我在减色模式下使用了另外一对垃圾贴图,直到获得大约所需的数量。最后,像往常一样,我在减色模式下添加了一层油漆,以便能够消除对我不感兴趣的区域中的氧化物。
灰尘:这次,我主要使用灰尘在粗糙度图上产生变化和对比度。我决定制作两层,一层较软,普通粉尘,另一层在特定区域(例如,大部分会堆积的接缝和凹槽)积聚更多的灰尘。
在较柔软的灰尘层中,我在底色上使用了相当暗的颜色,以使它不太明显,并具有中等高的值粗糙度,然后将金属值移动到0。要生成蒙版,我使用了污垢在grunge部分的贴图中,我通过添加一些级别对其进行了调整以进行更多的对比,最后以乘法模式中的一个bnw点贴图来稍微破坏蒙版的同质性。
在特定的灰尘层中,我使用了比以前的颜色更浅的颜色的底材,以使其更加可见,非常高的粗糙度值,并且还使金属含量为0。
要创建蒙版,我首先从Quixel下载了一个缺陷图,您可以在其中找到非常好的图作为蒙版的基础。在它上面,我添加了一些层次来进行对比,最重要的是,遮罩编辑器生成器调整了一些参数并使用了乘法模式,以便只有白色值保留在会有环境光遮挡的区域(这是污垢所在的区域)大部分会累积)。在此结果之上,我在正常模式下添加了一种涂料,以便能够在需要的地方使用尘刷手动添加或清除灰尘。
润滑脂:在我的材料中添加润滑脂非常有用,我能够添加非常低的粗糙度值并最大限度地利用粗糙度图上的可能范围。我调整了几乎是黑色的基本色,其粗糙度非常接近纯黑色,但没有达到,因此使该材料非金属。在这种情况下,我只希望它位于非常特定的区域。我在黑色面罩内使用了油漆层,以手动使该油脂在我感兴趣的区域中可见,然后添加非常柔和的模糊效果以柔化面罩。
纹理完成后,我总是在Substance Painter或Photoshop中为我的基础颜色添加一个小的锐化,这样我就得到了错误的感觉,即拥有分辨率更高的纹理。

在我们创建称为PBR Validate的材料的所有层之上添加通常也是一个好习惯。这将帮助我们检查纹理是否为PBR使用了正确的值,以红色向我们显示了不正确的区域。

为了优化时间,我用油漆和金属材料创建了智能材料。这样,只需要更改油漆的基色并重新油漆我先前在每个模型中手工绘制的图层即可。
用于非发动机的纹理的制备
降低纹理的引擎成本的一种极好方法是将它们混合以在很大程度上减少纹理的数量。我们可以将灰度纹理(粗糙度,金属色,环境光遮挡,高度,自发光,不透明度...)混合使用,方法是将这些纹理分别放置在红色,绿色,蓝色通道或Alpha通道之一中。我为此项目创建了纹理,以使粗糙度贴图进入红色通道,金属进入绿色通道,AO进入蓝色通道(RMA),并在必要时利用alpha通道在需要的材料中添加视差遮挡的高度贴图或发射贴图。
通过在Substance Painter中创建导出配置文件或在Photoshop中手动混合它们,可以完成此过程。这是在Substance Painter中执行的操作:

用后缀“ _NRM”命名法线贴图很有用,这样,当将其导入到虚幻引擎中时,它将被识别为法线贴图,并且对该类型的图贴进行的所有必要调整都将应用于此纹理。
将资产导入虚幻引擎
将网格导入虚幻引擎时,重要的是添加前缀“ SM_”,以便虚幻引擎将我们的网格识别为静态并适当地配置它们。我使用了以下配置:

此外,我在3ds Max中为每个模块生成了一些非常简单的碰撞网格,必须是凸形的。使用适当的命名法:“ UCX_ [RenderMeshName] _ ##”并激活导入碰撞网格参数,在导入时将其自动添加到模型中。因此,我们将不必在虚幻引擎中生成它,并且三角形的数量也将得到更优化。从建模开始就考虑对象和模块的枢轴点也很重要,它必须放在逻辑上才能舒适地放置在虚幻中。例如,对于模块,我们甚至可以将其从阻塞阶段锁定到较低的角落。这样,我们可以重新导出模型,如果枢轴点仍在正确的位置,它将在场景中刷新自身而不会丢失其位置。
将纹理导入虚幻引擎
导入纹理时,我只需要担心将RMA映射中的压缩设置更改为“ masks(不是sRGB)”,以便将每个通道都视为一个单独的映射。对于我在Alpha中导入的,没有任何贴图的所有纹理,我激活了“无alpha压缩”参数。当使用后缀“ _NRM”重命名法线贴图时,导入纹理时将正确应用设置,并且我们不应更改任何参数。
引擎中的霍尔组件
为了在手动放置每个模块时达到完美,如我在阻塞阶段中所述,必须使模块尺寸完全适合,并用我们感兴趣的值激活Unreal中的网格捕捉(在我的情况下,我将其调整为50厘米)。理想情况下,有必要从头开始进行组装,即从阻塞开始,以便在我们前进时简单地重新导入模型,并从一开始就了解我们的阶段。此外,这将使我们能够确保模块大小没有任何问题,并避免以后出现严重的意外情况。
我对某些模块进行了更改,例如带有液压臂的壁(将臂放置在不同的位置)和支柱(在其中一些壁中,我打开了装有医疗箱的门)。


我们可以使用Unreal视口的着色器复杂度模式在舞台上检查着色器的复杂度,这是一种检查是否应该优化任何元素的好方法。具有透明度和粒子系统的物体将永远是引擎最昂贵的物品。

创建有用的材料和工具
创建主要材料
我选择创建一种主要材料,该材料将用于我的大多数模块,并公开一些参数,以便能够在每种材料的实例中对其进行调整。


创建蓝图以生成电缆
在考虑解决布线问题时,我意识到为我需要的每条电缆制作唯一的模型是不可行的,因此我决定制定一个蓝图,以帮助我在Unreal中进行布线。这样,我只需要导入具有某些几何形状的电缆段即可弯曲它和一些小的纹理,因为此蓝图允许我们通过自动制作电缆段的实例以所需的方式在Unreal中变形样条线。我们只需要将蓝图拖到我们的视口中,并指明我们要使用的网格以及网格的方向。


要开始照明场景,请考虑以下步骤,这一点非常重要:
我们必须创建一个会影响整个场景的后期处理体积,并停用自动曝光参数,以使其不影响场景,并且可以看到真实的照明。最初关闭“屏幕空间反射”和“屏幕空间环境光遮挡”也非常有用。我们必须禁用小插图效果和绽放。为了使静态光影响我们的动态对象(例如打开的门),我们必须在体积照明明细单元大小中更改光点参数的数量-这样,更多的光点将导致更多的照明细节。
我们添加了一个覆盖整个环境的重要重要性量。要在场景中创建反射,我们必须添加一些散布在舞台周围的球体反射捕获。
这样,由于后处理效果可能会改变我们对最终结果的感知,因此我们将能够看到照明而不会发生变化。
调整光照贴图的大小以在整个场景中保持均匀也是很重要的。我们可以在每个网格的属性内执行此操作,提高或降低地图的分辨率,并使用光照图密度视口,以红色显示多余密度的部分,以蓝色显示密度不足的部分。理想情况下,所有光照贴图必须尽可能绿色。

我添加的第一个光点是从逻辑点发出的,即从照明设备发出的光。就我而言,我在走廊天花板的中央部分有一些圆形的,在天花板模块的侧面有另一个矩形的。
圆形灯具是聚光灯,我给它们提供了稍微暖和的灯光颜色,而矩形灯具是具有较冷的灯光颜色的rect灯,所有静态灯都具有以下配置:

后来,我调整了模块的发射率,以使它们影响静态照明,除了不会变成静态的门(针对每种情况调整发射率),如下所示:

最后,我观察到走廊侧面的下部很暗。这不一定是坏的。如果我们的模块没有完全点亮,则无需担心,以艺术方式产生所需的效果。但以我为例,我决定添加一些指向模块的直角灯,为这些部件提供更多的照明,并部分分解此半影。

最后,我决定制作一些闪烁的灯光以营造出令人毛骨悚然的氛围,并附带给场景增添动感。为此,我创建了一个灯光功能,该功能可以使灯光闪烁,而材质也可以使我要放置这些闪烁的灯光的发光材料闪烁。

这是灯光功能,我在其中公开了眨眼速度的一些参数,以便能够创建材质实例并修改速度,以使灯光异步闪烁。

这是我在其中添加了发光眨眼功能的主要材料,其中我还公开了与灯光功能相同的参数以具有相同的控件。

这些是我在Lightmass中用于最终照明的设置,因为在进行了几次测试之后,它们为我带来了最佳的结果,而没有无休止的等待时间。

我特别感谢我的同学和朋友IñigoCebollero Orella在照明阶段的帮助。
使用实时光线追踪
为了能够使用“光线跟踪”功能,我们必须在“项目设置”的“平台”部分中将defaultRHI更改为DirectX 12,并在项目设置中的“渲染”部分中激活“光线跟踪”框。这是我在“后处理”卷中用于射线跟踪的配置。

下面,我将比较以下结果:射线追踪反射与屏幕空间反射,以及标准环境光遮挡与光线跟踪环境光遮挡。


指数高度雾和粒子配置
为了使场景更有趣,我决定还添加一个带有蓝色Inscattering颜色的非常细微的ExponentialHeightFog体积。

指数高度雾是虚幻内部的一个非常有用的体积,如果我们不滥用它,则可以帮助我们使舞台更有趣,因为它通过与灯光交互而产生变化。

为了使灯光影响ExponentialHeightFog,我们必须在每个灯光的设置中激活“投射体积阴影”框。

我还添加了一些虚幻的原生尘埃和尘埃粒子,它们散布在地板和墙壁之间,使场景更加动感。
从场景中截取屏幕截图
要拍摄屏幕快照,我决定使用Nvidia Ansel插件,通过它可以获取非常高分辨率的照片。后来,它们可以缩放到4K分辨率,这使我们避免了如果我们直接在4K中制作屏幕快照而不会造成虚幻崩溃的情况,则会产生锯齿。此外,此插件使我们可以创建360º图像。要使用此插件,我们必须在插件窗口中将其激活,选择以独立游戏模式播放场景,然后按Alt + F2。这样,将打开包含所有选项的Ansel窗口,我们将准备使用它们。

转~https://80.lv/articles/power-overload-creating-a-sci-fi-environment-in-ue4/
微信公众号关注:CG小苏
更多免费~
更多CG资讯等着你~
