Perlin噪声梯度函数

时间:2012-05-24 01:03:31

标签: perlin-noise

我正在寻求将3D Perlin噪声算法调整到较低的维度,但是我遇到了渐变函数的问题,因为我不完全理解这个推理。

原始的Perlin渐变函数有四个参数:hash和三维坐标(x, y, z)。函数的结果将根据hash mod 16的值返回,如下所示。

  • 0x + y
  • 1-x + y
  • 2x - y
  • 3-x - y
  • 4x + z
  • 5-x + z
  • 6x - z
  • 7-x - z
  • 8y + z
  • 9-y + z
  • 10y - z
  • 11-y - z
  • 12y + x
  • 13-y + z
  • 14y - x
  • 15-y - z

011的返回值构成了一种模式,因为每个组合都表示一次。然而,最后四个是重复的。他们为什么选择适合最后四个回报值?那两个(x, y)和一个(x)维度的类似情况会是什么?

1 个答案:

答案 0 :(得分:10)

......迟到的答案比没有好? ; - )

“改进噪声”实现中的grad函数计算向量x,y,z和伪随机梯度向量之间的点积。

在此实现中,梯度向量从12个选项中选择。 它们会降低选择的一致性并添加数字12和14,因为hash & 15hash % 12更快

对于2D perlin噪声,我只使用了4个梯度向量而没有任何明显的问题:

return ((hash & 1) ? x : -x) + ((hash & 2) ? y : -y);
相关问题