具有逼真高度图的地形生成

时间:2017-04-05 03:07:13

标签: procedural-generation heightmap

我很难找到为地形发生器添加真实感的最佳方法。在这一点上,我有一个完美的泛洪填充,但是如果我想添加任何类型的真实感,我将需要添加高度变量。我已经看到以下方法尝试制作高度图:

现在我通过填充洪水来生成板块,但我不确定从那里开始。

我不确定是否使用噪音功能只是因为我需要在一个大陆内生成生物群系以使其看起来真实(一个只有山脉的大陆将是不切实际的)。钻石平方算法可能无法满足我的需求,因为我希望灵活调整大小。

如果我使用方形图块来提供一些真实感,而不是非常耗费资源,并且保留我的代码,那么生成高度贴图的最佳选择是什么?

这是代的图像,生成代码在Github项目中: https://github.com/Hunterb9101/TileWorkspace/blob/59fe1f28f019d7128c970772d1ef6bd30d63072c/Generation.png

1 个答案:

答案 0 :(得分:1)

tldr:我会使用perlin噪音生成,并对生物群系进行一些修改。

article/tutorial介绍了代码段及其实现方法。为您的任务建议最佳算法完全取决于您的技能和最终结果目标。

然而,对perlin噪音进行简要描述并将其用于实际目的......

  

与大多数地形生成一样,噪音功能是您的朋友 -   特别是Perlin和/或单纯形噪声。我实施了一些   行星地形生成算法虽然它们在2d,   得到的高度/"纹理"地图可以投射到一个球体   相当容易。我假设转换为十六进制格式不是问题   任

     

我的技术一直在创造多个噪音层,例如:温度   和湿度。温度与纬度坐标融合在一起   为了使赤道更加炎热和杆子冷,而噪音   确保它不是一个简单的渐变。最终的地形类型是   通过&#34等规则选择;如果炎热且不潮湿则选择沙漠"。您   我可以在这里看到我的JavaScript实现:   https://github.com/tapio/infiniverse/blob/master/js/universe/planet-aerial.js

     

对于水百分比,您只需调整水位即可   作为噪声函数的高度倾向于具有恒定的平均值。另一个   选项是应用指数过滤器(在生成时也很有用)   云,请参阅我的实施。)

     

另一种产生球形地形的方法(避难所    测试)是使用3d噪声并从球体表面采样,   使用结果值作为该点的地面高度。您可以   然后根据行星和水的重量来衡量   纬度坐标。

     

我将以一个三维行星实际实现的链接结束   地形生成:   http://libnoise.sourceforge.net/tutorials/tutorial8.html

要生成任何随机风格的逼真地形,您将不得不使用某种噪音。在过去的项目中,我自己使用了菱形方形算法。然而,这只是简单地生成高度图。

对于更多的轻读,我会查看有关真实地形技术的this文章。