【问题标题】:Lining up terrain chunks (Diamond-square algorithm)排列地形块(菱形算法)
【发布时间】:2012-04-15 20:28:13
【问题描述】:

我正在编写一个使用 Minecraft 风格块的地形引擎。使用Diamond-square algorithm 单独生成块。

问题是这些块没有排列,它们是完全分开的。我已经尝试了很多方法来让它们这样做,但到目前为止没有任何效果。

编辑:另外,我试图创造的世界不是无限的;它生成一个 33x33 的块数组,每个块都有一个由另一个菱形生成器分配的全局高度值。

有没有一种(简单的,最好的)方法来修改菱形引擎以使块对齐?

【问题讨论】:

    标签: java terrain procedural-generation


    【解决方案1】:

    所以您将菱形正方形算法的每个顶级正方形生成为单独的块?

    您必须与周围的块共享该块的四个角点。

    有很简单的方法可以做到这一点。您只需要一个带有两个参数的噪声函数(假设您在 2D 中生成地形) - 一个函数始终为同一种子返回相同的伪随机数(对于整个地图保持不变)和两个参数。因此,如果您向函数询问坐标 [-100, 500] 上的值,您将始终得到相同的数字(确保周围的块对齐)。

    此类函数的示例如下:

    function Noise1(integer x, integer y)
        n = x + y * 57
        n = (n<<13) ^ n;
        return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);    
    end function
    

    Source.

    编辑:

    我的错 - 你不应该只依赖于四个角点的参数化噪声函数,你必须将它用于菱形正方形算法中生成的所有随机数。

    如果这不起作用,那么你做错了什么。

    【讨论】:

      【解决方案2】:

      看到这个答案: Making the diamond square fractal algorithm infinite

      你最好的选择是要么完全噪音,要么使用我漂亮的无限菱形平方算法。在你的边缘截断它。如果您想将某个区域称为块,那就这样吧。在某某无限领域中查找任何点都很容易。

      或者我在这里的解释和实施示例: http://godsnotwheregodsnot.blogspot.com/2013/11/field-diamond-squared-fractal-terrain.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多