我在Youtube上看了一些教程,试图制作我自己的体素引擎。问题是,我找到的所有教程都使用Mathf.PerlinNoise(float x, float z)
作为获取噪声的主要方法。所以,我对它有一个问题,那就是对称性。如果x或z是负的,它就像是正的,这就发生了。x1c 0d1x
在另一方面,使用FastNoiseLite,我曾经得到一个完整的黄色屏幕。
用于生成噪声的代码为:
public GSC_Noise(int seed)
{
Random.InitState(seed);
gNoise = new FastNoiseLite(seed);
}
//From B3AGZ tutorial.
//GSC_BlockHelper.ChunkSize is a static readonly Vector3Int
public float Get2DNoise(int x, int z, int offset, float scale)
=> Mathf.PerlinNoise((x + 0.5f) / GSC_BlockHelper.ChunkSize.x * scale + offset,
(z + 0.5f) / GSC_BlockHelper.ChunkSize.z * scale + offset);
public float Get2DNoiseFast(int x, int z, int offset, float scale)
=> gNoise.GetNoise((x + 0.5f) / GSC_BlockHelper.ChunkSize.x * scale + offset,
(z + 0.5f) / GSC_BlockHelper.ChunkSize.z * scale + offset);
由于FastNoiseLite返回的范围是-1~1,而Mathf.PerlinNoise返回的范围是0~1,这在一些计算中是有用的,我请求帮助知道如何正确地设置它,或者其他不会导致最终结果不对称的选项;
我正在尝试生成一个基于柏林噪声的伪随机纹理。基本上是为了制作随机大陆,就像一个随机行星。其他的计算高度,生物群落等...
1条答案
按热度按时间o75abkj41#
正如pixlHero在评论中所建议的,我使用了两个插值噪声,结果是:
所以,对于其他同样有疑问的人,我让这个问题帮他们一把。