Questions tagged «perlin-noise»

Perlin噪声是Ken Perlin开发的一种算法(计算机生成)效果,通常用于模拟自然界中的元素以及生成过程地形,尤其是在内存不足的情况下。它也是伪随机的,可以有任意多个维度。现在存在这种改进的版本,也由Ken Perlin开发,并且也包含在此标记中-单工噪声。

10
如何生成可平铺的Perlin噪声?
有关: 简单的噪音产生 了解Perlin噪声 我想生成可平铺的Perlin噪声。我正在使用Paul Bourke的 PerlinNoise*()功能,如下所示: // alpha is the "division factor" (how much to damp subsequent octaves with (usually 2)) // beta is the factor that multiplies your "jump" into the noise (usually 2) // n is the number of "octaves" to add in double PerlinNoise2D(double x,double y,double alpha,double …

3
如何生成蠕虫风格的地形?
我正在开发蠕虫风格的游戏,并希望以程序方式生成一些地形。以前,我已经使用Perlin噪声完成了很多地形生成,而这正是我在此游戏中开始使用的。唯一的问题是它太简单又无聊,给了我一些麻烦,但没有我想要的复杂性。我想拥有诸如洞穴和悬空山脉之类的功能,而且我不介意漂浮的岛屿之类的东西。这样的事情,甚至更疯狂也可以: 我想到先使用经典的Perlin噪波生成地形,然后才移除零件以创建洞穴,但并非如此,但是我很难指导移除这些零件。生成这样的地形还有其他选择吗?

4
简单的噪音产生
我正在寻找产生如下噪声: (图片由了解Perlin噪声提供) 我基本上是在寻找带有许多小“波纹”的噪音。以下是不可取的: 有没有简单的方法可以做到这一点?我已经看了一个星期的perlin和simplex,似乎无法在JavaScript中使用它,或者当我这样做时,我没有正确的参数来生成此类图像,或者这太令人费解了慢。 我了解我发布的3张图像可能可以通过相同的算法来实现,但比例不同,但是我不需要那种算法。我只需要一个非常简单的算法即可理想地实现类似第一张图片中的效果。也许某种模糊可以胜任,但我无法取得结果。 我正在用JavaScript开发此工具,但是任何类型的代码,甚至是简单而详细的说明都可以使用。

4
创建岛屿地图蒙版的简单方法
我正在寻找一种使用C#为岛地图生成蒙版的好方法。 基本上,我使用的是由Perlin噪声生成的随机高度图,其中地形没有被水包围。 下一步将是生成遮罩,以确保拐角和边界都是水。 然后,我可以从Perlin噪声图像中减去蒙版以获得一个孤岛。 并在对比中玩。 和渐变曲线,就可以得到一个孤岛高度图。 (这些只是示例) 如您所见,岛上的“边缘”刚刚被切除,如果颜色值不是太白,这并不是一个大问题,因为我将灰度分为4层(水,沙子,草皮和岩)。 我的问题是,如何像第二幅图像那样生成一个好看的蒙版? 更新 我已经找到了这项技术,这对我来说似乎是一个不错的起点,但是我不确定我可以如何正确地实现它以获取所需的输出。 http://mrl.nyu.edu/~perlin/experiments/puff/ 更新2 这是我的最终解决方案。 我已经makeMask()在规范化循环中实现了该功能,如下所示: //normalisation for( int i = 0; i < width; i++ ) { for( int j = 0; j < height; j++ ) { perlinNoise[ i ][ j ] /= totalAmplitude; perlinNoise[ i ][ j ] …

3
如何在游戏中生成随机的湖泊和河流?
我有一个2D方块建筑游戏,正在尝试制作随机生成的湖泊和河流。我已经研究了Perlin噪声算法,但是无法获得它来生成随机且不错的结果。 我一直在尝试使用python noise库,但是它并不是随机创建地图。 我在该库中缺少一些种子函数来使其更加随机吗?如果我希望它变得更随机,该更改什么变量?如果可能的话,给我一个不太技术的答案,减少数学运算,增加更多python术语。 该地图是2D平铺的地图。这是其他算法的非随机性的一些示例。以下代码连续输出3次。我使用以下方法将八度和频率随机化:freq = 16.0 * random.randint(1, 500000) * 0.000001 + 0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 …

2
加快程序纹理的生成
最近,我开始研究在程序生成的太阳系中进行的游戏。经过一番学习之后(之前都没有使用Scala,OpenGL 2 ES或Libgdx进行过学习),我进行了一个基本的技术演示,您将围绕一个程序化纹理的行星旋转: 我遇到的问题是纹理生成的性能。我正在做的事情的简要概述:行星是已变形为球体的立方体。每一面都应用anxn(例如256 x 256)纹理,该纹理捆绑在一个8n xn纹理中,并发送到片段着色器。最后两个空格未使用,它们仅用于确保宽度为2的幂。使用在'Simplex'论文中链接的2012年更新的单纯形噪声算法,当前正在CPU上生成纹理。噪音消失了。我用来测试算法的场景包含两个球体:行星和背景。两者都使用由六个八度的3D单工噪声组成的灰度纹理,因此,例如,如果我们选择128x128作为纹理大小,则有128 x 128 x 6 x 2 x 6 =约120万个噪声函数调用。 您最接近地球的是屏幕快照中显示的内容,并且由于游戏的目标分辨率为1280x720,这意味着我希望使用512x512纹理。结合这样的事实,实际的纹理当然比基本噪声要复杂(白天和黑夜的纹理,将基于阳光和镜面反射的片段着色器混合在一起。我需要大洲的噪声,地形颜色变化,云层,城市的灯光等),而我们正在寻找的是512 x 512 x 6 x 3 x 15 =仅此星球就需要7,000万个噪声的东西。在最终游戏中,行星之间旅行时会有活动,所以等待5或10秒(可能是20秒)是可以接受的,因为我可以在旅行时计算背景纹理,尽管显然速度越快越好。 回到我们的测试场景,我的PC上的性能并不是太糟糕,尽管考虑到最终结果将比原来差60倍,但仍然太慢了: 128x128 : 0.1s 256x256 : 0.4s 512x512 : 1.7s 这是在我将所有对性能至关重要的代码移至Java之后的事情,因为在Scala中尝试这样做要差得多。但是,在我的手机(三星Galaxy S3)上运行它会产生更成问题的结果: 128x128 : 2s 256x256 : 7s 512x512 : 29s 已经太长了,这甚至没有考虑到最终版本将是分钟而不是秒的事实。显然需要做些事情。就个人而言,我看到了一些潜在的途径,尽管我并不特别热衷于其中任何一种: 不要预先计算纹理,而是让片段着色器计算所有内容。可能不可行,因为有一次我将背景作为具有像素着色器的全屏四边形,并且手机上的速度约为1 fps。 …

1
平滑体素地形
作为个人项目,我正在尝试制作一个地形生成器,以创建看起来像《城堡物语》平滑地形的地形。 如果您以前没有看过,请在这里: 如您所见,它是块和“平滑”块的组合。 我试图模仿这种外观的方法是为每个表面块提供一个迷你高度图。通常这是可行的,但存在一些问题,产生如下所示的地形: 问题是每个块都是1x1x1,但是有时特定位置的高度为负或>1。在这种情况下,我将其裁剪并将高度设置为0或1。 为了更好地说明我的意思,下面是一个图: 为了生成高度,我基本上做了: genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = Block.Grass; b.HasHeightMap = true; // generate heightmap for(int ix = 0; ix …

2
用Perlin蠕虫产生洞穴
我目前正在尝试使用3D Simplex Noise生成类似于Minecraft的体素地形,并且还希望实现洞穴。 我在此线程中找到了Perlin Worms的方法,该方法产生了非常好的结果。但是,我不知道如何逐块生成它。这是否可能,或者有其他替代方法可以逐块地产生类似洞穴的蠕虫吗? 编辑:这是我不知道如何解决的问题。 编辑2:这是将2D脊状多重分形噪声与“单纯形噪声”高度图组合而成的结果。仍然需要一些调整,但这几乎是我想要的结果。感谢Byte56。

2
使用3D Perlin Noise生成时如何去除浮动地形?
我目前正在使用3D Perlin Noise与Marching Cubes结合生成随机地形。 我的问题似乎在于缩放噪声函数以在我的地形中获得合理的高度。如果仅使用一个八度音程,则显然会插入与噪声有关的所有点,从而获得相当平滑的数据。但是,要获得悬垂/凹面/锯齿状的地形,我必须使用振幅变化的多个八度音和/或将结果值缩放到我想要的“最大”高度。 我可能会丢失一些东西,但是通过使用具有3D Perlin噪声的行进立方体,我经常得到一些浮动的地形。 关于如何纠正此问题或是否有其他噪声函数可以用来获得我所描述的结果的任何想法?我想要丘陵/山谷/山脉/湖泊/等。无需将浮动位与其他映射区分开。我相信,这与Minecraft的地形在生成时偶尔会漂浮在天空中的情况类似。 感谢您的协助,神话
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.