Articles of 珀林噪声

如何获得更温和(像云一样)的噪音?

最近我开始玩perlin噪音的地形。 使用这个库我可以使A相当快。 然而,它是波澜起伏,是可取的。 我想要达到的是B,在那里你可以看到更柔和的噪音更令人信服的斜坡。

三维中的粒子运动

我已经创建了一个粒子系统,运动是通过perlin噪声的stream场来控制的 – 可以在这里find 。 我会非常感谢任何想法和技巧,如何控制他们在Z平面上的运动(噪声是3d),因为我的3D知识还很差。 如何描述三维噪声值控制的运动? 我想这个位移必须用一个指向运动的vector来描述,并加到当前的位置上,但是如何确定z分量呢? 3D示例video在这里可用

如何生成interresting程序地形

我在类似体素的游戏上工作,并最终设法使用单工噪声来创建一些基本的地形生成。 下面是它的样子: 当然,我可以生成不同types的地形(或多或less的丘陵/侵略性),但不会有任何变化。 目前我只知道一个方法来使它更有趣,那就是在草地下面加石块(我会简单地检查一下上面的块)。 所以我的问题是:我需要使用什么技术来生成不同types的地形,这些地形仍然在边缘融合在一起。 而我将如何去洞穴和河stream? 最后,我将如何更好地变化块? 如果有什么可以带领我正确的方向,我会很感激。 PS。 说我只是需要混合大量的噪音才能生成它,这不是一个有效的答案。 怎么样?

我有一个Unity插件,通过着色器生成噪声。 除了把它拖到网格上,我怎么能使用它?

我可能会问这个问题是错误的。 我正在使用湍stream库来产生噪声作为着色器。 我想要做的就是将这些着色器生成的噪声应用到我正在程序化生成的Texture2D中。 我想要做的是从噪声中获取每个像素的值,然后在程序生成纹理的同时,使用程序生成的网格中的另一种颜色“另一种颜色”来确定多less颜色。 我会张贴一个示例图片,但我不能这样做,因为我只能发布一个链接与我的声誉。 我强烈怀疑我只需要从头开始编写自己的着色器,但是没有办法从着色器中拾取噪声并将其应用到Texture2D,以便继续使用标准着色器?

Perlin噪声variables的地形生成的具体例子帮助

我相信这个问题可以帮助初学者游戏开发者。 我已经通过perlin噪声在这里和Stackoverflow上find了十几个或更多的答案,并且只发现了下面列出的perlin噪声的1个具体实现。 有很多的建议,但是很难将其转换成与X和Y值有关的事情,如果我必须随时都这样做,或者只有当我想要显示特定function的时候。 这里是我从Stackoverflow得到的:我相信这是建议混合各种噪音八度。 它似乎产生了一个相当有趣的地形,虽然它很less为我生成山。 float perlinNoiseValue = +1/15.0* fabsf([generator perlinNoiseX: perlinX y: localYIndex z: 0 t: 0]) +2/15.0* fabsf([generator perlinNoiseX: 2*perlinX y: 2*localYIndex z: 0 t: 0]) +4/15.0* fabsf([generator perlinNoiseX: 4*perlinX y: 4*localYIndex z: 0 t: 0]) +8/15.0* fabsf([generator perlinNoiseX: 8*perlinX y: 8*localYIndex z: 0 t: 0]); 我在看Bylin56的“Perlin Noise”这个答案 ,我很难将口头描述翻译成与X / Yinput有关的东西。 有人可以提供具体的例子,以及这种噪音产生的地形特征的描述吗? 例如,通过选取最大值混合噪音等同于沿着线条的东西 […]

二维地形生成与控制变化

那么,我正在试图创造一个简单的无尽的跑步者,这听起来可能是重复的,我正在寻找产生地形的方法。 游戏将只有3种types的地面砖,上升,下降和平原,它应该看起来像这样: 地形http://img.ufgame.com/procedural-generation/bwe.png 所以,我想说的是,地形只能变化1个单位的高度。 我首先想到的是柏林噪音,但我还没有find任何关于限制高度变化的信息。 我也曾经想过在三个可能的瓷砖之间随意select,但是我仍然希望柏林噪音可以产生的“自然随机性”(非常高的山丘,深谷等) 任何想法如何进行? 谢谢! 请原谅我的英语。

这个散列函数在这个perlin噪声实现中如何工作?

在Perlin的噪声函数实现中 ,他使用一个数组来散列input坐标,然后find梯度向量。 但是在Stefan Gustavson的实现中 ,使用了一个奇怪的“permute”函数: vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); } vec4 mod289(vec4 x) { return x – floor(x * (1.0 / 289.0)) * 289.0; } 然后,它是这样使用的: vec4 i = permute(permute(ix) + iy); vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 – 1.0 ; vec4 gy = abs(gx) – 0.5 ; vec4 […]

如何平滑体素地形的低分辨率噪声采样

我试图创建一个新的地形发生器作为一个我的世界MOD的一部分,如果它在全地形分辨率(每个地形块16x256x16体素)采样时效果很好。 这是非常滞后的,所以我试图使用一个更低分辨率的样本,x4x64x4,在每个正轴上插入一个额外的样本(5x65x5,代表20x260x20空间)。 这一切工作正常,直到我试图平滑4x4x4的地形多维数据集。 我已经尝试每个块的噪声值(0.0到2.0),沿着每个正轴插入其旁边的值,每个值通过块与块的接近程度来加权。 结果有一些平滑,但有些似乎旋转了90度,有些地方没有平滑。 我知道这是可能的,我的世界在内部(代码是难以理解的混乱,约半页,20个variables和6个循环)。 有没有人有关于可靠的平滑方法的任何想法,只知道大块的内容和北/东/上的一个样本? 我目前的噪音arrays发生器: protected double[] getNoise(float x, float z) { // get a rough noisemap every 4 blocks, 1 more past the edge to round with double[] n = new double[1625]; // x65x5x5 3D space in order y,x,z represents one chunk at 1/4 precision (1024 blocks plus 601 blocks padding […]

使用3D噪音的程序地形

我正在编写基于GPU Gems 1的这篇文章的程序地形生成。 但使用CPU(不是GPU)。 我被困在产生程序地形。 我只是无法弄清楚如何在文章中看到3D纹理( 图1-10 )。 我在这里错过了一些大事吗? 这里是代码: float CTerrain::DensityFunction(float x, float y, float z) { CPerlin3DTexture perl_tex; float noise; uint32_t octaves = 3; float amplitude[10] = {0.25,0.5,1.0,1.9,4.1,8.1,16.1,9,10}; float lacunarity = 1.5; float freq[10] = {4.03,1.96,1.01,0.51,0.2487,0.12563,0.8013,0.39913, 0, 0}; uint32_t i; noise = 0.0; for(i=0; i < octaves; ++i ) { noise += perl_tex.noise(x […]

应用噪点纹理来扭曲边缘

我在StackOverflow上问了这个问题,但后来发现这个网站,它可能更适合在这里。 我正在尝试实施粗略绘图 。 我在这个过程的一部分,它要求使用噪声纹理来导出不确定性值,这将提供一个偏移到边缘映射。 这里是我的一个圆环图的边缘图: 下面是我使用Perlin函数得到的噪声纹理: 我把它们分别保存为edgeTexture和noiseTexture纹理。 现在我被卡在了必须通过从噪声纹理导出的不确定性值来抵消边缘图的纹理坐标的部分上。 这张图片来自这本书: offs = turbulence(s, t); offt = turbulence(1 – s, 1 – t); 我暂时忽略了2x2matrix。 这是我目前的片段着色器尝试和它产生的结果: #version 330 out vec4 vFragColor; uniform sampler2D edgeTexture; uniform sampler2D noiseTexture; smooth in vec2 vTexCoords; float turbulence(float s, float t) { float sum = 0; float scale = 1; float s1 = […]