我对生成我正在处理的2D游戏的3D高度贴图感兴趣。我使用它来创建陆地就像在我的世界或矮人要塞,并在固定的尺寸在这之前,但只是做:生成平铺噪声贴图“即时”
http://www.freewebs.com/shadowphantom/Results.html
我现在明白,我应该寻找到培林或单纯的噪音。但我现在困惑于如何将Perlin或Simplex噪声应用于二维高度数组。
任何帮助,这将大大赞赏,因为我不知道该怎么做了。 Octave这个词不在乐谱上让我害怕。哈哈哈
我对生成我正在处理的2D游戏的3D高度贴图感兴趣。我使用它来创建陆地就像在我的世界或矮人要塞,并在固定的尺寸在这之前,但只是做:生成平铺噪声贴图“即时”
http://www.freewebs.com/shadowphantom/Results.html
我现在明白,我应该寻找到培林或单纯的噪音。但我现在困惑于如何将Perlin或Simplex噪声应用于二维高度数组。
任何帮助,这将大大赞赏,因为我不知道该怎么做了。 Octave这个词不在乐谱上让我害怕。哈哈哈
我认为你的问题可能措词不正确。高度贴图本质上是2D的,您可以使用它来生成3D地形(网格)。
http://en.wikipedia.org/wiki/Heightmap
如果是这样的话...那么你可以使用柏林噪声函数来创建一个2D图像,并使用它的高度图。例如,如果您不确定创建的内容,可以使用GIMP或Photoshop或类似工具在2D Canvas上创建Perlin噪声。
我的世界利用佩林噪声函数来创建一个三维立方体的噪音。因此,如果高度图是二维柏林噪音,我的世界就是三维柏林噪音。你也可以产生一维柏林噪音。
Perlin噪声函数的好处在于,您可以通过数学控制纹理的“分辨率”和“偏移”,从而创建无缝环境。我相信“我的世界”使用柏林噪音作为基础,然后移动到一些元胞自动机来完成触摸。
我不熟悉单工噪音。
编辑:这里是一个链接来测试一些数学函数(加工) http://processing.org/learning/basics/noise2d.html
我熟悉的生成噪声本身,但我的问题已经在飞行创造它。当你接近他们,但无缝瓷砖的Minecraft只生成块。这是即将发生的效果。 链接进入我的程序运行的图像,它有2块128×128地砖,但他们不这样做瓷砖。 [链接](http://i1178.photobucket.com/albums/x379/Jay_PC000/Durr2.png) –
我知道这不是您正在查找的语言,但是如果您可以从AS3 BitmapData复制方法功能类。它们允许拼接,但我发现,baseX和baseY可以给我说,“平铺”的效果(如最好的,因为它可以是瓷砖的质地能够创建一个)。但是,每次调用都必须重新生成纹理。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#perlinNoise() – avanderw
没错,你必须寻找培林/单噪音。把它看作一个函数f(x,y,...)(像你想的那么多的变量),它将输出随机看的噪声。与纯噪声的区别在于它对渐变起作用,因此它看起来更自然,因为它“绘制”了梯度而不是具有高局部变化的普通噪声。单纯的噪音与Perlin的几乎相同,但它将simplexes中的空间分开,而不是像Perlin那样在n维网格中操作。这减轻了计算成本,并有更多benefits。
它看起来很可怕,但实际上很简单。你害怕八度音,但它们与音乐中的八度音几乎相同:只是较高(或较低)的频率噪声与原始输出混合在一起。谈论乐谱,它就像同时玩C4和C5一样。它仍然是C,但它增加了一些风味(波形中的小尖峰)。不要害怕并继续研究,这并不难。
关于瓷砖:
如果你的意思是线性平铺(就像我的世界一样),你只需要使用相同的种子噪声算法。只要你接近你的新界限,就生成新的数据块,并且它会完美平铺(就像你无限填充噪音一样。)
如果你的意思圆环平铺(重复地砖,觉得吃豆子比如)我找到了最好的解决方案是产生噪音的瓷砖,然后边界附近插值就好像它是瓷砖。噪声会变形,以配合双方,这将是完全平铺。
看这表明使用4D噪音功能答案: http://gamedev.stackexchange.com/questions/23625/how-do-you-generate-tileable-perlin-noise –