Part1前言

地形是一般场景制作的基础,而地形材质又是地形制作的核心。本文主要解决地形材质相关基本概念。

Part2节点

MakeMaterialAttributes,材质中的材质节点,把对应通道连接到这个节点


我的 “地形” 我做主_python

LandscapeLayerBlend,地形材质中用于分层的节点

我的 “地形” 我做主_数据库_02

材质属性里勾选 Use Material Attributes,可以使材质合并成一个节点,变成只有一个输入的节点


我的 “地形” 我做主_java_03

Part3制作简易地形材质

地形材质一般需要若干层,制作简易的地形材质,可以借助megascans资源,及其材质节点 主要思路是通过layerblend节点叠加所需的不同材料

1概览

制作的主材质截图

我的 “地形” 我做主_python_04

所用到的材质函数如下


我的 “地形” 我做主_java_05

三层材料的效果:

2制作

创建M_landscape主材质 并创建材质实例
创建每一层材料,通过layerblend节点连接到M_landscape主材质中,为了视图清晰,每层材料采用材质函数。
(主要工作是修改参数名,因为这样才能在材质实例中分开每个参数)
如新建材质函数MF_layera
复制megascans导入的材质父项中的节点,连接到MF_layera内,并修改每个参数的名字。
里面的MF_Tiling和MF_MapAdjustments两个材质函数,也同样操作,复制这两个材质函数,修改里面所有参数节点的名字
MF_MapAdjustments内部还有一个材质函数MF_Transmission,也同样复制,修改参数节点名字
最后再将修改好的材质函数替换到材质函数MF_layera中
以材质a为例


我的 “地形” 我做主_大数据_06

我的 “地形” 我做主_大数据_07

我的 “地形” 我做主_机器学习_08

我的 “地形” 我做主_大数据_09

我的 “地形” 我做主_java_10

这样材质a准备好了,同样方法准备材质b,材质c... 最后的主材质和所用的材质函数在上文概览材质实例截图:

我的 “地形” 我做主_java_11

可以看到每层材料的参数混在一起,可以通过参数节点细节面板中的分组和排序优先级组织材质实例各参数的分组和排序

我的 “地形” 我做主_机器学习_12

此方法用的材质函数虽然多,但不用自己写处理uv平铺、贴图色相对比度等的方法;

在主材质里清晰明了,主要逻辑也简单,就是做好每种材料再合并

如果想把复用的材质函数整理成一个,可以使用输入节点functioninput,代替输入参数,把参数暴露在材质函数节点外边

如用到的贴图uv平铺函数MF_Tiling:


我的 “地形” 我做主_java_13

我的 “地形” 我做主_java_14

Part4绘制地形材质

将制作好的材质实例给到地形,因为没有分配各层信息给地形,默认会呈黑色
在地形模式的绘制栏绘制各层的材质
点击加号,一般选权重混合层(法线)

我的 “地形” 我做主_数据库_15

每个材料层都会创建一个资源,存储绘制信息

我的 “地形” 我做主_大数据_16

接下来就可以用笔刷绘制了;若使用外部软件制作的地形,可以导入斜率等黑白图,用作某一层的遮罩


我的 “地形” 我做主_大数据_17

Part5减弱贴图平铺

通过距离混合来减弱平铺的视觉感觉

基本实现思路:用2-3中不同的uv平铺,远处增大贴图单元减少平铺数量,近处减小贴图单元增加平铺数量;这样远处贴图那种一格一格的感觉会减弱,近处的纹理又可以附合真实物理大小

主要使用Distance_Blend节点,下图

我的 “地形” 我做主_大数据_18

我的 “地形” 我做主_数据库_19

使用"添加命名重路由声明节点......",类似蓝图中设置变量,在图表中可以调用

我的 “地形” 我做主_数据库_20

在函数MF_TilingA中增加一个输出用于控制远处的uv


我的 “地形” 我做主_机器学习_21

我的 “地形” 我做主_机器学习_22

我的 “地形” 我做主_java_23

我的 “地形” 我做主_数据库_24

Part6总结

本文主要解决了地形材质相关基本概念。

Part7关于IN VETA

IN VETA是一支由建模、美术、UE5组成的年轻团队。


我的 “地形” 我做主_机器学习_25

我们的开源项目:
​​​https://github.com/inveta​

我们致力于三维数字孪生技术分享与研发。
欢迎与各界朋友一起探讨技术与商务合作,一起推动数字孪生的发展。