问题标签 [perlin-noise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2063 浏览

python - Python pnoise 返回 0:为什么会这样?

我正在尝试使用Python 的噪声模块生成 2D Perlin 噪声。我试图遵循示例。 该函数只需要一个和输入:pnoise2()
xy

然而,无论我传入什么,函数总是返回0.0. 怎么来的?我错过了什么?

[编辑:2012 年 5 月 10 日]

其他一些示例有效,代码很简单:

所以,由于我不知道* 0.5or + 0.5or * 10+3etc. 值是什么,我尝试了自己,同时排除了其中一些值。在上面的示例中,random.random()返回一个浮点数,例如0.7806等,然后将其乘以16.0得到频率。注意:这已经让我感到困惑,因为八度音阶,我认为应该是一个整数,因为它告诉了连续噪声函数的数量(还要注意它是一个整数1,作为函数中的第三个值传入pnoise2())。无论如何,在函数中,来自 的一些整数range()然后除以frequency,现在大约13.88

但话又说回来:

所以我得出结论x or y必须有小数才能使函数返回0.0.

现在在这之后,我的问题是我不明白为什么。有人可以启发我吗?

0 投票
2 回答
5825 浏览

algorithm - 什么是 3D 更快?Perlin 或 Simplex 噪声?

好的,网上有很多 Perlin 和 Simplex 噪声的比较。但是我真的找不到一个可以在三个维度之间进行简单处理时间比较的文件,这是我最感兴趣的。我读过那个流行的 PDF(甚至理解了其中的大部分内容——耶!)但是我无法回答一个简单的问题:假设最佳实现,哪一个对于 3D 来说更快?

这个stackoverflow question answer表明 Simplex 是我的案例的一个非常明显的赢家。当然,还有其他资源声称完全相反。

然而,一般的说法似乎是 Perlin 噪声的复杂度为 O(2^N),而 Simplex 的复杂度为 O(N^2)。对于 3D 来说,Perlin 是 8,Simplex 是 9。但是,在某个网站上,我发现 Simplex 实际上是 O(N) 的声明。那么这里真实情况是什么,这对于 3D 的速度究竟意味着什么?

我在这里不知所措,我真的主要对 3D 应用程序(用于随机地形生成,包括洞穴)的使用感兴趣,我找不到一个很好的答案来回答这个问题,如果我希望它尽可能快,我应该使用哪个可能的。

所以也许有人可以在这里帮助我:)

0 投票
1 回答
1467 浏览

random - Perlin Noise:计算网格点的伪随机梯度

我似乎在理解这篇Perlin Noise 文章时遇到了一些问题。我需要一些帮助来理解计算每个边界点的伪随机梯度是如何工作的。作者给出了函数:

然后他给出了图像:

4个伪随机梯度?

我理解这篇文章的其余部分,但我不知道他是如何从每个边界点生成这些随机梯度的。协助将不胜感激。谢谢!

0 投票
1 回答
878 浏览

java - 柏林噪音不起作用

我的 Perlin Noise 生成器(再次)有点问题。我已经阅读了多篇关于它如何工作的文章。我用以下代码实现了它:

这是我将所有八度音阶加在一起的时候:

抱歉那里有巨大的代码转储。当我运行它时,代码一切正常,但我没有得到 Perlin 噪音。我只是得到这个:

绝对不是柏林噪音..

这比其他任何东西都更模糊,混合的噪音。即使我添加更多八度音阶和/或增加持久性,我也会得到非常相似的结果。我使用这篇文章作为构建代码的参考(也是这篇文章)。因此,如果有人对为什么这不起作用有任何想法,请发表评论/回答。谢谢!

0 投票
1 回答
833 浏览

actionscript-3 - Actionscript:使用种子创建伪随机数

我正在创建一个在 Flash 中返回 Perlin 噪声数的函数。对于这个函数,我必须有一个从静态种子返回随机数的函数。不幸的是,Actionscript 中的默认 Math.random 不能做到这一点。

我在互联网上搜索了很长时间,但找不到适合我的 perlin-noise 函数的解决方案。

我尝试了以下代码:

此函数确实创建了一个随机数,但种子一直在变化,因此这不适用于 perlin 噪声。

我从我遵循的 Perlin Noise 教程中获得了这个函数:Perlin Noise,但它似乎只返回 1。

如何创建一个在使用相同种子调用时始终返回相同伪随机数的函数?

0 投票
1 回答
1472 浏览

javascript - 我无法在 Javascript 中生成平滑的 Simplex 噪声

我已经尝试了所有方法并阅读了我在互联网上看到的关于 Perlin Noise 或 Simplex Noise 的每一个链接,甚至剖析了一些我认为可以正常工作的 Javascript 示例。

但我仍然得到非常随机的图像......基本上只是电视静态图像。

我的代码如下。我正在使用随机数生成器,以便我可以播种一个值,但我也尝试过 Math.random。

据我所知,在不同倍频程生成的不同图像没有正确插值,或者我从噪声函数转换为 RGB 值的方式是错误的(我试图解决这两个问题。 ..)。

0 投票
2 回答
878 浏览

c++ - 不受欢迎的常规 Perlin 噪音

我正在尝试将 fBm 实现到行星的球体上。为了创建我的球体,我将它从一个立方体转换为这样的。不幸的是,生成的 fBm 显示为镜像补丁。此外,它只在 2 个面上进行(包装其他面的值)。当渲染为球体时,这会导致类似的拉伸外观

噪声函数是由Ken Perlin描述的改进噪声,我将它用于 HLSL:

这个实现在之前的项目中按预期工作,但是对于这个项目,当我使用顶点位置作为输入时,它似乎创建了一个平滑的网格。它是一个单位立方体,因此这些值不是整数,但我无法弄清楚为什么它没有创建典型的 Perlin 噪声纹理。

任何帮助将不胜感激,如果需要,我会提供更多信息。

0 投票
1 回答
3916 浏览

hlsl - 如何在球体上应用柏林噪声?

我正在尝试在HLSL中为XNA项目创建动画太阳。

我正在使用从这个站点学到的Perlin Noise算法在像素着色器中生成它的纹理。

这是我为像素着色器编写的 hlsl 代码:

基本上,在这段代码中,通过将纹理坐标分量 ( TextCoord) 传递给CreatePelinNoise函数,它返回一个用作渐变纹理颜色索引的值 ( myTexture 1px x 256px ):

在此处输入图像描述

AMD RenderMonkey中的结果如下:

在此处输入图像描述

但是在球体的两极有一个难看的不需要的效果,这使得生成的纹理不均匀:

在此处输入图像描述

如何解决这个问题并使生成的纹理均匀?

0 投票
2 回答
3757 浏览

c - “块状”柏林噪音

我最近一直在尝试在 C 中实现 Perlin 噪声生成器(基于Ken Perlin 的网站,使用 SDL 库作为屏幕输出),但输出显示插值块之间的边缘不连续或平滑 - 插值块确实表现为块。

我尝试了四种插值,所有“平滑”的看起来都差不多;相比之下,只有余弦看起来(非常)稍微好一点,而直线看起来很可怕。(以下是余弦和线性) 余弦插值噪声 线性插值噪声

具有讽刺意味的是,如果对噪声进行分形总和(我的最终目的),线性会在“块状”方面消除平滑插值,实际上看起来几乎没问题。 分形和,余弦插值 分形和,线性插值

我很确定我的代码中缺少某些东西或做错了,但我似乎找不到它。

关于什么(或什么条件)可能导致这些块伪影的任何建议?

作为参考,我当前的代码如下:

使用方法:跑步时,按住向上或向下键可放大或缩小噪声网格。

0 投票
0 回答
1170 浏览

.net - 如何使用 perlin.getValue() 在 Libnoise 中生成 3D 高度图?

我一直在使用 Libnoise 的 dotnet 端口使用以下代码在 XNA 中生成一些高度图:

这一切都很好,即使我在提供的不使用 XNA 的 libnoise 样本中得到不同的结果(出于某种原因,我需要降低频率才能在 XNA 中获得相同的结果)。

遗憾的是,没有 NoiseBuilder[3D] 可以生成噪声的 3D 变体,所以我必须使用 perlin 函数自己构建它。但是,即使尝试使用 perlin.getValue() 来生成 2D 噪声似乎也以错误告终;

左 = perlin.getValue(),右 = 法师 2 = NoiseMapBuilderPlane

我也不知道如何合并 SumFractal,但我想这对以后来说是一个担心。