【问题标题】:Generating batches of n-dimensional Perlin noise using Python and NumPy使用 Python 和 NumPy 生成一批 n 维 Perlin 噪声
【发布时间】:2011-12-24 13:08:50
【问题描述】:

我设法掌握了 Perlin 噪声的工作方式,并使用 this awesome PDF 作为参考实现了一次像素版本,但是,很明显它非常慢。

首先想到的是批量生成它——而不是遍历从 0.0 到 1.0 的每个像素,生成一个 numpy.linspace 然后使用 numpy 的矢量化操作对其进行操作,但这似乎超出了我的范围,我一直迷路并删除我写的所有内容。

可以帮助我吗?尽可能少的示例代码和每一步的详细解释都会对我有很大帮助。

编辑:我所说的批次是指在空间的不同点包含柏林噪声值的数组,而不是我的 noise() 方法一次只生成一个像素。

【问题讨论】:

  • 你能澄清你的“批量”想法吗?我对 Perlin 噪声本身一无所知,但无论如何我也许可以提供帮助。您是否尝试预先生成纹理,然后将它们插入到目标表面上?
  • 批量我的意思是一次超过一个像素,例如一个包含噪声的数组,我以后可以使用它而不是逐个像素地生成它,每次都调用python函数。
  • 啊 - 我明白了,所以你正在尝试使用 numpy 的矢量化,但它并不顺利。这不是那么不寻常。您的代码是否足够简单以至于您可以将其发布到我们可以查看的地方?如果事情真的很复杂,你最好用 C 语言编写一个函数来完成一次像素的工作,然后将它包装在一个矢量化的 Python 函数中。

标签: python numpy perlin-noise


【解决方案1】:

如果猜对了,那么 Asmagedon 想要逐次计算他的噪声纹理,然后将它们绘制到其他不同大小的目标上。

一种方法是使用scipy.signal.resample,它可以对信号进行插值和二次采样。从记忆中,它一次只能在一个维度上工作——只需循环这些维度。

可能有更好的方法来做抗锯齿,但这个很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 2013-06-30
    • 2020-08-30
    • 1970-01-01
    • 2020-06-06
    • 2012-03-08
    • 2014-05-30
    相关资源
    最近更新 更多