我一直在Programmers.StackExchange上阅读this article as requested by Nathan Reed。经过一番阅读后,我偶然发现了一段我真的不知道的段落。任何人都可以用更简单的语言向我解释这一段吗? (英语不是我的母语)如果你想阅读原文,你可以在“Moving from interpolation to summation
”下找到它。
单纯形噪声使用来自的贡献的直接求和 每个角落,贡献是一个乘法 梯度斜坡的外推和径向对称 衰减功能。在信号处理术语中,这是一个信号 重建内核。径向衰减是经过精心挑选的 每个角落的影响在越过之前达到零 下一个单纯形的边界。这意味着单点内部的点 只会受到角落贡献的影响 特别是单纯的。
答案 0 :(得分:3)
我需要稍微退一步并定义一些符号,所以道歉没有直截了当地说道。
对于经典的Perlin噪声和单纯形噪声,要获得x点的值,步骤为:
将这些与一些权重结合在一起,因此输出为
w_1 * grad(x_1,x)+ ... + w_k * grad(x_k,x)
该段描述了如何生成权重w_i。对于Perlin噪声,权重线性插值(忽略平滑),因此它们总是加1。对于单纯形噪声,我们可以看到如何在链接中的代码中计算w_i;它
w_i = max(0.6 - d_i^2, 0)^4,
其中d_i = | x-x_i |是从x到x_i的距离。这是“径向对称衰减函数”。它是径向对称的,因为它只取决于距离,而不是x-x_i的方向。衰减只是意味着它随着d_i的增加而减少。
段落的后半部分说明当我们越过两个单纯形的边界,并用一个不同的顶点x_1'替换其中一个邻居,比如说x_1时,系数w_1应该变为0,这样值就匹配了在边界。这个ascii图可能会也可能不会澄清:
1--2
| /|
|/ |
3--1’
噪音值是
w_1 grad(x_1,x)+ w_2 grad(x_2,x)+ w_3 grad(x_3,x)
左上角的和
w_1'grad(x_1',x)+ w_2 grad(x_2,x)+ w_3 grad(x_3,x)
在右下角的三角形中。为了匹配这些,w_1和w_1'应该在边界上为零。