生成噪声的任意区域内,不同特征的数量和大小。频率值越大,同一区域内出现的特征就越多。
|
频率:0.1 |
频率:0.25 |
频率:0.5 |
//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,每种类型都有各自可编辑的属性,供你调整到想要的效果。
| 噪声类型 | ||||||||||||||||
|
注意:Cylinders 噪声和 Spheres 噪声看起来可能相同,但它们的结构并不一样!如果沿 y 轴移动它们,你会看到不同的结果。这是因为圆柱体的横截面在视觉上保持不变,而球体的横截面会随着移动而发生变化。
Perlin、Billow 和 Ridged 噪声类型
这些噪声类型都使用相同的算法来创建噪声图,因此它们具有完全相同的图案。它们之间的区别在于数值会经过重新映射,所以呈现出的效果不同。所有这些噪声类型的属性效果都相同。
| 属性 | 说明 | |||
| Seed |
用于确定创建噪声图起始条件的数值。使用相同的种子会生成完全相同的噪声图;使用不同的种子则会生成不同的噪声图。
| |||
| Frequency |
生成噪声的任意区域内,不同特征的数量和大小。频率值越大,同一区域内出现的特征就越多。
| |||
| Octave Count |
要添加到噪声图中的额外噪声层数。
| |||
| Persistence |
用于决定每个八度对噪声图结果贡献程度的数值。你可以将其理解为各个八度的
持续度 = 1 - 所有八度对结果的贡献相同。 持续度 > 1 - 后续八度对结果的贡献更大。 持续度 < 1 - 后续八度对结果的贡献更小。 | |||
| Lacunarity |
用于决定每个八度增加或减少多少细节的数值。你可以将其理解为各个八度的
间隙度 = 1 - 所有八度的细节程度相同。 间隙度 > 1 - 后续八度会包含更多细节。 间隙度 < 1 - 后续八度会包含更少细节。 |
Voronoi 噪声类型
Voronoi 噪声具有类似细胞的结构,其生成方式是计算像素与一组偏移网格点之间的距离。
| 属性 | 说明 | ||||
| Seed |
用于确定创建噪声图起始条件的数值。使用相同的种子会生成完全相同的噪声图;使用不同的种子则会生成不同的噪声图。
| ||||
| Frequency |
生成噪声的任意区域内,细胞的数量和大小。频率值越大,同一区域内的细胞就越多。
| ||||
| Displacement |
用于决定不同细胞之间噪声数值变化程度的数值。
| ||||
| Distance |
是否将距离值添加到噪声中。
|
Spheres 和 Cylinders 噪声类型
Spheres 和 Cylinders 噪声都以 0,0 为原点呈现同心圆。尽管这两种噪声类型在预览中看起来相同,但从不同角度观察时会有所不同。Spheres 噪声通过将球体层层套叠而成,而 Cylinders 噪声则是通过将圆柱体层层套叠而成。
|
Checkerboard 噪声类型
这是较简单的噪声类型之一,由一组数值交替变化的均匀方格组成,呈现棋盘格图案。
| 属性 | 说明 | |||
| Square Size |
噪声图中每个方格的大小。
|
Constant 噪声类型
最简单的噪声类型,所有数值都相同。
| 属性 | 说明 | |||
| Value |
要填入每个位置的数值。
|
预览框会实时显示噪声图的效果。它展示的是3D 噪声图的一个横截面;如果使用 Get Noise Value 行为,读取的数值就来自这个位置。原点 (0, 0) 位于预览框的左下角。
默认情况下,预览框的大小为 100px × 100px。你可以编辑预览框下方的 size 数值来更改预览框的大小。增大 size 数值可以显示更多噪声图内容。如果你在编辑器中处理的噪声图链很长,也可以_禁用_预览。预览框假定所有行为都已按顺序执行。
预览框的作用只是让你大致了解实际噪声图的外观和效果,并不能完全代表最终结果。修改预览框大小不会影响游戏中的功能——它只用于调整编辑器中的预览。
Transform Noise Map 模式会在行为执行时,在 3D 空间中移动、缩放和旋转所选噪声图。
其位置系统与 hyperPad 的位置系统不同:x 轴和 z 轴分别代表水平和垂直方向,y 轴则作为第三个维度。
你可以把位置理解为屏幕位置。增加 x 值时,相机会向右移动,噪声图在视觉上会向左移动。增加 z 值时,相机会向上移动,噪声图在视觉上会向下移动。增加 y 值时,相机会穿过噪声图,噪声图在视觉上会发生变化。缩放可以理解为屏幕缩放,旋转则可以理解为屏幕旋转。
|
位置
| |||
|
缩放
| |||
|
旋转
|
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 |
用于确定扭曲起始条件的数值。使用完全相同的数值会产生完全相同的扭曲效果;使用不同的数值则会产生不同的扭曲效果。
| |||
| Frequency |
给定区域内扭曲程度变化的频率。频率越高,扭曲效果在同一区域内变化越多。
| |||
| Power |
用于决定扭曲效果强度的数值。
| |||
| Roughness |
用于决定扭曲效果变化速率(变化有多快)的数值。较低的粗糙度会使扭曲较强和较弱区域之间的过渡更平滑;较高的值则会产生快速而粗糙的过渡。
|
位移
使用由三张噪声图提供的 x、y 和 z 分量,将每个噪声值偏移一个 3D 向量。任何留空的分量都会以数值为 0 的恒定噪声图代替。
Generate Texture 模式会在行为执行时生成最终的噪声图纹理。这样可以更快地读取噪声图中的数值,但生成结果会受区域限制,且之后无法再编辑。
⚠️ 注意:噪声图转换为最终纹理后将无法再编辑。尝试对其执行操作会导致
Modification Prohibited错误。
| 属性 | 说明 |
| Texture Size | 要采样并创建的最终噪声图的宽度和高度(像素)。 |
| Origin | 开始采样噪声图的位置(像素)。 |
| Sample Count | 噪声图在 x 和 y 维度上的采样数。采样数越高,可生成的噪声图尺寸越大、细节越丰富。 |
| Seamless | 启用后会调整纹理,使其可以平铺且接缝不可见。 |
| Asynchronous | 启用后,纹理会在主线程之外渲染,并在渲染完成时触发行为。这样可以生成较大的噪声图,而不会导致项目卡顿。 |
|
在 Load Image 行为中,你可以选择 如果设置的分辨率与原始噪声图不同,噪声图会缩放以适应图像尺寸。
|
Noise Map 行为可以在预览框中显示错误。错误会以三角形警告图标表示,图标下方还会显示简短的错误消息。
这意味着该行为无法生成预览,也意味着游戏运行期间不会渲染该噪声图。若要确保行为按预期工作,你需要解决错误,并仔细检查所有输入字段。
| 错误消息 | 含义 |
| Source Missing | 尚未选择源噪声图行为。 |
| Secondary Source Missing | 尚未选择次级源噪声图行为(仅适用于 Combine Noise Maps 模式)。 |
| Source Error | 至少有一个所选源噪声图存在错误。 |
| Self-Reference Prohibited | 某个所选源噪声图引用了自身,这会导致无限循环。 |
| Modification Prohibited | 所选源噪声图是最终纹理,因此无法修改,也无法用于生成新纹理。 |
| Unknown Error | 由于其他问题,预览加载失败。 |