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

c# - Libnoise XNA translate perlin 导致失真

我一直在寻找在 XNA 中产生噪音的库。Libnoise 似乎是最合乎逻辑的选择。该库非常易于使用并产生了一些很好的结果。不过,我在生成其他部分时遇到了一些麻烦。C++ 文档对此有一个非常好的功能:

XNA 版本不是这样工作的,而是使用 translate 函数在生成的高度图中“移动”。

翻译.cs

用法

这就是问题所在;虽然它确实翻译了高度图,但它也扭曲了它。这看起来很奇怪,因为 perlin 保持不变。我可以想象改变 Z 会导致高度图改变,但我只是改变 X 轴。

在此处输入图像描述

对此有任何想法吗?

0 投票
2 回答
753 浏览

2d - 柏林噪音援助

好的,所以我找到了这个文章,我对它的某些部分感到困惑。如果有人能更深入地向我解释这个过程,我将不胜感激,因为我已经尝试编写这个代码 2 个月了,但仍然没有得到一个正确的版本。我对文章的持久性部分特别感到困惑,因为我大多不明白作者试图解释什么,在文章的底部他谈到了这个的 2D 伪代码实现,但是 PerlinNoise_2D 函数没有对我来说有意义,因为在随机值被平滑和插值之后,它是一个整数值,但函数采用浮点值?在余音部分下面是八度音阶部分。我不太明白,因为他将平滑函数“添加”在一起以获得 Perlin 函数。他所说的“添加”是什么意思,因为您显然没有将这些值相加。因此,如果有人可以向我解释这些部分,我将非常高兴。谢谢。

这是我的代码:

而且我没有包括平滑部分,因为那是大约 400 行代码来在块之间进行平滑。

0 投票
1 回答
172 浏览

random - Perlin Noise:需要一点帮助

我阅读了这篇关于 Perlin Noise 的文章,如果有人有答案,我有几个问题,因为我似乎遇到了一些问题。在靠近底部的伪代码 2D 部分中,它显示他随机生成数字,但不是将一个变量作为 1D 代码中的参数,而是使用“x”和“y”。这在二维噪声中是否需要?此外,他的 PerlinNoise_2D 函数现在采用 2 个浮点参数,而不是 1 维示例中的 1 个。这些浮点值应该是什么以及它们来自哪里,因为我无法找到如何在我的一生中获得它们。因此,如果有人知道我的任何问题的答案,我将不胜感激。谢谢。

编辑:好的更简单的问题,我在哪里可以获得作为 PerlinNoise_2D 函数参数的 2 个浮点值?

0 投票
0 回答
855 浏览

java - Java Perlin 噪声实现问题

嘿stackoverflow社区!在过去的两周里,我一直在阅读有关 perlin 噪声的信息,并尝试以最基本的方式自己实现它。即便如此,我的程序也不起作用。它始终输出几乎相似的外观结果,并且持久性似乎没有改变任何东西。这是我的代码:

我不明白为什么它不起作用,因为它完全按照本文中的伪代码所说的那样做。任何人都可以帮助我解决这个问题吗?谢谢。

编辑:好的,请有人解释一下执行此操作所需的过程,请我疯狂地想弄清楚这一点。在过去的两周里,我一直在努力解决这个问题,但没有人给我任何帮助。如果您知道如何执行此操作,请向我解释一下,我将不胜感激。谢谢。

0 投票
2 回答
4147 浏览

c# - C# 中分形 Perlin 噪声函数的均匀分布

我的 Perlin 噪声函数(以 0.75 持久性将 3D 单纯形的 6 个八度音阶相加)生成doubles 的 2D 数组数组。

这些数字每个都归一化为 [-1, 1],平均值为 0。我将它们钳制以避免异常,我认为这是由于浮点精度问题,但我相当确定我的缩放因子足够好在理想情况下,将噪声输出限制在这个邻域。

无论如何,这就是所有细节。关键是,这是一个 256×256 的噪声数组:

在此处输入图像描述

正常拟合的直方图如下所示:

在此处输入图像描述

Matlablillietest是一个应用 Lilliefors 检验来确定一组数字是否来自正态分布的函数。我的结果反复是 1,这意味着这些数字不是正态分布的。

我想要一个函数f(x),当应用于我的噪声函数的值列表时,结果看起来是均匀分布的。

我希望这个函数可以在 C# 中实现,并且不需要几分钟即可运行。

再一次,数字来自哪里并不重要(问题是关于将一​​种分布转换为另一种分布,特别是将正常分布转换为均匀分布)。尽管如此,我的噪声函数实现是基于thisthis您可以在此处找到上述值数组。

0 投票
1 回答
1493 浏览

java - Perlin Noise 函数为不同的输入返回相同的结果

我正在使用 perlin 噪声函数为我正在制作的游戏生成数据,但由于某种原因,它不断为不同的输入返回完全相同的结果。我花了大约 4 个小时试图在我的 FBM 函数上调试它,但无法弄清楚,所以我尝试了 Ken Perlin 改进的噪声函数,同样的事情发生了。

有人知道为什么是这样吗?有什么好的方法来解决它?我唯一能做的就是在 x 和 y 坐标上添加一个像 0.6473 这样的十进制值,这有帮助,但也引入了其他问题,例如在数组中重复的值。

这是一些测试代码。我正在尝试创建两个填充有噪声值的不同 2D 数组。x 和 y 输入是我游戏中的坐标。在它们后面带有 ' * * ' 的行上,如果我不增加这些值,两个数组都将被全零填充。在示例中,坐标 (0.0, -768.0) 和 (-1024.0, -768.0) 返回完全相同的噪声值。在我的游戏中,9 个不同的坐标返回相同的值。

我用于此测试的 Perlin Noise 函数在这里

0 投票
1 回答
258 浏览

c++ - 将指向数组的指针转换为数组本身

我正在用 C++ 编写一个灵活的菱形正方形地形生成器。我的地形高度值的瓦片网格被定义为一个巨大的整数数组。现在,我拥有了将这个网格作为一个单独的函数进行操作的整个菱形正方形算法,stdroutine. 我不能将网格声明为全局变量,因为我需要用户能够定义其大小(在合理范围内,尽管尚未实现大小检查)。我不想只粘贴stdroutineinto的内容main,因为我希望能够连续多次调用它而没有太多麻烦(某些预设例程最终需要运行)。因此,我尝试将stdroutine指针指向我的数组,希望如果我告诉它,它能够找出数组的实际位置。stdroutine实际上调用另一个功能,mean也需要网格才能工作。这是我的代码(非常错误,但是哦,好吧,我不知道更好):

主.cpp:

钻石方形.h:

(mt.h 只包含两个例程mt_initmt_random,它们分别初始化和运行 Mersenne twister PRNG。)

如何使我的网格指针与调用它们的所有函数配合得很好?目前,我从 Xcode 4.3 中得到四个错误,三个在 diamond-square.h 中,“没有调用 'mean' 的匹配函数”,还有一个在 main.cpp,“没有调用 'stdroutine' 的匹配函数” .

编辑:嗯,比我想象的要简单。我仍然有问题,请参阅评论。相关代码(main.cpp 是相同的,但我在调用网格之前省略了与号stdroutine):

0 投票
2 回答
2704 浏览

java - 用于 2D 地形生成的 Java Perlin Noise

更新:正式的问题清单:

  1. 2D 噪声实现的浮点值(输入参数和输出)代表什么?- 部分回答,输入是坐标。输出怎么样?另外,我可以使用我的整数作为坐标的浮点数吗?1.0、122.0 等?
  2. 在 2D 噪声发生器中实现种子的好方法是什么?我是否应该使用第三个参数作为种子使其成为 3D 噪声发生器?这是否意味着每个种子都可以产生独特的 2D 噪声?
  3. 与 2d 地图一起,生成位图似乎是沿着相同的路线。如何从输出中生成位图?估计是飘了。

我的问题是剪切和粘贴柏林噪声 2D 实现的浮点值(输入参数和输出)代表什么?我如何从它们生成位图?如果我可以获得某种数据类型的二维数组,我相信我可以弄清楚如何使用它来模拟我的地形。

而且,如果我能确保我可以为它们播种值,我会使用剪切和粘贴实现。这是问题的另一部分,这是我在这里找到的一个未回答的问题。- 在噪声发生器中实现种子的好方法是什么?

好的,我知道这个问题已经被问过很多次了,所以让我解释一下我的研究和发现。

首先,我在这里找到了这个网站,它似乎是向我解释它的赢家。但是,然后我想出了另一个问题,我发现这个问题在这里没有完全回答。

然后我试着弄脏自己的手,用 Java 编写一些代码,这是我选择的语言。我发现了这个,它让我尝试将作为答案给出的哈希函数作为我的噪声函数,因为我可以在那里使用种子。然后我遇到了一个问题,它没有返回一个浮点数来遵循教程中的其余过程。回到绘图板。在此过程中,我发现了更多有关柏林噪声问题的网站。

我在这里发现了一个我什至没有想到的未回答的问题,因为我还没有让我的实现工作。我再也找不到链接了,但它说了一些类似的话,即使你有一个复制和粘贴的实现,你放入函数的浮点输入是什么?有人告诉我我需要在地图上传递我的 x 和 y 整数。我也从剪切和粘贴实现中获得浮点输出。那些是什么意思?那些2D怎么样?如果我可以将事物保留为整数,那在我的大脑中会很有意义,但在某种程度上,我发现将它们保留为整数对于插值和平滑连续曲线的值是不合理的。

0 投票
2 回答
1430 浏览

random - 为什么 Perlin 噪声算法使用查找表来查找随机数

我一直在研究我希望构建的库的噪声算法,并从 Perlin 噪声开始(更准确地说,Simplex 噪声,我想使用任意维度,或者至少多达 6 个)。阅读Simplex noise 揭开神秘面纱,有所帮助,但在最后查看实现时,我看到了一个名为perm.

在代码示例中,它似乎用于生成一组渐变的索引,但该方法似乎很奇怪。我假设该表只是为了提供 1) 确定性和 2) 速度提升。

我的问题是,perm查找表是否有任何辅助意义或目的,还是出于上述原因?或者另一种方式,除了性能之外,是否存在不使用伪随机数生成器的特定原因?

0 投票
1 回答
6525 浏览

c# - 在 C# 中使用 perlin 噪声生成地形

我正在用 C# 和 XNA 开发文明游戏。我使用一个填充有循环的二维整数数组来生成图块,我已经进行了大量研究,但无法找到一种方法来生成类似地球的地形。任何人都可以解释如何做到这一点,或者至少给我可以做到这一点的代码,尽管我更喜欢和解释?谢谢你。