问题标签 [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 回答
13720 浏览

terrain - 3d perlin 噪声函数如何用于生成地形?

我可以使用 2D Perlin 噪声函数来生成高度值,但我不明白为什么要使用 3D Perlin 噪声函数。在Notch 的博客中,他提到在 Minecraft 上使用 3D Perlin 噪声函数生成地形。有谁知道如何做到这一点以及为什么会有用?如果您正在传递x,yzvalues ,这是否意味着您已经拥有高度?

0 投票
1 回答
7303 浏览

landscape - 基于现有地形的动态地形生成

这个问题与这里提出的问题非常相似。

我的问题是我有一张地图,如下所示:

主地图

这张地图是使用 2D Perlin 噪声制作的,然后运行创建的高度图,根据相应元素的高度或坡度为地形中的每个元素分配类型和颜色值,非常标准。地图数组是二维的,屏幕尺寸的精确尺寸(每像素像素),所以在 1200 x 800 生成时,在我的装备上大约需要 2 秒。

现在放大突出显示的矩形:

http://i.stack.imgur.com/hrZnM.png

显然,随着尺寸的增加,细节会丢失。这就是问题所在。我想即时创建额外的细节,然后在玩家四处移动时将其写入磁盘(玩家只是一个限制沿网格移动的点)。我看到了两种方法,我很快就想到了第一种方法:

http://i.stack.imgur.com/bbLia.png

这是从旧地形的采样元素创建的新的有偏差的局部地形的放大视图,在上一张图像中由黄色网格空间(中心左侧)突出显示。然而,这个系统需要大量的修改,例如,如果你将一个单元从黄色网格空间的左上方移动到海滩瓷砖上,地形就会完全改变:

http://i.stack.imgur.com/6shKz.png

所以为了让它正常工作,你需要做大量的,我猜这个词应该是插值,以创建一个平滑的过渡,因为玩家在本地世界中移动了 40 个左右的网格空间,需要到达下一个世界在世界各地平铺。这看起来很复杂而且很不雅。

第二种方法是将原始地图的网格分解成更小的位,也许将每个正方形除以 4?我还没有实现这个,我不确定我会如何以一种实际增加细节的方式,但我认为这可能最终成为最好的解决方案。

关于我如何解决这个问题的任何想法?请记住,它必须是本地的和即时的。只是增加地图的分辨率是我想不惜一切代价避免的事情。

0 投票
1 回答
269 浏览

iphone - 奇怪的CGImage创建问题

从 iphone 上的原始数据创建 CGImageRef 时,我遇到了一个非常奇怪的问题。我正在尝试从 perlin 噪声生成函数创建一个 CGImageRef,该函数采用 x、y、z 和 t 并返回一个介于 -1 和 1 之间的值。对于每个像素,我得到介于 -1 和 1 之间的噪声值,转换将其转换为 0 到 255 之间的字符,并通过以下方式从数据中创建 CGImageRef ...

如果我然后将此 CGImageRef 绘制到 CALayer,我会得到以下结果...

从数据创建的 CGImageRef

水平伪影是由我的屏幕截图创建的(不是在实际图像中),但是将图像分成 3 个相同部分的那 2 条垂直线是问题所在!什么可能导致图像重复 3 次并具有这 2 个垂直不连续性?!更奇怪的是,如果我在不创建 CGImageRef 的情况下手动渲染 perlin 噪声,就像这样......

请注意,我故意转换为 char 然后除以 255.0 以确保转换为 char 不会导致问题。无论如何,我得到以下结果......

手动绘制噪音

所以你似乎在上述两种方法中产生的噪音完全相同,我什至并排打印了每种方法的值以确认它们是相同的!因此,不知何故,从数据中创建 CGImageRef 而不是直接将其绘制到上下文中会产生奇怪的视觉问题,从而破坏图像。我需要能够在应用程序启动时生成一系列这些图像,并且不能手动绘制它们以获得良好的结果。任何人都知道什么会导致这样的问题???

0 投票
8 回答
30862 浏览

image-processing - 单纯形噪声与 Perlin 噪声

我想知道为什么在 Simplex 出现后 Perlin 噪声在今天仍然如此流行。单纯形噪声是由 Ken Perlin 自己制造的,它被假设接管了他的旧算法,该算法在更高维度上速度较慢且质量更好(没有可见的伪影)。

单纯形噪声于 2001 年问世,在这 10 年中,在生成地形高度图、创建程序纹理等方面,我只看到人们谈论 Perlin 噪声。

任何人都可以帮助我,Simplex 噪音有什么缺点吗?我听说 Perlin 噪声在 1D 和 2D 噪声方面更快,但我不知道这是否属实。

谢谢!

0 投票
2 回答
11117 浏览

algorithm - 如何在球面上生成 Perlin 噪声?

我正在尝试使用 Perlin 噪声生成地形。我了解如何使用笛卡尔坐标生成它,但不能完全理解它在球体上的工作方式。我知道您可以将 2D 曲面投影到球体上,但失真不会弄乱噪声分布吗?我能想到的在球体表面生成均匀噪声的最佳方法是将球体上的点映射到 3D 笛卡尔坐标并使用 3D 噪声函数。(基本上,产生一个噪音立方体并“刮掉”角落使其变圆,就像它一样。)我错过了更好的方法吗?

0 投票
2 回答
528 浏览

iphone - iOS平台云的光生成算法

我想用动画云填充我的应用程序的背景。我做了一些研究,偶然发现了似乎很合适的 perlin 噪声算法。然而,即使在第一次测试中,生成 512x512 (2D) 云图也非常昂贵。我尝试了单纯形噪声,但没有解决。

根据http://freespace.virgin.net/hugo.elias/models/m_clouds.htm通过添加一些 perlin/simplex 噪声图来生成云。在我的应用程序中的 iPhone 上不可能做到这一点:我需要流畅的图形(我的乐观预期是 A4 上的 60 FPS)。

所以我的问题是:是否有更轻的算法来生成不会使我的帧速率下降太多的动画云?

提前致谢!

保罗

0 投票
2 回答
1202 浏览

c# - 改进噪声的版本一直返回 0

我正在尝试在我的 XNA 游戏中实现改进的噪声,但我的改进噪声函数一直返回 0.0f。它与 Ken Perlin ( http://mrl.nyu.edu/~perlin/noise/ )的代码完全相同,只是移植到 C#。

我尝试过重写该类,甚至直接从站点复制和粘贴(当然,然后移植到 C#),但它除了 0 之外不会输出任何值。

这是我正在使用的代码:

为了测试它,我只是做了:

正如我上面所说,它总是输出 0。

0 投票
1 回答
1176 浏览

opengl - 动态地形的纹理坐标 - OpenGL

有人可以描述一种用于计算每帧动态变化的地形的纹理坐标的常用技术吗?我在顶点着色器中实现了一个 perlin 噪声函数,并且地形是逐帧动画的。地形非常像山(锯齿状,非常嘈杂)。我在想我可以在整个地形上线性地拍几个大纹理,并根据高度在片段着色器中使用多纹理,但这会导致纹理在高度增加/损失较大的地方看起来被拉伸,对吗?我无法弄清楚如何计算顶点着色器中的纹理坐标,以便纹理在整个地形上看起来都很漂亮,并且可以为细节进行多重纹理处理。我正在寻找关于 OpenGL 中存在什么样的技术的指针。

0 投票
1 回答
404 浏览

noise - 使用蒙版生成地形噪声?

我有一张黑白的 2D 地图,白色部分应该在海平面以上,黑色部分应该在海平面以下。我不确定如何生成适合该蒙版的地形。岛屿的轮廓是否不正确并不重要,重要的是噪声应该大致符合所描述的岛屿的轮廓。

我看过 Perlin 噪音,但我不确定如何让它适应我的场景。

0 投票
2 回答
28318 浏览

3d - 最快的 Perlin-Like 3D 噪声算法?

自 Ken Perlin 首次发明噪音以来,已经有 20 多年了。有没有人设法制造出一种更快的 3D 噪声生成器,其特性接近 Perlin 的(程序化、自然的分组、减少的条带、规则的特征大小等)?

我正在尝试构建一个程序世界生成器,但目前 Perlin 并没有削减它。我承认我的实现不是现在最好的,但如果我要重写它,我想知道是否有更好的算法可用。