【发布时间】:2014-02-15 20:01:51
【问题描述】:
我已经阅读了一些关于 perlin 噪声的教程(例如 this 一个)以用于我的地形生成,我想确保我理解它并且能够正确地实现它。
我从 1 维开始:
幅度 = 持久性^i // 持久性可以有任何值,但大多数情况下它是 1 或更低。它以更高的频率改变图形的幅度,因为:
频率 = 2^i //两个效果,每个图表反映一个八度音阶,这不是 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。我为每个纹理的倍数搜索一个值。宽度/频率直到数组结束。
我现在使用一些随机值,我必须将它们与线性插值/余弦插值或三次插值连接。 我应该使用哪一个?当我想在 2D 中使用噪波生成地形时,哪个性能最高?
我想在这之后将图形放在一个二维数组中,然后检查每个值,如果它高于 0.5,它应该得到一些材质或纹理。
是这种情况,我该怎么办?我完全走错了吗?
edit1:在我将图形放入二维数组之前,我想生成可能 5 个具有更高“i”的图形并将它们混合(这应该不会太难)。
edit2: this 实现很好而且“简单”。
【问题讨论】:
标签: c# perlin-noise