首先,为我的倒英语感到抱歉。
我正试图建立一个虚拟世界,它的地形就像simcity2000或者交通巨头,那里的地形是由瓷砖制成的,瓷砖的高度不能在瓷砖之间跳过一个以上的高度,所以没有悬崖。
对于地形生成,我使用perlin\单纯形噪声,但是我要用它来处理陡坡。
我看了一下开放运输巨头的源代码,在地形生成之后,地图上的所有瓷砖都被环通并平滑,只有一个单位的标高。
但这对我来说不是这样的,因为我的地图会大得多,而且我负担不起循环平滑所有这些的费用。此外,它不可能只是平滑的可见部分的地形,因为它将是不同的,取决于瓷砖平滑是从哪个开始。
我试着写我自己的噪声函数,它返回两个点之间的线性插值值,距离等于这些点的最大高度,这样斜率不能超过45度,它起作用了,但是直到你试图把这些函数加在一起。
我如何才能在最大45度的山坡上随机生成地形,而不是仅仅平滑一些以前生成的地图?。
现在我没有想法了,我希望Perlin噪音可能有一些可能的选择,比如“最大斜角”,但是google并没有帮我做到这一点。
发布于 2012-02-29 00:11:22
Perlin噪声本质上是斜率限制的,因为每个网格单元格内的值是在四个梯度之间插值的,这些梯度都有斜率1/gridSize (或其他一些固定值,取决于您的实现)。
如果你产生有限数量的八度,相对于你的瓷砖大小,你应该能够在实验上找到一个能保证最大斜率为1的缩放因子。
https://stackoverflow.com/questions/9491579
复制相似问题