博客
关于我
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/

    你可能感兴趣的文章
    php实现多个一维数组对应合并成二维数组
    查看>>
    php实现多关键字查找方法
    查看>>
    PHP实现微信公众号H5支付
    查看>>
    PHP实现微信公众号网页授权
    查看>>
    PHP实现微信小程序推送消息至公众号
    查看>>
    php实现根据身份证获取年龄
    查看>>
    PHP实现的MongoDB数据增删改查
    查看>>
    RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
    查看>>
    php实现逆转数组
    查看>>
    PHP实现页面静态化、纯静态化及伪静态化
    查看>>
    PHP对表单提交特殊字符的过滤和处理
    查看>>
    php对象引用和析构函数的关系
    查看>>
    RabbitMQ HTTP 认证后端项目常见问题解决方案
    查看>>
    PHP将图片转换成base64格式(优缺点)
    查看>>
    php将多个值的数组去除重复元素
    查看>>
    php局域网上传文件_PHP如何通过CURL上传文件
    查看>>
    PHP工具插件大全
    查看>>
    php布尔值的++
    查看>>
    PHP常量、变量作用域详解(一)
    查看>>
    PHP应用目录结构设计
    查看>>