繁体   English   中英

C#perlin噪声

[英]C# perlin Noise

我已经阅读了一些有关地形生成的Perlin噪声的教程(例如教程),我想确保自己理解并正确实现了它。

我从1维开始:

振幅=持续时间^ i //持续时间可以具有任何值,但大多数情况下为1或更低。 由于以下原因,它会以更高的频率更改图的幅度:

frequency = 2 ^ i // 2个效果,每个图都反映一个八度,虽然不是100%必要,但是示例确实这样做了

“ i”是我们正在查看的八度。

这是我的尝试:

private float[] generateGraph()
{
    float[] graph = new float[output.Width];
    for (int i = 0; i < output.Width; i += 1/frequency)
    {
        graph[i] = random.Next((int)(1000000000000*persistence))/1000000000000f;
    }
    return graph;
}

我将数组想象成一个图形,其中索引是X,值是Y。我为texture.Width / frequency的每一个倍数搜索一个值,直到数组结束。

我现在有一些随机值,必须与线性插值/余弦插值或三次插值连接。 我应该使用哪一个? 当我想将噪声用于2D地形生成时,哪个性能最高?

我想在此之后将图形放置在2D数组中,然后检查每个值,如果其值大于0.5,则应该得到一些材质或纹理。

是这种情况,我该怎么办? 我完全走错了轨道吗?

edit1:在将图形放入2D数组中之前,我想生成其他5个具有较高“ i”的图形并将其混合(应该不太难)。

edit2: 这个实现很好,很容易。

定义“太多的性能”对于2D数据,任何类型的插值都应适用。 如果您真的担心性能,则可以尝试实现Simplex Noise ,但这很难理解和实现,并且在3D及更高版本上确实变得更好。 在2D模式下,它们具有可比性。

同样,通常将perlin噪声实现为x个参数的函数,其中x是维数,并且函数具有内部随机值数组,该数组基于参数的整数值进行访问。 您应该尝试研究原始源代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM