不规则
对噪波纹理进行采样。
扰动顶点。
保持细胞扁平。
细分单元边。
本教程是关于 hexagon maps系列的第四部分。到目前为止,我们的网格是一个严格的蜂窝。在本期中,我们将引入不规则性,使地图看起来更自然。
不再规则的六边形
1. 噪声
为了增加不规则性,我们需要随机化。但不是真正的随机性。我们希望在编辑地图时保持一致。否则,每次我们做出改变时,事情都会发生变化。所以我们需要一种可复制的伪随机噪声。
柏林噪声是一个很好的选择。它在任何点上都是可复制的。当多个频率组合在一起时,它也会产生噪声,这些噪声在长距离内变化很大,但在小距离内保持相当相似。这会产生相对平滑的扭曲。靠得很近的点往往粘在一起,而不是在相反的方向上扭曲。
我们可以通过编程生成柏林噪声。“噪波”教程介绍了如何执行此操作。但我们也可以从预先生成的噪声纹理中进行采样。使用纹理的优点是,它比计算多频率柏林噪声更容易、速度更快。缺点是纹理占用更多内存,只覆盖一小部分噪波。因此,它需要是一个平铺纹理,并且必须相当大才能使平铺不那么明显。
1.1 噪声贴图
我们将使用纹理,因此您现在不必阅读“噪波”教程。这意味着我们需要这样的纹理。这里有一个。
平铺分形柏林噪波纹理。
上面的纹理包含平铺多频柏林噪波。这是一个灰度图像,平均值为0.5,极值接近0和1。
但是等等,这只是每个点的一个值。如果我们想要3D失真,我们至少需要三个伪随机样本!所以我们需要两个额外的纹理,每个纹理中有不同的噪声。
我们可以这样做,或者我们可以在每个颜色通道中存储不同的噪波值。这使我们可以在一个纹理中存储多达四种不同的噪波图案。这里就是这样一个纹理。