【发布时间】:2020-08-02 19:52:22
【问题描述】:
我正在使用 Unity 的 Mathf.PerlinNoise() 函数来产生我的柏林噪声。函数的输出总是介于 0.45f 和 0.55f 之间,即使 perlin 函数应该输出 0 到 1 之间的值。
您可能认为这是因为我输入了相似的值,但事实并非如此。我已经改变了输入,比如改变比例、改变偏移量,当然还有不同的 x 和 y,但它们似乎都产生了相同的值。
public static float terrainNoise(int x, int y, int seed, float scale, int offset)
{
System.Random prng = new System.Random(seed);
float seedOffsetX = prng.Next(-100000, 100000);
float seedOffsetY = prng.Next(-100000, 100000);
float sampleX = ((x / LookUpData.chunkWidth) * scale) + 0.01f;
float sampleY = ((y / LookUpData.chunkHeight) * scale) + 0.01f;
float value = Mathf.PerlinNoise(sampleX + offset + seedOffsetX, sampleY + offset + seedOffsetY);
Mathf.Clamp(value, 0, 1);
return value;
}
【问题讨论】:
-
'噪声在每个点不包含完全随机的值,而是由“波”组成,其值在整个模式中逐渐增加和减少。'看起来像它的工作。
标签: c# unity3d perlin-noise