UE4景观设计!收集参考/创建优化地形与材质/导入资产/植被系统/后期处理 全流程讲解!...
地形植被Game艺视界原创 40087 0
实名

通过了实名认证的内容创造者

发布于 2022-3-20 14:25:37

您需要 登录 才可以下载或查看,没有账号?注册

x
01.创造景观
在接下来的几周和几个月里,我们将去学习虚幻的风景工具、树叶工具,甚至一些材料和纹理技术,这些是我一直在学习的东西

创建一个世界的第一步:
1. 确定环境的类型
2. 收集参考
3.识别关键特征

为什么这些第一步是重要的
1. 一个连贯的场景需要预先计划。
2. 引人注目的世界需要以现实为基础。

要在参考文献中识别的元素
1.景观形状

2d6aded6f8c09a6dcffba3d555c3693e.png

2.地面材料

5987290e26fcbfb8c86ef24e55551030.png

3.主要植被类型
4.颜色主题、天气状况、水
确定好以上步骤进行下一步,收集材料和资产

02.创建地形性能注意事项
组件大小与组件总数的选择是一种性能上的权衡。较小的组件大小可实现更快的LOD过渡,
也可实现更多地形的遮挡,但是组件越小,需要的组件越多。
每个组件都有一个渲染线程CPU处理成本,每个分段都是一个绘制调用,所以尽量将这些数字保持在最小值。对于最大的地形,Epic建议最多使用1024个组件。

建议地形大小
为了让事情变得更简单,这里有一些尺寸可以用于在最大化面积的同时最小化地形组件的数量。

创建地形设置好参数

增加地面网格细分,顶点密度修改


设置LOD距离离得更远的我要减少我的密度

随着我越来越近,更多的细节被添加进来,直到最后我想要多近就有多近,上面这里是每米4个点,我非常想要那个非常紧凑的细节但当我后退一步,你可以看到细节被删除了,我能够在紧凑的细节之间取得很好的平衡。

接下来就是刷地表贴图,拿出ue自带小白人确定比例这很重要,让你知道自己有多大,有多小。在你的场景中做一些东西,如果你没有模型文件夹在这里添加。

接下来我们雕刻地形
起伏/平滑/坡度等功能(具体见视频)

03.Brideg配置应用brideg配置应用—资源贴图下载内容:
Albedo、Roughness、Displacement、Normal、Ao、Opacity

模型下载设置:选择LOD

下载后安装导入到UE4插件

地表材质需要合并归档,之前我们讲过如果都是单张贴图很费资源
下面是在SD进行合并,当然也可以在ps中制作

ps中就要手动合并图层

按照以上合并方式合并后,需要在ue中这样链接
我们很轻松就可以分开颜色和粗糙度,
接下来就是要分解我们的法线、环境遮蔽、高度图。我需要创建DeriveNormalZ_function将r和g通道插入xy向量,这将是自动的那么将根据x和y 为您计算z分量,因此所有三个分量一起为 您提供一个单位向量长度,非常重要的步骤
环境遮蔽乘以0.3 修改后可用作镜面反射

先解释一下这些我将在这里打开我的法线贴图,
我导入时压缩设置设置为BC7真的很重要,您将srgb设置为关闭 ,因此这会将您的纹理存储在使用bc7压缩的线性空间中,它没有设置为法线贴图, 因为它没有非法线的数据,所以我将其设置为bc7以及那是什么意思。通常如果您将纹理设置为法线贴图, 它将扩展法线贴图的范围,该贴图存储在 0 到 1 空间中,但法线贴图需要从 0 到 1 扩展到负 1 到 1 个空间,以便它可以是矢量而不是颜色,如果压缩设置为法线,它将自动为您进行扩展,但在我们这种情况下,我知道它并没有这么做。所以我们做一个掩码只使用r和g他们是法线的x和y将它乘以2减去1这是我们的法线。

因为我们需要频繁使用这些参数下面我们就创建一个材质函数

输出节点位置排序:选择输出节点后在左侧信息栏就可以看到

创建好以后我们拖拽到母材质中链接对应插槽


我们只做了两个纹理样本并获得了六个数据,而在我们之前我们做了四个纹理样本并且只获得了四个所以这样是很节省资源的。创建景观材料非常重要

04.创建地形材质今天我们为下载的每个纹理集创建一个这样的材质,然后将它们组合成一个单一的景观材质然后我们就可以在风景上作画了


我已经做好了材质函数下面我们逐一讲解下他们是如何运用的。
首先我有UV坐标,我用的是绝对世界位置,只用到世界位置的绿色通道红色通道。这基本上是一个自上而下的投影,它使用的是x和y而不是垂直轴z。然后我用这些材料除以一个输入你可以看到这里 我把它命名为输入(NearUVscale)。
这样我就可以控制材料的大小或者平铺的数量,然后这里有两个纹理样本这是我的C-R纹理样本,在C-R在附近,我把这个叫做NOH我们把这些叫做C-R near和NOH near这些是纹理输入让我能够改变纹理对象也就是我们这里的纹理样本,然后我将我们的纹理样本放入unpack函数中,所以它将C-R纹理和NOH纹理分解成各自的通道
这个大块叫做makematerialattributes这让我可以把材料的所有不同属性都考虑进去,一旦他们把它们都插上 我就有了一个输出属性。现在注意下面这里我把高度单独地代入了这很重要 我有一个单独的高度输出与我的make材质属性分开

这个函数的作用就是反复使用这种材料,然后切换uv和两种不同纹理的比例这样我就可以使用所有不同的材质纹理集然后把它们插入到相同的材料中为我的每一种材料制作一种材料

我将取这个函数并将它代入到每个纹理集中,我将向你们展示它是如何工作的 这是我的MF横向Mat函数,你可以看到现在我已经插入了我的单独纹理 所以我有C-R 和NOH 还有uv平铺通过这个值 我可以控制纹理的平铺 这个值的大小以厘米为单位

把我们用到的材质潮湿的石头森林的地面,还有森林的根这些就是我今天要用的材料。现在我需要把所有这些组合在一起 用它们做一个单一的材料
然后我继续 我做了一分钟 新的材料 我叫它M景观 森林 溪流
我们想让我们的图保持清晰 所以把所有的东西都封装在这样的函数中是很好的

新建混合层为每一层命名修改混合方式


给每一个材质创建权重混合层,选择保存位置保存。

05.解决地表重复度解决地表重复,在靠近玩家的近地面上,稍微远一点,然后在背景里。离玩家很远的地方,我们将按顺序进行检查用这个叫做m landscape simple的材料它只有一个。

默认一张地表节点链接

Noh格式到根节点,所以第一个技术,(红框为新建节点)
我们要用到的是旋转技术,对纹理进行第二次采样比例略有不同,我们要旋转90度。
再一次,我们要插入相同的纹理不使用任何额外的纹理记忆,我们只是在做在着色器中有一些额外的数学运算。把红色通道和绿色通道交换一下,复制uv坐标除以这里,然后把yx代入a,而不是97把这个设为137我想指出来这都是接近1米大小。
这是两种不同的大小,一个旋转了另一个没有

我一直在这里使用的面具,下面是我面具的通道

混合我们的普通材料和我们的90度旋转,将面具蓝色坐标混合进lerp的alpha通道。
复制我的除法和遮罩大概是16米,所以我将值设为1597

在一定距离内还是有重复感觉

现在我还有一件事要做那就是我要修复我的法线,因为我旋转了颜色贴图uv。
这种方法近距离观察效果很好

稍远的距离不是很好,我要讲的方法,用同样的纹理然后再采样一次,但是采样时要用到更大的纹理坐标给离我们较远的纹理一个遮罩,虚幻有一个Node已经内置在它里面了它被称为相机深度消退这是我们的相机深度消退节点。偏移淡出长度是从黑色到淡出的距离,给一个偏移值大约600

近处黑色会显示我们之前平铺比较小的纹理

链接


现在你可以看到在前景中我们有了正常比例的材质当我们放大背景时,我们可以看到我们的材质规模显著扩大,所以当我们走得更远的时候更少的平铺,因为材料更大。重复的次数更少。
在远处它会放大,这样重复的次数就会减少,你可以看到这个方法非常有效。
[micxp_wxonkey]wxv_2035858006256484353[/micxp_wxonkey]

这个在sd中制作结果和UE目的一样

这里我们是物质设计师,在这里创建一个新节点,叫做make material
这就完成了我们在之前教程中所做的一切在这个节点,但我想给你们看的是这里

我们封装材质


将每一层做好然后合并到主材质
06.地形网格细分
我们今天要做的就是为了让我们的风景有更真实表面的形状现在我们使用法线贴图,但还是显得平整。我们把相机附近的风景三角形分开,这样我们就有了一个整体还有很多三角形要处理第二件事顶点的偏移,修改主材质平面镶嵌



相机的位置减去绝对世界空间的位置,修改绝对世界位置属性

添加向量长度节点

摄像机距离设置
接下来我们控制世界位置偏移,我们需要知道移动的高度和方向移动,所以我们的高度我们可以使用纹理的高度图,你们可以看到,我这里有六种不同的材料。我们将获取所有的高度数据并混合在一起首先确定高度范围+4和-4总高8cm

现在我们还需要知道位移的方向,我们可以用顶点法向量我要引入顶点法线,我们将顶点法线乘以高度图

我们通过计算出的遮罩乘以高度消除地表断裂

在我们开始使用高度之前,我想做最后一件事,我要把它转换成一个物质函数在我的材料中使用这个材料函数。
公开了我们的位移高度参数,以便它 也可以调整(Displacementheight)
将默认500转化为公开参数,以便在我们的材质实例中进行调整 因为我还在这里添加了 两个新值,这就是所谓的细分 衰减曲线

我还添加了一个乘数来控制 我们的细分密度,我还将这两个 作为参数公开,以便我们可以在材质 实例中调整它们

[micxp_wxonkey]wxv_2036814163921960963[/micxp_wxonkey]

创建lerp混合节点将高度图混合在一起

接下来需要创建一个横向图层样本,
这个节点的作用是引入我为每一层画的蒙版,命名与材质图层对应。

07.植被系统
为我们的景观添加一些岩石和树木

选中这些石头拖放到树叶类型的框,树木也是同样操作。

选中石头通过笔刷来刷


08.资产整理
我们今天要做的是从参考资料中识别资产,
从Megascar收集资产,向“建筑场地”添加资产准备资产以备使用,

09.河流湿润度
在今天的教程中,我们将增加湿度和焦散贴花我们的河水。


首先创建一个贴花放入场景中


材质设置

贴花是一种你可以贴在关卡上的东西,但它不会成本非常高,假设你做的贴花卷非常适合你所在的区域把它们放进去。
将此材质赋给贴花基色,你可以看到我们得到的值是0
对于镜面的值是0.2这是因为水的镜面小于0.5,所以我们把它调暗了
高光,粗糙度的值是0,这是因为湿的物体有水坐在上面利用的是水的粗糙非常光滑,这就是我们得到完美反射的方法从湿的东西,然后不透明我有一个值
0.5或0.7,我使用这个值,以便有些基本材料还是能看出来,
Rounded edge mask(贴花圆角)





往期教程讲过的焦散
10.照明反射体积和后处理体积照明反射体积和后期处理体积

讨论一些可以对您的场景产生很大影响的功能,让我们从照明开始说到
我们刚刚烘焙的静态阴影贴图,比实时动态阴影贴图的渲染效率要高得多,但是我们丢失了很多细节 ,如果我们提高烘焙光照贴图的分辨率,我们也许可以改进这一点,但这也会以增加 纹理内存使用为代价,所以无论您是否打算使用烘焙光照贴图或动态阴影贴图几乎取决于您,

我想我要切换我的光源,把我的灯换成为了使用动态阴影贴图, 您可以立即看到我获得了更多细节, 因为我们的动态阴影贴图的分辨率明显更高,帧数已降至 44fps 而不是大约 60 fps

接下来我们讨论光探针体积或反射体积在这个文件夹中设置了反射捕获体积在这里你可以看到我已经 添加了 sphe 将物体重新反射捕捉

它的作用是捕捉立方体在我放置球体的位置贴图,重要的是将这些反射捕获点,放在你的场景周围,这样你就可以摆脱物体周围的蓝色光晕而且这样你就可以反射像这棵树这样的物体,而这棵树实际上不必出现在屏幕上。这对反射的质量有很大的影响,我关闭 所以现在我只反射天空,
开启

接下来我们看看后期处理post process volume 渲染中常用到的参数
很多设置,基本上这些是在场景的主要部分渲染之后发生的操作,它们发生在整个场景 或整个渲染帧上,这就是为什么他称为后处理,在渲染已经发生之后发生的事情,
infinite extent(unbound)无边界覆盖整个场景,影响的区域大小

光晕大小强度

曝光
你可以再次看到不同类型的曝光,有一个下拉菜单,然后是基本的自动曝光直方图基本以一种 非常简单的方式计算曝光,所以它更便宜,但自动曝光直方图满足 hod 更准确,因为它实际上是在屏幕的更大部分进行测光,它试图找出场景的整体亮度并平衡亮度屏幕的暗部和亮部是平衡的,
如果我的曝光太低,那么我的场景就会太暗,如果太高,我的场景 就会太亮,所以这个呃 曝光 设置允许游戏引擎现在自动平衡我的场景,如果我觉得它使我的场景太亮或太暗我可以使用此 曝光补偿



接下来我想向您展示的 是最小亮度和最大亮度 亮度
摄像机景深
色温
环境光遮蔽

11.河流水花这一期作者在商城购买一套瀑布河流素材进行介绍


12.雾和体积光
我们的森林溪流场景中添加雾和体积光,但我们想要添加雾的原因是为了一些空中透视或大气透视

我们现在看我们的场景感觉有点平坦,我们想要尝试做的是在前景中景和背景元素之间引入一些分离。为了做到这一点我们只需要添加一点雾不会让它成为一个非常有雾的场景

添加前后效果对比
但这并不是我想要的场景,看起来像默认设置,只需要一点雾所以我们需要来这里
可以在远处达到100不透明这绝对不是我想要的,修改最大不透明度更改为 0.002 基本上可以
修改雾密度

光线已经添加到您的场景中因此我们需要做的第一件事做就是选择你
定向光然后在设置中我将

接下来,为了使用体积雾我之前添加到我的场景中的指数高度雾元素,这是我之前使用的雾设置我现在需要做的是使用这个体积雾设置所以我要打开它根据实际情况调整效果

13.往期内容回顾
01-完全空的地图文件,但在我们制作该地图之前我谈到了执行查找参考图像和确定构成,您想要创建的环境的关键元素基本步骤是多么重要,随着你的进展而准备这些东西这从来都不是一个好主意
02-然后我们开始制作景观,我通过讨论景观组件部分和四边形,讨论了设置高效景观的所有设置我也展示了如何增加玩家附近景观三角形的密度,以获得更多细节,减少它更远的地方密度以获得更好的性能
03-然后我们查看了雕刻景观的工具我通过在雕刻后升高和降低地形创建了我们简单的山间溪流形状,
04-我们创建景观材料所需的景观形状我展示了一种技术将景观材料的所有纹理数据打包成两个纹理即cr和 noh 纹理我们使用了 Substance Designer 或 photoshop 来完成此过程。
05-我们创建了一个材质函数来解包材质中的数据并且对每种材质只使用两个纹理的虚幻很重要因为每个纹理样本都有成本所以如果我们的材料使用较少的纹理样本我们的材料将 在 GPU 上运行得更快
06-接下来我们创建每个我们单独的景观材料,并将它们组合材料绘制到地形上。我首先在大面积的材料上进行阻挡,然后我们回去做一些更详细的材料与所绘的风景材料混合,
07-材料重复看起来非常难看,所以我们讨论了四种在应用这些之后打破平铺的方法是更自然的景观,没有重复图案的干扰,以改善我们景观材料的细节形状简单的法线贴图
08-然后我们使用来自我们材料的高度数据,添加了曲面细分和位移这些技术显着增加了三角形数量。因此我们必须确保并小心地将其做为仅靠近玩家,并且我们还必须仔细调整事物因此 我们只得到 了我们真正需要的镶嵌量没有额外的使用材料雕刻和绘制的景观。
09-然后我们添加石头 草 树木 沼泽 蕨类植物
10-我们创建自定义 str 具有泡沫折射和法线贴图滚动的 eam 水着色器我们使用流映射技术,使水流在中间更快在边缘更慢我们将水流材质,应用于通过添加湿度贴花使水附近的景观和岩石看起来湿润,来改善水的外观我们还添加了焦散贴花以模拟阳光被水面折射并聚焦在溪流底部的效果。
11-我们为场景添加了飞溅泡沫瀑布和其他水粒子效果这些效果由来自 t harl vfx youtube
12-为我们场景中的最后润色而创建的我们分析了照明和反射并添加了雾气和体积光以获得更具 戏剧性的阳光 现在我们有了一个看起来很酷的场景

所以接下来要讨论下一组主题 程序主义
几乎我们所有的东西到目前为止,我们已经完成手工制作,我们手工雕刻了我们的景观高度 我们手工绘制了我们的景观材料、我们手工放置了我们的岩石树木和原木、我们手工设置了我们的水面并添加了水粒子效果。这些方法给了我们最大的数量控制,事物的放置方式但它们也确实是劳动密集型的。

程序主义
这意味着我们定义了一组规则,然后计算机遵循这些规则以及可用于为我们创建环境的数据。因此下周我们将首先研究生成地形的方法,包括从卫星和激光雷达扫描捕获的真实世界高度数据中导入高度图,而不是在下面我们手绘它 eks我们将创建一个景观自动材质,根据景观高度 和坡度应用各种材质类型而不是手绘。我们还将介绍根据景观材质自动应用树叶和岩石最后我们将介绍使用虚幻 4.26 中引入的新虚幻水系统,每个系统都使用程序化来自动化世界创建过程。因此我们能够更快、更轻松地创建环境
程序主义的缺点
我们放弃了对资产的确切形状和位置的一些控制,我们必须非常小心地调整控制规则事情是如何生成的,这样我们就不会以大乱告终理想情况下,您希望创建自动生成初始结果的系统,然后允许用户进行微调在需要的领域手工制作,因此对于我们在下一系列视频中介绍的每个步骤我将向您展示如何做到这一点这就是我们今天的视频


本帖被以下画板推荐:

微信公众号:Game艺视界
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表