我正在尝试使用Perlin噪声生成地形。我知道如何使用笛卡尔坐标系生成它,但是不太理解如何在球体上工作。我知道可以将二维表面投影到球体上,但是扭曲会破坏噪声分布吗?我能想到的最好的方法是将球体上的点映射到三维笛卡尔坐标并使用三维噪声函数来生成表面均匀噪声。(基本上,生成一个噪声立方体并“削减”角落以使其变圆)是否有更好的方法我没有想到?
我正在尝试使用Perlin噪声生成地形。我知道如何使用笛卡尔坐标系生成它,但是不太理解如何在球体上工作。我知道可以将二维表面投影到球体上,但是扭曲会破坏噪声分布吗?我能想到的最好的方法是将球体上的点映射到三维笛卡尔坐标并使用三维噪声函数来生成表面均匀噪声。(基本上,生成一个噪声立方体并“削减”角落以使其变圆)是否有更好的方法我没有想到?
我认为正确的方法是使用三维噪声场(三维空间中每个点都有一个标量噪声值),而不是二维噪声场(二维平面上每个点都有一个噪声值)。
当使用二维噪声函数生成高度图时,您根据噪声值偏移z值。
当使用三维噪声场时,您在球体表面上的点上采样噪声,然后使用噪声值将每个点径向远离或靠近球体的中心进行偏移。
很明显,3D噪声要更难且速度较慢,但您无需处理将表面围绕球体纹理的复杂性,并且由于噪声函数是连续的,因此不存在接缝。
这显然可以应用于任何任意形状。