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

c - 从 2D 函数制作 3D perlin 噪声函数

因此,我正在尝试使用 openGL 绘制随时间变化的抽象形状。为此,我想使用 Perlin 噪声函数。这段代码(http://www.sorgonet.com/linux/noise_textures/)对我来说是一个完美的开始,除了这里找到的函数只需要两个坐标。我想要一个需要两个空间坐标的,第三个会随时间变化的。

我的问题是:是否可以调整此功能以使用更多坐标?

0 投票
1 回答
10622 浏览

c++ - 使用 Perlin Noise(基于 Tile)生成 2d 地形

我一直在研究我正在开发的应用程序的柏林噪声,它基本上是一个“二维侧视图”外观游戏(模拟)。我不完全了解柏林噪声的工作原理,但大致了解。

我发现这篇带有代码Perlin Noise的文章并决定在之前给出它,我目前设置世界生成的方式是每个“块”都有 16x16 块,我刚刚声明如果 Y >= HEIGHT / 2 全部瓷砖“实心”或“空气”,所以这很有效..但土地很平坦,正如你想象的那样。那就是我认为柏林噪声会出现的地方,所以我使用了在上述网站上找到的代码,但我不确定如何将噪声转换为固体/空气瓷砖。

如您所见,地形不是很逼真 在此处输入图像描述

我更喜欢下面的地形。应该看起来像山脉和连绵起伏的丘陵)我不担心锋利的边缘(正方形) 在此处输入图像描述

我不确定如何遍历 tile 数组以将噪声变为上面

目前我正在像这样迭代瓦片数组(2d),但正如您从第一张图片中看到的那样,它只是随机化瓦片是否是实心的,它不会创建任何连绵起伏的丘陵或山脉。

我还应该提到,在这个 16x16“块”的右侧,还有另一个块需要与这个块匹配,之后的下一个块也是如此。如果有意义的话,块不应该与以前的块相同,只是让它看起来不是单独的块。

任何帮助是极大的赞赏!谢谢

更新

我已经将我的 perlin 函数更改为这个函数,并且我已经实现了 phresnel 的建议:

这样做之后看起来好多了,我X * ChunkX对每个噪音都好像我没有每个块都是一样的,所以现在看起来像下面 在此处输入图像描述

正如你所看到的,地形比以前更像我想要的,但看起来仍然不像真实的地形,因为它不是很平滑,我能做些什么来平滑它的整体外观以创建连绵起伏的山丘平原

我删除了在该噪声值下创建图块,以便更容易看到范围 在此处输入图像描述

如您所见,它看起来不错,只需将这些值“平滑”掉,以免它们看起来像伪随机值。我也想知道为什么左边看到的第一个块在整个过程中具有相同的值。

谢谢。

0 投票
2 回答
1710 浏览

c# - 使用 1D 柏林噪声创建粗略/摇摆不定的线

有人可以帮助我开始使用伪代码或步骤来使用 1D perlin 噪声来绘制粗略/摆动的线条,如页面中所示

http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

摇摇晃晃的圈子
(来源:处女网

我确实发现 aforge.net 具有 1D 和 2D perlin 噪声函数的函数。它显示了使用 2D 噪声生成云的示例。

http://www.aforgenet.com/framework/docs/html/f2f36ce1-ddab-389e-b538-0ccaca81fa87.htm

但我不确定如何使用它来生成摇摆不定的线条。

0 投票
1 回答
825 浏览

interpolation - 创建柏林噪声

我正试图围绕产生二维柏林噪声。我已经能够在一维中生成它,但是我不明白插值是如何在二维中工作的。这是我的八度音阶的样子:

在此处输入图像描述

我知道我应该插入这些值,这将使图像更平滑,但我不明白如何做到这一点。我想使用线性插值,所以我可以在如何做的概念上获得一些帮助吗?

谢谢。

0 投票
1 回答
471 浏览

javascript - 将经典的 Perlin Noise 移植到 JavaScript:获取周期性模式。为什么?(JsFiddle 示例)

我尝试将经典的 Perlin Noise (src: http://mrl.nyu.edu/~perlin/doc/oscar.html#noise ) 移植到 JavaScript - 用于科学目的。我不知道为什么,但我的代码会生成周期性模式而不是随机模式。

您可以在此处找到我的完整代码以及绘制到画布上的示例(精简到一维):http: //jsfiddle.net/YL77D/

我认为问题可以在“noise1”函数中找到:

如果我的 x-seed 是 10.1、10.2、10.3 等。我认为 u 和 v 应该是相同的数字(u 应该基于 10,v 应该基于 11 - 所以 sx 介于两者之间)。我对吗?但在我的代码中,u 和 v 总是不同的。

有任何想法吗?非常感谢你。

0 投票
1 回答
1554 浏览

javascript - 线性插值如何在经典 Perlin 噪声中工作?

昨天我将经典的 Perlin 噪声(源代码:http: //mrl.nyu.edu/~perlin/doc/oscar.html#noise)移植到 JavaScript。奇怪的是,生成的噪音看起来与我预期的有很大不同。经典的 Perlin 噪声使用线性插值/lerp,但噪声是平滑的而不是边缘的。它看起来更像余弦插值。似乎 Perlin 以不同的方式使用 lerp 函数。

这是移植到 JavaScript 的原始代码(带有画布图片):http: //jsfiddle.net/fDTbv/

这是有趣的部分:

u 和 v 总是在变化。为什么?不应该是 u 和 v 代表 sx 之前的点和 sx 之后的点,因此不要改变?

将代码更改为“我所期望的”它的外观:http: //jsfiddle.net/8Xv8G/

有趣的部分:

我的问题:为什么 Perlin 使用 lerp 函数的方式如此不同?

0 投票
1 回答
199 浏览

raphael - 如何在 Raphael.js 中实现 Perlin 噪声?

我想在 Raphael.js中创建Perlin 噪声的实现。为了演示效果,这里有一个使用 Flash-AS3 的示例实现

几点注意事项:

  • 结果不必与示例完美匹配,类似的渲染就足够了。
  • 我想将效果放在圆形内。
  • 我在 Windows XP 上使用 Raphael 2.01、Firefox 12.0

我已经在 Google 上搜索了实现此功能的方法,但似乎找不到任何方法。如何才能做到这一点?

0 投票
1 回答
3775 浏览

perlin-noise - Perlin 噪声梯度函数

我正在寻找使 3D Perlin 噪声算法适应较低维度的方法,但我在使用梯度函数时遇到了问题,因为我不完全理解其中的原因。

原始的 Perlin 梯度函数有四个参数:ahash和三维坐标(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

0from的返回值11构成一种模式,因为每个组合都表示一次。然而,最后四个是重复的。为什么选择它们来拟合最后四个返回值?(x, y)二维和一(x)维的类似案例是什么?

0 投票
1 回答
838 浏览

c++ - 柏林噪音问题

我创建了一个 Perlin 噪声函数。我的问题是,当我从噪声中生成地形图时,它最终会变成块状,与我见过的云状图像完全不同。我很好奇我做错了什么(如果有的话)。这是我的代码:

主文件

perlinnoise.cpp

0 投票
1 回答
379 浏览

unity3d - Unity TerrainData 与绝对海拔不兼容?

Unity TerrainData 结构是否可以采用绝对高程?我有一个生成绝对海拔的地形生成器,但它们很大。振幅最高的 perlin 八度音阶决定了整个地图的高度,振幅为 2500,波长为 10000。为了让我的地图正确平铺并在高度之间无缝过渡,我需要能够使用这个绝对高度系统。我会缩小生成器的输出以适应有限的空间(0 到 1 之间),并拉伸 TerrainData 的 y 比例,但它会失去太多的精度。

我能做些什么?有没有办法可以使用可能相差多达 2500 米的海拔?可能很重要的一件事是,单个地形对象的空间永远不会有那么大的变化,但是在许多很多地形对象中,玩家有可能穿越那种高度。