我试图用Perlin噪音产生地形。我了解如何使用笛卡尔坐标生成它,但不能完全包围我的头脑如何在球体上工作。我知道您可以将2D表面投影到球体上,但不会使噪音分布发生混乱?我可以想出在球体表面产生均匀噪声的最佳想法是将球体上的点映射到3D笛卡尔坐标,并使用3D噪声功能。 (基本上是产生一个噪音的立方体,并且“刮掉”角落,使它变圆)。有没有更好的方法我失踪了?
解决方法
这里的真正难题是如何改变使用频率和幅度定义的Perlin噪声基函数(称为八度?),以便它们在一个球体上而不是一个n维平面上。
因此,我们需要在球体上定义一组基本函数(给定方向,频率和幅度)。方向是一个点,比如说零价值。对于球体上的任何点,您可以测量与方向矢量的角距离。您将角距离除以频率,并计算该角度的sin。最后,您可以按幅度缩放。
如果您希望基础功能在二维方面有所不同,您可以做点什么,但您需要一个第二个方向参数来定向投影。您还需要计算两个角度距离。这可能是过度的。如果您有一堆基本功能,上述算法的循环模式可能会完全相互模糊,所以我先尝试一下简单的解决方案。
使用这些Perlin噪声基函数,您现在可以评估您的Perlin噪声在球体上的总和一堆这些。无论您决定对球体进行细分,还是评估顶角,都取决于您。这就是我会做的