用perlin噪声生成下一个块

实际上,我正尝试使用perlin噪声来产生程序生成的级别。 所以一个块的大小是30×30,它是一个浮点数2d数组,首先我用0和1之间的值填充它。下一步是计算7个八度并合并它们。 最后,我规范化的价值观。 如果我只想创建一个块,所有这些工作都很安静,但是我怎样才能在我的旁边创建一个块,以便它们顺利地融合在一起?

只需设置它,以便您的块有一个原点 ,并将其添加到您用来采样perlin噪声的值。 即

void GenerateChunk(Chunk chunk, Perlin noise) { for(int x = 0; x < chunk.width; x++) { for(int y = 0; y < chunk.height; y++) { chunk.value[x][y] = noise.Generate(x + chunk.origin.x, y + chunk.origin.y); } } } 

现在你在(0,0)有一个块, (0,0)有一个块, (0,0)有一个块,依此类推。

在前面的答案上扩展你所需要的是一个全局坐标的概念。 世界上的每个细胞都有一个全球唯一的坐标,用来生成细胞的随机值。 单元本身以块本地坐标存储在块中,所以你需要一种方法来通过块和偏移来处理每个单元。 Perlin / Simplex噪声的空间相关性然后照顾其余的。

在这篇博文中,我有一些基本的代码示例,用于块地址和“水线”随机生成。 希望我能尽快在更加充实的地图生成系统上发帖。