Ue5.2 数字孪生(3)——地形材质基于WorldPosition绝对世界位置高度混合草地和泥土图层
WorldPosition绝对世界位置节点,通过Mask节点获取B通道(Z轴)数值对草地和泥土两张贴图进行插值;两张贴图纹理进行混合,上面(高出)显示草地,下面(低处)显示泥土纹理;
·
WorldPosition绝对世界位置:
- WorldPosition绝对世界位置节点,通过Mask节点获取B通道(Z轴)数值对草地和泥土两张贴图进行插值;
两张贴图纹理进行混合,上面(高出)显示草地,下面(低处)显示泥土纹理; - 用减法添加控制草地和泥土过渡高度的参数;
- 由于两个纹理过渡太过生硬不自然;这里可以使用除法来控制混合的强度;
- 这里同样可以使用噪波纹理,使两个纹理再过渡过程中出现不规则的锯齿效果,更贴近现实;
- 将草地和泥土贴图基于世界高度混合的结果连接基础颜色;再游戏视口中调整,混合高度以及混合强度等参数,即可获得基于地形高度自动生成草地和泥土纹理的地形材质;
需要注意地形再世界场景中的位置; - 这里,我们只对草地和泥土贴图中的颜色贴图进行了高度的混合,其余的高光和法线贴图同样需要进行混合才能到正确的地形纹理信息;
由于多张贴图需要进行混合,这里我们引入材质函数来简化材质图表连线;
材质函数:
- 将代表草地的颜色、高光、法线贴图合并成只有一个输出节点的材质函数;
- 创建材质贴图函数:
- 设置颜色、高光、法线三个输入向量
- 将材质贴图函数拖到地形材质中,分别连接代表草地和泥土的三张贴图;
在将材质贴图函数进行Lerp插值时,出现数值属性不兼容的情况; - 系统自带Lerp函数只支持浮点数值,这里我们需要单独创建一个专门用于插值贴图函数的Lerp函数;
- 同样的方式创建Lerp函数,将两个材质中的基础颜色、粗糙度、法线分别进行插值,再合成新的材质;
需要注意的是,我们的输入值是两个材质属性,和一个Alpha浮点数值; - 最后将Lerp材质插值函数拖到地形材质图表中,基于世界高度将地形和草地两个贴图函数进行插值,最后输出,查看草地和泥土混合效果;
- 需要将地形材质结果节点转换成材质属性节点,才能进行连接;
- 最终效果:基于地形高度自动生草地纹理和泥土纹理;
更多推荐
已为社区贡献2条内容
所有评论(0)