问题标签 [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 投票
14 回答
212745 浏览

random - GLSL 的随机/噪声函数

由于 GPU 驱动程序供应商通常不费心noiseX在 GLSL 中实现,我正在寻找“图形随机化瑞士军刀”实用功能集,最好优化以在 GPU 着色器中使用。我更喜欢 GLSL,但任何语言都可以为我编写代码,我可以自己将其翻译成 GLSL。

具体来说,我希望:

a)伪随机函数- N 维,在 [-1,1] 或 [0,1] 上的均匀分布,根据 M 维种子计算(理想情况下是任何值,但我可以限制种子例如,0..1 表示均匀的结果分布)。就像是:

b)像 Perlin 噪声这样的连续噪声- 再次,N 维,+- 均匀分布,具有受限的一组值,而且看起来不错(配置外观的一些选项,如 Perlin 级别也可能很有用)。我希望签名如下:

我不太喜欢随机数生成理论,所以我最渴望找到一个预制的解决方案,但我也很欣赏像“这是一个非常好的、高效的 1D rand(),让我解释一下”这样的答案你如何在它上面制作一个好的 N 维 rand() ......”

0 投票
2 回答
3641 浏览

opengl - Perlin 的 OpenGL 噪声

我正在通过一些示例研究 Perlin 的噪声 @ http://dindinx.net/OpenGL/index.php?menu=exemples&submenu=shaders并且不禁注意到他的make3DNoiseTexture()inperlin.c使用noise3(ni)而不是PerlinNoise3D(...)

为什么会这样?Perlin 的噪声不应该是不同噪声频率和幅度的总和吗?

Qestion 2ni, inci, incj, inck代表什么?为什么用nix,y 坐标代替?为什么ni随着
ni[0]+=inci;
inci = 1.0 / (Noise3DTexSize / frequency);
我看到 Hugo Elias 使用 x,y 坐标创建他的 Perlin2D 而增加,PerlinNoise3D(...) 也是如此。

提前致谢 :)

0 投票
1 回答
5339 浏览

3d - 3D Perlin 噪声分析导数

我目前正在使用 Shader Model 4 (DirectX 10 HLSL) 实现 3D Perlin 噪声凹凸映射。产生噪声本身并不是一个大问题(周围有大量的教程和代码),但我还没有找到 3D Perlin 噪声的分析导数。

唯一考虑衍生品的网站是Ińigo Quilez 的网站和相关的GameDev.net 讨论。问题是,在第一个链接中,噪声是基于值的,而不是基于梯度的(这对我来说是一个要求),在第二个链接中,只有 2D 梯度噪声导数。

请注意,我不是在寻找数值导数,因为它们需要生成 4 个相邻的噪声样本,而且开销太大。

有人计算过这些导数吗?是否有使用它们的参考实现?

0 投票
4 回答
53825 浏览

terrain - 地形的 Perlin 噪声生成

我正在尝试实现一些我在网上找到的源代码,以使用 Perlin Noise 生成高度图。我已经成功地使用noise3函数获得了高度图,第三个坐标是一个随机的“种子”,以允许随机高度图。

我的问题是生成的地形相当沉闷 - 我想要山脉,而我正在获得连绵起伏的草原。我已经阅读了一些关于 Perlin Noise 的资料(主要是在这里)。由于我发现源代码的编写显然没有考虑到可读性,而且我对 Perlin Noise 的一般概念的掌握较弱,我无法弄清楚我需要在代码中调整什么(幅度和频率?)创造更剧烈的地形。

更多关于使用 Perlin Noise、Perlin Noise 生成高度图的信息,甚至一些更易破译的代码也将受到欢迎。

编辑:我了解(某种程度上)Perlin Noise 的工作原理,例如,关于幅度和频率,我只是想知道在我上面链接的代码中要更改哪些变量,这些变量用于这两个方面。

0 投票
1 回答
467 浏览

graphics - 我的“柏林”噪声效果着色器产生全白或全黑

我正在尝试在 NVidia FX Composer 中编写一个“perlin”噪声着色器。但是,无论我如何调整噪声函数,它都会返回 100% 白色或 100% 黑色。我不知道如何解决这个问题,甚至不知道问题出在哪里。

编辑:如果你看过这个页面,你可能知道我从哪里得到代码。想我会从一个我已经在 CPU 上工作的方法开始。

请帮忙。

谢谢。

0 投票
2 回答
801 浏览

c# - 如何向我的“perlin”噪声发生器添加比例因子?

我有一个 Perlin 噪声发生器,我试图用它来创建滚动地形。

我有一个中心地形,围绕它的同一侧的八个地形(这些都工作正常)和第二个地形环,它的三倍大。对于这些,我需要我的噪声发生器输出“密集”三倍的噪声,这样我就可以将更大的地形放在更小的地形上,并且除了三倍大的图块(和地图大小)之外,它们会匹配.

我不想只生成更大的地图;这很快就会变得令人望而却步。

我不知道该怎么办; 显而易见的解决方案都以某种方式失败了。

谢谢。

0 投票
4 回答
1470 浏览

c# - Random.Next() - 找到第 N 个 .Next()

给定一个一致播种的 Random:

Random r = new Random(0);

调用r.Next()始终产生相同的系列;那么有没有一种方法可以快速发现该系列中的第N个值,而无需调用r.Next() N次?

我的场景是通过r.Next(). 该应用程序偶尔会从任意索引处的数组中读取一个值。我想通过消除数组来优化内存使用,而是按需生成值。但是暴力破解r.Next()500 万次来模拟数组的第 500 万个索引比存储数组更昂贵。是否可以在没有 / 较少循环的情况下捷径到达 Nth .Next() 值?

0 投票
1 回答
4433 浏览

algorithm - 包装 2D perlin 噪声

我正在使用 Perlin Noise 进行高度图生成算法,我想让它环绕边缘,以便它可以被视为连续的.. 有没有简单的方法或技巧可以做到这一点?我想我需要像球形噪声这样的东西,以便它在水平和垂直方向上环绕。我也会很高兴只有 1 个包裹轴,但两个会更好。

现在我使用的是经典算法,您可以在其中设置要添加多少个八度音阶,以及用于改变每个连续八度音阶之间波的幅度和频率的乘数。

提前致谢!

0 投票
2 回答
1494 浏览

processing - 柏林噪声场如何工作?

我特别看这个例子:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.html

这是它的代码:

http://www.airtightinteractive.com/demos/processing_js/noisefield08.pjs

我想我需要解释这些行在粒子类中的作用:

我知道噪声会根据给定的坐标计算一个值,但我没有得到将粒子的 x pos 除以 mouseY 或 y pos 除以 mouseY 的逻辑。我也不明白“id”是什么,它似乎是一个计数器代表什么,或者接下来的两行完成了什么。

谢谢

0 投票
2 回答
2600 浏览

c++ - 帮助使用 perlin 噪声库 libnoise

当我使用 x、y 和 z 作为整数调用 libnoise 的 getvalue 函数时,结果总是返回 0。这是正常的吗?当我按照教程http://libnoise.sourceforge.net/tutorials/tutorial2.html尝试1.25、0.75、0.5 时,我得到了 0.686347 的预期结果。具体来说,我已经尝试过使用 20 以下的整数。我只是不明白它是如何工作的吗?

任何帮助是极大的赞赏。