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

c# - Perlin 地形页面不匹配:难以捉摸的错误

我一直在 Unity 游戏引擎中开发一款游戏,我希望能够将分页地形用于无限世界(当今的常见主题)。我的地形生成器专门使用柏林噪声。但是此时,开发已经被一个错误严重拖慢:页面边缘不匹配,甚至不匹配。问题出在我生成地形的代码中,或者可能在每次我完成生成页面时运行的另一段代码中。但是问题绝对不在unity函数调用上,所以即使你不熟悉unity也可以帮助我。

可能的原因... 1) 为每个页面的错误位置采样 Perlin 噪声,数学失败。2) 随机数生成器在页面生成之间重新播种。3) 在页面生成之间重新植入 Perlin 噪声。4) ? 我不知道。

注意:我几乎排除了数字 2 和 3,查看所有其他代码。我每个只为生成器播种一次,Unity 不会碰巧在生成器运行之间重新播种 Random。

实际上,如果您可以描述一种使这更容易的调试方式,请提供建议。从长远来看,这对我有更大的帮助。

这是我为每个页面运行一次的代码,带有完整的注释,因此您不必了解 Unity3D ...

有趣且可能很重要的细节:瓷砖与 x/z 方向上相邻角落的瓷砖正确连接。只要瓷砖没有相同的 x-to-z 增量,就会发生采样偏移。在下图中,右侧图块是另一个图块的 +x 和 +z。具有这种关系的所有图块都已正确连接。

在此处输入图像描述

这是以 zip 格式上传的项目文件。告诉我它是否不起作用或什么... http://www.filefactory.com/file/4fc75xtd3yzl/n/FPS_zip

要查看地形,如果它没有从那里开始,请在切换到 testScene 后按 Play。GameObject 生成数据和地形对象(它具有来自 scripts/General/ 附加的 RandomTerrain 脚本)。您可以从那里将参数修改为柏林噪声。请注意,现在只有第一个 perlin 八度音程 o_elevator 在地形生成中处于活动状态。为了解决这个故障,所有其他公共 perlin 倍频程变量都没有影响。

0 投票
6 回答
2124 浏览

java - Perlin 噪声百分比

我正在编写基于 perlin 噪声的地图生成器并遇到问题:

假设我想要 30% 的水和 70% 的泥瓦。使用通常的随机生成器没有问题:

但是柏林噪声是正态分布的(范围从 -1 到 1,平均为 0),所以这并不容易。

有谁知道将正态分布转换为均匀分布的方法,或者我可以从噪声值中获得百分比的不同方法?

编辑:70% 只是一个例子,我希望能够动态地使用任何值,最好是 0.1% 的精度。

EDIT2:我想将 perlin 噪声转换为均匀分布,而不是正态分布(它已经是相似的)。

0 投票
1 回答
593 浏览

algorithm - 关于 Perlin Noise 算法中的衰减值是什么意思?

总的来说,我刚刚开始了解 Perlin Noise,但我读过的许多关于地形生成的网站都提到了衰减值。

在 3D(基于立方体的地形)中,使用 3D Perlin Noise 函数的结果作为密度测试似乎很典型,如果它大于 0 是陆地,小于或等于 0 是空气。然后在进行密度测试之前将函数的结果简单地偏移当前的 y 值以获得平滑的半平坦地形。

我不明白的是关于衰减值的含义。

有人可以解释一下这个意义上的衰减值是指什么,甚至可以使用代码示例吗?

0 投票
1 回答
1470 浏览

c# - XNA 柏林噪音星球

我想用 XNA 制作一个程序星球。我可以使用 Perlin Noise 创建高度图并在运行时加载它,但是如何创建额外的无缝块并创建球形行星?

在此先感谢,朱利奥。

0 投票
1 回答
2485 浏览

algorithm - 使用 Perlin Noise 生成瓦片地图的基本问题

我正在尝试为 2d tilemap 游戏制作地图生成器(类似于 Civilization 之类的游戏 - 我希望能够创建小岛屿或大大陆等)。我发现一篇文章几乎可以满足我的需求,但它是用 Flash 编写的。看起来有一个方便的函数可以从 perlin 噪声生成位图:

这在文章中使用(但我使用的是 java)。所以现在我一直在尝试自己实现 perlin 噪声(基本上是找到一个纯 java 实现并复制/粘贴它)。

我只是想了解使用柏林噪声背后的基本原理——我的基本理解:

  1. 定义你想要的地图大小(在我的例子中大约是 100 x 50 瓦片)。
  2. 初始化一个 perlin 噪声对象(设置参数,如频率等 - 不太确定这些参数如何影响岛屿大小等,但暂时搁置一旁)。
  3. 遍历我的地图中的每个图块,并向 perlin 噪声对象询问一个值。返回的值可以解释为我猜测的高度值。
  4. 现在根据高度值分配瓷砖类型。

迭代代码可能类似于:

这通常正确吗?这至少是一个起点。

我正在寻找的文章(用闪存写的): http ://www.nolithius.com/game-development/world-generation-breakdown

Flash BitmapData 类方便地内置了 perlin 噪声函数:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#perlinNoise ( )

谢谢

0 投票
2 回答
5883 浏览

python - 如何使用柏林噪声 python 制作二维地图

我一直在尝试为我用 Python 制作的自上而下的 RPG 制作随机地图。(和 Pyglet)到目前为止,我一直在从 0,0 开始并沿随机方向前进 500 次(x+=32 或 y -=32 之类的东西)来制作岛屿,但这看起来不太像真实图像所以我看了一下 Perlin Noise 方法。我如何从中获得随机生成的地图:/(最好是一个岛屿),它是否比随机方向方法更好?

0 投票
3 回答
2458 浏览

generator - 从噪声发生器中确定稀有值?(也就是我的世界如何放置矿石)

我目前正在使用 Perlin Noise 开发 2d 世界生成器(侧卷轴),我希望能够让稀有矿石散布在地形中 - 但我不完全确定如何去做。

我正在考虑做的是,在循环二维数组并生成世界时,收集所有数字(或数字范围)的列表并将它们添加到数组中 - 然后确定每个数字/数字范围的稀有性,然而,像这样放置矿石......

这似乎很慢,必须更快、更好的方法。在那儿?

编辑:表达我的问题的另一种方式是,Minecraft 究竟是如何放置矿石的,以及在 2d(从侧面)游戏中使用 Perlin 噪声的最佳方法是什么。

0 投票
1 回答
3421 浏览

python - 人们如何一次渲染这么多体素?

我实际上有2个问题。1)我看到这些数千个体素的渲染,但使用八叉树我仍然只能在屏幕上获得大约 500 个体素。

这就是我一直在使用的八叉树代码。我从一个网站上得到的,这很整洁。它非常适合移除内部的立方体。虽然它只是一个空心盒子,这很奇怪。虽然它确实大大提高了FPS。对于渲染立方体,我使用这个小类。

使用此代码,我可以获得大约 30FPS。我认为屏幕上大约有 62,210 个方格。我通常得到大约 30-40 FPS(这还不错。)

0 投票
4 回答
3891 浏览

algorithm - Perlin/Simplex Noise 算法的随机性质量如何?

Perlin 噪声算法和 Simplex 噪声算法的随机性质量如何?

两者哪个算法的随机性更好?

与标准的伪随机生成器相比,使用 Perlin/Simplex 作为随机数生成器有意义吗?

更新:我知道 Perlin/Simplex Noise 的用途。我只是对随机性感到好奇。

0 投票
0 回答
191 浏览

math - 是否有一种算法方法可以找到给定单纯形噪声维度的比例因子?

这是单纯形噪声算法的 C# 中的一种实现

您会注意到每个噪声函数(2d、3d 和 4d)都会缩放角点贡献以适应 -1 到 1 的范围(这是返回语句中的幻数),这是合理的。据我所知,这些都是通过实验得出的。

问题是我想将其模板化为任意数量的维度,而这个因素似乎是这样做的一个障碍,所以我想找到一种获得该比例因子的算法方法。我对算法不够熟悉,无法了解影响比例的因素,但如果我不得不猜测,我认为顶部的排列表是一个主要的排列表。

有没有人对此有任何想法,也许只是说它不可行?