相干球面噪声?

时间:2013-06-13 19:36:23

标签: random noise

有谁知道我怎么能够产生以下类型的噪音?

  • 三个输入,三个输出
  • 输出必须始终产生相同幅度的矢量
  • 如果它收到与其他时间相同的输入,则必须返回相同的输出
  • 它必须是连续的(如果它看起来很光滑,就像perlin噪音那样最好)
  • 它必须看起来相当随机

编辑:如果它是各向同性的也会很好,但这并不是完全必要的。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,它可能不会很快,但它可以完成这项工作(这是一种类似于c的伪代码,旨在简化其他语言的移植)。

vec3 sphereNoise(vec3 input, float radius)
{
    vec3 result;
    result.x = simplex(input.x, input.y); //could use perlin instead of simplex
    result.y = simplex(input.y, input.z); //but I prefer simplex for its speed
    result.z = simplex(input.z, input.x); //and its lack of directional artifacts

    //uncomment the following line to make it a spherical-shell noise
    //result.normalize();
    result *= radius;
    return result;
}