unity3d 在Unity中替换Mathf. Perlin噪声

wpx232ag  于 2022-11-25  发布在  Perl
关注(0)|答案(1)|浏览(298)

我在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,这在一些计算中是有用的,我请求帮助知道如何正确地设置它,或者其他不会导致最终结果不对称的选项;
我正在尝试生成一个基于柏林噪声的伪随机纹理。基本上是为了制作随机大陆,就像一个随机行星。其他的计算高度,生物群落等...

o75abkj4

o75abkj41#

正如pixlHero在评论中所建议的,我使用了两个插值噪声,结果是:

所以,对于其他同样有疑问的人,我让这个问题帮他们一把。

相关问题