0

如果输入值是整数,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:问题解决了。我的偏移值设置为像素坐标而不是平铺/块坐标。我将块的索引乘以块大小乘以切片大小,而不仅仅是块大小(以切片为单位)。

4

1 回答 1

0

输入值Perlin.GetValue(x, y, z)是双精度值,在技术上不限于 0.0-1.0 范围,但我建议您将所有数组索引除以该维度中数组的长度,这样它们都在 0.0-1.0 范围内,而您应该得到很好的噪声值,如果噪声太大,您可以使用缩放来调整索引,例如在 0.0 到 2.0 之间缩放可能会产生更平滑的噪声。

于 2014-05-12T07:59:06.520 回答