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有关的东西。 有人可以提供具体的例子,以及这种噪音产生的地形特征的描述吗?

例如,通过选取最大值混合噪音等同于沿着线条的东西

 float perlinNoiseValue1 = fabsf([generator perlinNoiseX: perlinX y: localYIndex + 300 z: 0 t: 0]); float perlinNoiseValue2 = fabsf([generator perlinNoiseX: perlinX y: localYIndex z: 0 t: 0]); float finalValue = fmax(perlinNoiseValue1,perlinNoiseValue2); 

在上述情况下,我是否总是select最大值,或者仅在某些情况下需要显示某个特征?

平坦的地形是怎样的?

 float flatterTerrain = fabsf([generator perlinNoiseX: perlinX y: 0.2*localYIndex z: 0 t: 0]); 

宽阔的山谷和丘陵是怎样的?

float wideValleys = fabsf([generator perlinNoiseX:perlinX * 3.0 y:localYIndex z:0 t:0]);

正如您在参考答案中提到的那样,这就是程序生成的艺术方面。

这些都是你需要不断调整的function,直到你find适合你的东西。 每个人都将有不同的方式来产生地形,甚至有许多不同的方式来产生噪音。 对于特定地形types产生噪声的标准模板不太可能。

我建议你为你的噪声值做一个游戏界面,并设置它,这样你就可以调整这些值并且实时生成地形。 这将允许你弄清楚不同的值如何影响你的地形,值的范围给你你想要的地形的types。