博客
关于我
UE4 Material 101学习笔记——19-22 程序化噪声的使用(Noise节点)
阅读量:574 次
发布时间:2019-03-09

本文共 1415 字,大约阅读时间需要 4 分钟。

UE4 Material 101学习笔记

Lec19 程序化噪声(Procedural Noise)

程序化噪声(Perlin噪声)是一种生成随机图案并在无限范围内重复使用的高效算法。其独特之处在于能够通过数学运算创造出看似无聊但复杂多样的纹理图案。通过调整缩放比例(Octave),可以将这些纹理组合起来,产生更丰富的分形图案。例如,右边的图像可能会让你联想到Photoshop中渲染云层的效果,这正是Programmatic Noise的典范应用。

Programmatic Noise在游戏和3D渲染中非常广泛应用。例如,《我的世界》和《无人深空》等游戏都会使用类似Perlin噪声的纹理生成技术来创造丰富的地貌。它的发明者Ken Perlin曾因在电影特效中的贡献获得奥斯卡奖。

涉及技术

  • 基本代码公式:如图所示,Perlin噪声的核心代码经过优化,可以在现代显卡上快速运行。不过,代码的简洁性在学习时更为重要。
  • 优化方法:通过体积纹理技术,减少显存占用和计算复杂度。这种手法虽然有效,但由于平铺纹理的局限性需要通过特定方式隐藏平铺效果。
  • 在Unreal Engine中的应用

    Unreal Engine自带支持Perlin噪声节点,操作起来相对简单。通过选择3D纹理样本,可以避免繁复的数学计算,只需将噪声节点连接到BaseColor即可,进一步通过位置信息AddSeed或Scale来控制噪声变化。

    Lec20 枯木积雪着色器(Snowy Tree Trunk Shader)

    本节我们将展示如何使用Programmatic Noise来创建白雪皑皑的树干。通过综合位置信息和三维噪声,可以生成与树位置相关的雪纹。这种方法比为每个树绘制独特纹理更为高效。

    与传统纹理相比,Programmatic Noise能够通过数学计算生成动态噪声。例如,我们可以设置噪声决定雪落在哪些位置,并结合树的位置信息让雪在不同高度或方向有所差异。

    以下效果图展示了树移动时雪纹变化的动态效果:

  • 理论原理:利用位置信息与三维噪声结合,生成与树位置和方向相关的雪纹。
  • 实际应用:通过调整权重(如乘以Z或Y坐标)可以控制雪的分布方向。
  • Lec21 岩层着色器(Rock Layer Shader)

    为了模拟地质岩层的层次分布,程序化噪声是理想选择。它可以模拟岩石的融合和层层递进特征。

    核心方法

  • 纹理处理:将渐变纹理投影到世界空间,再通过程序化噪声加上位置信息,形成岩层效果。
  • 应用实例:旋转岩石时,渐变纹理依然保持一致,模拟岩石的整体性。
  • 以下图片展示了具体效果:

  • 纹理预处理:将渐变纹理映射到UV坐标。
  • 世界空间投影:将纹理投影到前、上、侧三个方向,再结合噪声生成层次效果。
  • Lec22 与世界坐标对齐的着色器(World-Aligned Shader)

    为了解决艺术家在拼接模块时接缝明显的问题,我们可以结合程序化噪声和世界坐标对齐的技术。通过混合多个纹理样本,确保纹理在不同方向上的连贯性。

    核心方法

  • 多纹理样本混合:使用两组纹理样本,在不同的方向上进行采样。
  • 世界坐标对齐:如选择XY平面对齐,仅在X和Y方向上保持纹理连贯,而Z方向则会拉伸效果。
  • 噪声融合:通过程序化噪声控制纹理混合比例。
  • 这种方法不仅简化了纹理制作过程,还提升了整体效果的自然度。

    通过以上四节内容,我们可以充分利用程序化噪声技术,快速生成丰富、多样的视觉效果。

    转载地址:http://spppz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现counting sort计数排序算法(附完整源码)
    查看>>
    Objective-C实现countSetBits设置位的数量算法(附完整源码)
    查看>>
    Objective-C实现currency converter货币换算算法(附完整源码)
    查看>>
    Objective-C实现cycle sort循环排序算法(附完整源码)
    查看>>
    Objective-C实现data transformations数据转换算法(附完整源码)
    查看>>
    Objective-C实现datamatrix二维码识别 (附完整源码)
    查看>>
    Objective-C实现DateToDay 方法算法(附完整源码)
    查看>>
    Objective-C实现DBSCAN聚类算法(附完整源码)
    查看>>
    Objective-C实现DBSCAN聚类算法(附完整源码)
    查看>>
    Objective-C实现decision tree决策树算法(附完整源码)
    查看>>
    Objective-C实现degreeToRadian度到弧度算法(附完整源码)
    查看>>
    Objective-C实现depth first search深度优先搜索算法(附完整源码)
    查看>>
    Objective-C实现DES和3DES加解密算法(附完整源码)
    查看>>
    Objective-C实现des文件加密算法(附完整源码)
    查看>>
    Objective-C实现detectDirectedCycle检测定向循环算法(附完整源码)
    查看>>
    Objective-C实现detectUndirectedCycle检测无向循环算法(附完整源码)
    查看>>
    Objective-C实现deutsch jozsa算法(附完整源码)
    查看>>
    Objective-C实现DFS判断是否是二分图Bipartite算法(附完整源码)
    查看>>
    Objective-C实现DFS遍历或搜索图数据结构算法(附完整源码)
    查看>>
    Objective-C实现Diffie-Hellman算法(附完整源码)
    查看>>