噪声贴图 | hyperPad Documentation
Logo
Documentation对象噪声贴图
对象

噪声贴图

Published 2023年6月28日

概述

//www.youtube-nocookie.com/embed/CGrGToNv3Ak

Noise Map 行为用于创建和处理噪声图。此操作会在行为执行时完成,工作方式与 Render Texture 行为类似。噪声图是一个由数值构成的二维网格,数值范围为 -1 到 1。你可以在项目中使用噪声图创建纹理和程序化生成的内容。通常,噪声图以黑白形式显示,其中 -1 表示黑色,+1 表示白色。

下图展示了一个噪声图及其部分位置上的数值。

噪声贴图

这一切都从此行为生成的3D 噪声图开始,之后你可以对它进行变换、修改等操作。你可以使用 Get Noise Value 行为读取 3D 噪声图中的数值。最后,噪声图可以转换为最终纹理(2D 噪声图),并用作图形;你也可以读取该纹理中的数值。

选择模式

Noise Map 行为有 7 种模式可供选择。

默认模式为 Create Noise Map。你可以轻点预览框下方的下拉菜单,然后选择所需模式来更改模式。

创建噪声图

Create Noise Map 模式会根据行为执行时提供的输入创建新的噪声图。你可以选择要使用的 noise type,每种类型都有各自可编辑的属性,供你调整到想要的效果。

噪声类型
PerlinBillowRidgedSpheres
噪声贴图噪声贴图噪声贴图噪声贴图
VoronoiCylindersCheckerboardConstant
噪声贴图噪声贴图噪声贴图噪声贴图

注意:Cylinders 噪声和 Spheres 噪声看起来可能相同,但它们的结构并不一样!如果沿 y 轴移动它们,你会看到不同的结果。这是因为圆柱体的横截面在视觉上保持不变,而球体的横截面会随着移动而发生变化。

Perlin、Billow 和 Ridged 噪声类型

这些噪声类型都使用相同的算法来创建噪声图,因此它们具有完全相同的图案。它们之间的区别在于数值会经过重新映射,所以呈现出的效果不同。所有这些噪声类型的属性效果都相同。

属性说明
Seed

用于确定创建噪声图起始条件的数值。使用相同的种子会生成完全相同的噪声图;使用不同的种子则会生成不同的噪声图。

种子:1

噪声贴图

种子:2

噪声贴图

种子:3

噪声贴图

Frequency

生成噪声的任意区域内,不同特征的数量和大小。频率值越大,同一区域内出现的特征就越多。

频率:0.1

噪声贴图

频率:0.25

噪声贴图

频率:0.5

噪声贴图

Octave Count

要添加到噪声图中的额外噪声层数。

八度数量:1

持续度:0.8

间隙度:1.1

噪声贴图

八度数量:2

持续度:0.8

间隙度:1.1

噪声贴图

八度数量:5

持续度:0.8

间隙度:1.1

噪声贴图

Persistence

用于决定每个八度对噪声图结果贡献程度的数值。你可以将其理解为各个八度的 振幅。

八度数量:3

持续度:0.5

间隙度:1.5

噪声贴图

八度数量:3

持续度:1

间隙度:1.5

噪声贴图

八度数量:3

持续度:1.5

间隙度:1.5

噪声贴图

持续度 = 1 - 所有八度对结果的贡献相同。

持续度 > 1 - 后续八度对结果的贡献更大。

持续度 < 1 - 后续八度对结果的贡献更小。

Lacunarity

用于决定每个八度增加或减少多少细节的数值。你可以将其理解为各个八度的 频率。

八度数量:3

持续度:1

间隙度:0.5

噪声贴图

八度数量:3

持续度:1

间隙度:1

噪声贴图

八度数量:3

持续度:1

间隙度:1.5

噪声贴图

间隙度 = 1 - 所有八度的细节程度相同。

间隙度 > 1 - 后续八度会包含更多细节。

间隙度 < 1 - 后续八度会包含更少细节。

Voronoi 噪声类型

Voronoi 噪声具有类似细胞的结构,其生成方式是计算像素与一组偏移网格点之间的距离。

属性说明
Seed

用于确定创建噪声图起始条件的数值。使用相同的种子会生成完全相同的噪声图;使用不同的种子则会生成不同的噪声图。

种子:1

噪声贴图

种子:2

噪声贴图

种子:3

噪声贴图

Frequency

生成噪声的任意区域内,细胞的数量和大小。频率值越大,同一区域内的细胞就越多。

频率:0.1

噪声贴图

频率:0.25

噪声贴图

频率:0.5

噪声贴图

Displacement

用于决定不同细胞之间噪声数值变化程度的数值。

位移:-1

噪声贴图

位移:0.5

噪声贴图

位移:1

噪声贴图

⚠️ 注意:禁用距离属性时,负位移不起作用。
Distance

是否将距离值添加到噪声中。

距离:已启用

噪声贴图

距离:已禁用

噪声贴图

Spheres 和 Cylinders 噪声类型

Spheres 和 Cylinders 噪声都以 0,0 为原点呈现同心圆。尽管这两种噪声类型在预览中看起来相同,但从不同角度观察时会有所不同。Spheres 噪声通过将球体层层套叠而成,而 Cylinders 噪声则是通过将圆柱体层层套叠而成。

属性说明
Frequency

给定空间内球体/圆柱体的数量。提高频率会使给定区域内出现更多球体/圆柱体。

频率:0.05

噪声贴图

频率:0.25

噪声贴图

频率:0.5

噪声贴图

Checkerboard 噪声类型

这是较简单的噪声类型之一,由一组数值交替变化的均匀方格组成,呈现棋盘格图案。

属性说明
Square Size

噪声图中每个方格的大小。

方格大小:5

噪声贴图

方格大小:10

噪声贴图

方格大小:20

噪声贴图

Constant 噪声类型

最简单的噪声类型,所有数值都相同。

属性说明
Value

要填入每个位置的数值。

数值:-1

噪声贴图

数值:0

噪声贴图

数值:0.5

噪声贴图

了解预览框

预览框会实时显示噪声图的效果。它展示的是3D 噪声图的一个横截面;如果使用 Get Noise Value 行为,读取的数值就来自这个位置。原点 (0, 0) 位于预览框的左下角。

默认情况下,预览框的大小为 100px × 100px。你可以编辑预览框下方的 size 数值来更改预览框的大小。增大 size 数值可以显示更多噪声图内容。如果你在编辑器中处理的噪声图链很长,也可以_禁用_预览。预览框假定所有行为都已按顺序执行。

预览框的作用只是让你大致了解实际噪声图的外观和效果,并不能完全代表最终结果。修改预览框大小不会影响游戏中的功能——它只用于调整编辑器中的预览。

移动、缩放和旋转噪声图

Transform Noise Map 模式会在行为执行时,在 3D 空间中移动、缩放和旋转所选噪声图。

其位置系统与 hyperPad 的位置系统不同:x 轴和 z 轴分别代表水平和垂直方向,y 轴则作为第三个维度。

你可以把位置理解为屏幕位置。增加 x 值时,相机会向右移动,噪声图在视觉上会向左移动。增加 z 值时,相机会向上移动,噪声图在视觉上会向下移动。增加 y 值时,相机会穿过噪声图,噪声图在视觉上会发生变化。缩放可以理解为屏幕缩放,旋转则可以理解为屏幕旋转。

位置

x 正在变化。

噪声贴图

y 正在变化。

噪声贴图

z 正在变化。

噪声贴图

缩放

x 正在变化。

噪声贴图

y 正在变化。

噪声贴图

z 正在变化。

噪声贴图

旋转

x 正在变化。

噪声贴图

y 正在变化。

噪声贴图

z 正在变化。

噪声贴图

应用颜色

Colorize Noise Map 模式会在行为执行时,为所选噪声图设置颜色。只需更改最小值和最大值对应的颜色即可。

噪声贴图

执行数学运算

Math Operation 模式会在行为执行时,对所选噪声图的所有数值执行数学运算。

下表说明了每种数学运算的作用。变量 v 表示某个数值,变量 a 和 b 表示其他提供的输入数值。

运算函数说明
绝对值f(v) = |v|对数值取绝对值,将负数变为正数。
取反f(v) = -v将数值乘以 -1,相当于改变数值的正负号。
乘方f(v) = v^a将数值提升到另一个数值的幂。
钳制f(v) = clamp(v, a, b)将数值限制在最小值和最大值范围内。
加法f(v) = v + a将一个数值加到该数值上。
减法f(v) = v - a从该数值中减去一个数值。
乘法f(v) = v * a将该数值乘以一个数值。
除法f(v) = v / a将该数值除以一个数值。

合并噪声图

Combine Noise Map 模式会在行为执行时合并两张噪声图。它会使用另一张噪声图在对应位置上的数值,对所选噪声图的所有数值执行数学运算,并生成最终结果。

下表说明了每种运算的作用。变量 v₁ 表示第一张噪声图在某个位置上的数值,变量 v₂ 表示第二张噪声图在完全相同位置上的数值。

运算函数说明
乘方f(v₁,v₂) = v₁^v₂ 将第一张噪声图的数值提升到第二张噪声图中对应数值的幂。
最小值 f(v₁,v₂) = min(v₁,v₂) 取两张噪声图中的最小值。
最大值 f(v₁,v₂) = max(v₁,v₂) 取两张噪声图中的最大值。
加法 f(v₁,v₂) = v₁ + v₂ 将两张噪声图的数值相加。
减法 f(v₁,v₂) = v₁ - v₂ 用第一张噪声图的数值减去第二张噪声图中对应位置的数值。
乘法 f(v₁,v₂) = v₁ * v₂ 将两张噪声图的数值相乘。

扭曲噪声图

Distort Noise Map 模式会在行为执行时偏移噪声图中的数值,从而产生扭曲效果。扭曲噪声图有两种方式:应用湍流,以及使用多张噪声图来偏移数值。

应用湍流

随机移动数值,以产生随机扭曲效果。此示例中,对棋盘格噪声图应用了以下操作。

噪声贴图

属性说明
Seed

用于确定扭曲起始条件的数值。使用完全相同的数值会产生完全相同的扭曲效果;使用不同的数值则会产生不同的扭曲效果。

种子:1

噪声贴图

种子:2

噪声贴图

种子:3

噪声贴图

Frequency

给定区域内扭曲程度变化的频率。频率越高,扭曲效果在同一区域内变化越多。

频率:0.05

噪声贴图

频率:0.1

噪声贴图

频率:0.25

噪声贴图

Power

用于决定扭曲效果强度的数值。

强度:10

噪声贴图

强度:25

噪声贴图

强度:50

噪声贴图

Roughness

用于决定扭曲效果变化速率(变化有多快)的数值。较低的粗糙度会使扭曲较强和较弱区域之间的过渡更平滑;较高的值则会产生快速而粗糙的过渡。

粗糙度:1

噪声贴图

粗糙度:2

噪声贴图

粗糙度:20

噪声贴图

位移

使用由三张噪声图提供的 x、y 和 z 分量,将每个噪声值偏移一个 3D 向量。任何留空的分量都会以数值为 0 的恒定噪声图代替。

噪声贴图

生成最终纹理

Generate Texture 模式会在行为执行时生成最终的噪声图纹理。这样可以更快地读取噪声图中的数值,但生成结果会受区域限制,且之后无法再编辑。

⚠️ 注意:噪声图转换为最终纹理后将无法再编辑。尝试对其执行操作会导致 Modification Prohibited 错误。

属性说明
Texture Size要采样并创建的最终噪声图的宽度和高度(像素)。
Origin开始采样噪声图的位置(像素)。
Sample Count噪声图在 x 和 y 维度上的采样数。采样数越高,可生成的噪声图尺寸越大、细节越丰富。
Seamless启用后会调整纹理,使其可以平铺且接缝不可见。
Asynchronous启用后,纹理会在主线程之外渲染,并在渲染完成时触发行为。这样可以生成较大的噪声图,而不会导致项目卡顿。

从噪声图获取图像

噪声贴图

在 Load Image 行为中,你可以选择 Noise Map 加载类型,然后设置图像分辨率,以获取噪声图的图像。

如果设置的分辨率与原始噪声图不同,噪声图会缩放以适应图像尺寸。

注意:只要行为中包含有效的噪声图,你就可以使用任意 Noise Map 行为!

识别错误

Noise Map 行为可以在预览框中显示错误。错误会以三角形警告图标表示,图标下方还会显示简短的错误消息。

这意味着该行为无法生成预览,也意味着游戏运行期间不会渲染该噪声图。若要确保行为按预期工作,你需要解决错误,并仔细检查所有输入字段。

错误消息含义
Source Missing尚未选择源噪声图行为。
Secondary Source Missing尚未选择次级源噪声图行为(仅适用于 Combine Noise Maps 模式)。
Source Error至少有一个所选源噪声图存在错误。
Self-Reference Prohibited某个所选源噪声图引用了自身,这会导致无限循环。
Modification Prohibited所选源噪声图是最终纹理,因此无法修改,也无法用于生成新纹理。
Unknown Error由于其他问题,预览加载失败。