使用Python和NumPy生成n维Perlin噪声的批次
我终于搞明白了Perlin噪声是怎么运作的,并且用这份很棒的PDF实现了一个逐像素的版本,但显然,这个方法非常慢。
我最初的想法是把它分批生成——也就是说,不是从0.0到1.0一个个像素地处理,而是生成一个numpy.linspace
的数组,然后利用numpy的向量化操作来处理它。不过,这对我来说似乎太复杂了,我总是搞不清楚,写的代码也总是被我删掉。
有没有好心的StackOverflow用户能帮我一下?无论是简单的示例代码,还是每一步的详细解释,都能对我大有帮助。
编辑:我所说的分批是指包含不同空间点的Perlin噪声值的数组,而不是我之前的noise()方法每次只生成一个像素。
1 个回答
1
如果猜得没错,Asmagedon想要提前计算他的噪声纹理,然后再把这些纹理涂到其他不同大小的目标上。
一种方法是使用 scipy.signal.resample,这个工具可以对信号进行插值和下采样。记得它一次只能处理一个维度,所以你需要对每个维度循环处理。
虽然可能有更好的抗锯齿方法,但这个方法比较简单。