如果输入值是整数,libnoise 的 Perlin.GetValue(x, y, z) 方法(使用 C# 端口)返回 0。我怎样才能将二维瓷砖数组(因为数组的索引是整数)映射到噪声值?这对我来说毫无意义,因为即使是 3D 地形最终也取决于整个整数值。对于生成此类 3D 景观的人来说,地形中的这些位置是否总是被限制为 0 值?
编辑:我应该提到我正在使用一个块系统,所以我循环遍历每个块的 [32, 32] 瓦片数组以获取 Perlin 噪声值。我希望通过将世界空间中的块的偏移量添加到数组中图块的 [x, y] 值,我可以拥有连续的地形。无论如何,我尝试了这样的事情,但仍然从噪声函数中得到零:
double temp = generator.GetValue((x + offsetX) / ChunkSize, (y + offsetY) / ChunkSize, 0);
编辑 2:我将噪声函数的值输出到 32x32 纹理并将它们彼此相邻放置。尽管调整了块偏移的 x 和 y 值的输入,但正在产生噪声,但它不是连续的。
编辑3:问题解决了。我的偏移值设置为像素坐标而不是平铺/块坐标。我将块的索引乘以块大小乘以切片大小,而不仅仅是块大小(以切片为单位)。