问题标签 [simplex-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 投票
0 回答
364 浏览

random - 为什么环绕坐标不能使我的单纯形噪声平铺无缝?

我一直在尝试创建一个在 shadertoy 中重复的假 3D 纹理(请参见此处,使用 wasd 移动,箭头键旋转)但如您所见,它不会平铺。

我自己产生噪音,并且在这个最小示例中隔离了噪音产生,但是无论我做什么,它似乎都不会产生无缝平铺的噪音。

这是代码:

我尝试过的位置 % 环绕值、通过空隙度修改环绕值以及在当前使用的扭曲 % 环绕值之后(查找simplexNoiseV核心算法,accumulateSimplexNoiseV查找八度音总和)。

根据这些 答案,它应该很简单(用于散列的 mod 位置),但这显然不起作用。我不确定这是否部分是因为我的散列函数不是 Ken Perlin 的,但似乎这不会有所作为。似乎坐标的倾斜应该使这种方法根本不起作用,但显然其他人已经成功了。

这是一个不平铺的示例:在此处输入图像描述

为什么环绕坐标不能使我的单纯形噪声平铺无缝?

更新:

我仍然没有解决这个问题,但似乎平铺沿着简单性工作正常,而不是这里看到的网格:

在此处输入图像描述

我是否必须修改我的模数以解决倾斜问题?

0 投票
0 回答
260 浏览

java - 如何在 JavaFX 画布上快速绘制单纯形噪声?

我正在使用 Kurt Spencer 在此处找到的 OpenSimplexNoise 实现。

我试图尽可能快地在 512x52 JavaFX Canvas 上绘制产生的噪声。

注意:为简单起见,以下代码中未显示,绘图函数采用缩放级别(JavaFX Slider 元素的值)。从该滑块上的更改侦听器调用绘图函数。

我试过的

GraphicsContext setFill() 和 fillRect()

使用噪声的值设置填充,然后在适当的位置为 1x1 矩形调用 fillRect():

结果:尽管显然大约需要 40 毫秒,但这严重滞后于我的计算机,一次需要 5 多秒才能显示结果。这很糟糕。我不确定这里的幕后发生了什么导致程序难以渲染所有内容......

使用 PixelWriter

我的下一个改进来自使用 PixelWriter:

结果:平均 25 毫秒。这要好得多。没有真正的延迟,应用程序感觉流畅且响应迅速。

使用 PixelFormat 写入

我们使用PixelFormat.getByteRgbInstance();并将噪声值写入一个大字节数组,然后将其与 PixelFormat 一起传递给 pixelWriter。

结果:每次抽签平均 16 毫秒。这要好得多,对于 512x512,它非常平滑。在这里查看 gif

但是如果我想生成更大的地图呢?对于 1024x1024 的画布,绘制时间约为 65 毫秒,并且明显不稳定。如果我想添加多个八度音阶或根据某些条件更改颜色怎么办?所有这些都会增加抽签时间,所以我必须尽可能地减少它。

有什么改进建议吗?

0 投票
1 回答
991 浏览

java - 2D Platformer 程序世界生成器

我目前正在开发一个基于 2D 瓷砖的 Java 平台游戏。不是为了赚钱,只是为了好玩。最近,我发现了一款​​名为 Caveblazers 的游戏。它也是一个 2D 平台游戏,我认为它也是基于瓷砖的。它的世界是程序生成的,每次玩游戏时看起来都不同。我尝试使用 perlin 噪声和单纯形噪声进行试验,但没有按计划进行。我什至不能确定,这个水平是可能的,没有墙壁阻碍目标。我的游戏将是基于局域网的游戏,也在洞穴中。所以我的问题是如何生成这些看起来很棒的洞穴以及如何找到放置脚手架和箱子的位置。非常感谢您的帮助,因为它必须在下周才能玩,我很想得到一个快速的答案!

这就是我希望的样子:

0 投票
1 回答
21 浏览

java - SimplexNoise 没有给出正确的图像

我目前正在玩弄噪音,比如 Perlin 和 SimplexNoise。当我将 Noise 函数集成到我的代码中时,我得到了一些看起来像静态的东西,这显然不应该是静态的。

输出

这是我当前的代码:

我使用的噪声来自这里:https ://github.com/SRombauts/SimplexNoise/blob/master/references/SimplexNoise.java

0 投票
1 回答
158 浏览

processing - 处理噪声实现具有严格的正范围

页面以及 p5.js 的文档中,Perlin 噪声被描述为具有 [0,1] 的输出范围,但我发现的所有其他实现都有一个关于 0 对称的小范围,而且似乎这也是理论上应该成立的。Processing 对 Perlin 噪声的实现是怎么回事?他们在做什么不同?我如何在 python 中复制它?

0 投票
1 回答
442 浏览

python - 单纯形噪声生成一组图像

我需要使用simplex noise生成一组图像。您可以在下面找到我开发的代码和输出图像。

如何让代码在每次运行时生成不同的图像?目前,每次运行代码时我都会得到相同的图像。以及如何调整图像中特征的大小?我想要一些少盐和胡椒的东西。

输出图像:

在此处输入图像描述

0 投票
1 回答
348 浏览

c++ - 单工噪声范围太小

我正在使用以下单纯形噪声的实现(附录 B): https ://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf

这是肯佩林自己写的。

PDF 中的代码是用 JAVA 编写的,但我已将其翻译成 C++。这是我的代码(您也可以在C++ Shell上运行它):

问题是,调用噪声函数只会给我 -0.3 到 0.3 之间的值。

我期望获得介于 -1.0 和 1.0 之间的值。

这个特定的实现有问题吗?

Obs:我还没有对输出进行标准化,也没有计算任何额外的八度音阶。

0 投票
1 回答
212 浏览

noise - 如何使用噪声生成多个 3D 坐标

我目前正在尝试使用虚幻引擎蓝图中的单纯形噪声插件生成 3D 行星地图,就像《无人深空》所做的那样。如何为各个行星生成坐标?

我已经尝试创建 3 个 for 循环并获取特定坐标上的噪声值。当噪声值超过阈值时,就会生成一个行星。这很好用,但是资源非常密集,并且会将它们分组为非随机模式。有没有更好的方法来使用噪声获得一个/多个坐标?就像输入阈值并输出坐标的反向噪声函数一样?或者也许是不同的方式?

非常感谢

0 投票
1 回答
152 浏览

c++ - 变形三角形时出现 CDLOD 问题

我有一个细分并带有 LOD 的二十面体。现在我正在尝试添加动态材质。问题是我需要法线。

我使用虚幻引擎 4,当我使用内置函数来计算法线时,我在不同 LOD 级别之间的区域中得到奇怪的伪影。 在此处输入图像描述

所以我用这个代码做了我自己的计算:

看来计算是对的。当我跳过着色器中的变形计算时,这些伪影消失了......也许三角形在变形它们时会彼此靠近,这会导致这种伪影?

这就是变形的样子。(来源在此处输入图像描述

0 投票
0 回答
163 浏览

webgl - Simplex 3D 噪声动画在移动设备上停止

我正在使用Stefan Gustavson 的 GLSL impl。单纯形噪声并使用 WebGL 对其进行动画处理。在桌面上工作得很好,但在我的 Android 设备上,无论是 Chrome 还是 Firefox,动画总是在固定时间后停止。没有错误/警告,脚本和 WebGL 程序继续运行。经典的 Perlin 噪声 impl 也会发生同样的事情。你可以在这里看到一个演示:https ://wix.github.io/kampos 代码在这里:https ://github.com/wix/kampos/blob/master/index.html Turbulence impl。在这里:https ://github.com/wix/kampos/blob/master/src/effects/turbulence.js