问题标签 [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.
c - 从 2D 函数制作 3D perlin 噪声函数
因此,我正在尝试使用 openGL 绘制随时间变化的抽象形状。为此,我想使用 Perlin 噪声函数。这段代码(http://www.sorgonet.com/linux/noise_textures/)对我来说是一个完美的开始,除了这里找到的函数只需要两个坐标。我想要一个需要两个空间坐标的,第三个会随时间变化的。
我的问题是:是否可以调整此功能以使用更多坐标?
c++ - 使用 Perlin Noise(基于 Tile)生成 2d 地形
我一直在研究我正在开发的应用程序的柏林噪声,它基本上是一个“二维侧视图”外观游戏(模拟)。我不完全了解柏林噪声的工作原理,但大致了解。
我发现这篇带有代码Perlin Noise的文章并决定在之前给出它,我目前设置世界生成的方式是每个“块”都有 16x16 块,我刚刚声明如果 Y >= HEIGHT / 2 全部瓷砖“实心”或“空气”,所以这很有效..但土地很平坦,正如你想象的那样。那就是我认为柏林噪声会出现的地方,所以我使用了在上述网站上找到的代码,但我不确定如何将噪声转换为固体/空气瓷砖。
如您所见,地形不是很逼真
我更喜欢下面的地形。应该看起来像山脉和连绵起伏的丘陵)我不担心锋利的边缘(正方形)
我不确定如何遍历 tile 数组以将噪声变为上面
目前我正在像这样迭代瓦片数组(2d),但正如您从第一张图片中看到的那样,它只是随机化瓦片是否是实心的,它不会创建任何连绵起伏的丘陵或山脉。
我还应该提到,在这个 16x16“块”的右侧,还有另一个块需要与这个块匹配,之后的下一个块也是如此。如果有意义的话,块不应该与以前的块相同,只是让它看起来不是单独的块。
任何帮助是极大的赞赏!谢谢
更新
我已经将我的 perlin 函数更改为这个函数,并且我已经实现了 phresnel 的建议:
这样做之后看起来好多了,我X * ChunkX
对每个噪音都好像我没有每个块都是一样的,所以现在看起来像下面
正如你所看到的,地形比以前更像我想要的,但看起来仍然不像真实的地形,因为它不是很平滑,我能做些什么来平滑它的整体外观以创建连绵起伏的山丘和平原
我删除了在该噪声值下创建图块,以便更容易看到范围
如您所见,它看起来不错,只需将这些值“平滑”掉,以免它们看起来像伪随机值。我也想知道为什么左边看到的第一个块在整个过程中具有相同的值。
谢谢。
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
但我不确定如何使用它来生成摇摆不定的线条。
interpolation - 创建柏林噪声
我正试图围绕产生二维柏林噪声。我已经能够在一维中生成它,但是我不明白插值是如何在二维中工作的。这是我的八度音阶的样子:
我知道我应该插入这些值,这将使图像更平滑,但我不明白如何做到这一点。我想使用线性插值,所以我可以在如何做的概念上获得一些帮助吗?
谢谢。
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 总是不同的。
有任何想法吗?非常感谢你。
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 函数的方式如此不同?
raphael - 如何在 Raphael.js 中实现 Perlin 噪声?
我想在 Raphael.js中创建Perlin 噪声的实现。为了演示效果,这里有一个使用 Flash-AS3 的示例实现。
几点注意事项:
- 结果不必与示例完美匹配,类似的渲染就足够了。
- 我想将效果放在圆形内。
- 我在 Windows XP 上使用 Raphael 2.01、Firefox 12.0
我已经在 Google 上搜索了实现此功能的方法,但似乎找不到任何方法。如何才能做到这一点?
perlin-noise - Perlin 噪声梯度函数
我正在寻找使 3D Perlin 噪声算法适应较低维度的方法,但我在使用梯度函数时遇到了问题,因为我不完全理解其中的原因。
原始的 Perlin 梯度函数有四个参数:ahash
和三维坐标(x, y, z)
。根据 的值返回函数的结果,hash mod 16
如下所示。
0
:x + y
1
:-x + y
2
:x - y
3
:-x - y
4
:x + z
5
:-x + z
6
:x - z
7
:-x - z
8
:y + z
9
:-y + z
10
:y - z
11
:-y - z
12
:y + x
13
:-y + z
14
:y - x
15
:-y - z
0
from的返回值11
构成一种模式,因为每个组合都表示一次。然而,最后四个是重复的。为什么选择它们来拟合最后四个返回值?(x, y)
二维和一(x)
维的类似案例是什么?
c++ - 柏林噪音问题
我创建了一个 Perlin 噪声函数。我的问题是,当我从噪声中生成地形图时,它最终会变成块状,与我见过的云状图像完全不同。我很好奇我做错了什么(如果有的话)。这是我的代码:
主文件
perlinnoise.cpp
unity3d - Unity TerrainData 与绝对海拔不兼容?
Unity TerrainData 结构是否可以采用绝对高程?我有一个生成绝对海拔的地形生成器,但它们很大。振幅最高的 perlin 八度音阶决定了整个地图的高度,振幅为 2500,波长为 10000。为了让我的地图正确平铺并在高度之间无缝过渡,我需要能够使用这个绝对高度系统。我会缩小生成器的输出以适应有限的空间(0 到 1 之间),并拉伸 TerrainData 的 y 比例,但它会失去太多的精度。
我能做些什么?有没有办法可以使用可能相差多达 2500 米的海拔?可能很重要的一件事是,单个地形对象的空间永远不会有那么大的变化,但是在许多很多地形对象中,玩家有可能穿越那种高度。