使用噪音来生成行进立方体地形?

我已经成功地在C#XNA中制作了一个行军立方体类,并且使用Lib噪声来生成3d perlin噪声,但是当我尝试使用perlin噪声值作为行进立方体的密度生成地形时,它会生成大块在里面看似随机的三角形行进的立方体。 我分开了行军立方体,并给它任意密度的三维数组来贯穿,所以我可以确保一切正常,它看起来很好,我有地形生成代码生成正常的立方体,我有一个正常的看地形,但问题是每个立方体的角落从噪音中获得价值总是从负面转变为正面如此之快,行军的立方体看起来像一团乱麻。

这是我用来生成地形的代码:

 public MarchingCube[, ,] getTerrainChunk(int size, int stepsize)
    {
        MarchingCube[, ,] temp = new MarchingCube[size / stepsize, size / stepsize, size / stepsize];
        for (int x = 0; x < size; x += stepsize)
        {
            for (int y = 0; y <size; y += stepsize)
            {
                for (int z = 0; z < size; z += stepsize)
                {
                    Vector3[] corners = { new Vector3(x,y,z), new Vector3(x,y+stepsize,z),new Vector3(x+stepsize,y+stepsize,z),new Vector3(x+stepsize,y,z), new Vector3(x,y,z+stepsize), new Vector3(x,y+stepsize,z+stepsize),
                       new Vector3(x+stepsize,y+stepsize,z+stepsize), new Vector3(x+stepsize,y,z+stepsize)};
                    float[] densities = { GetDensity(corners[0]),GetDensity(corners[1]),GetDensity(corners[2]),GetDensity(corners[3]),GetDensity(corners[4]),
                                            GetDensity(corners[5]),GetDensity(corners[6]),GetDensity(corners[7])};
                    if (x == 0 && y == 0 && z == 0)
                    {
                        temp[x / stepsize, y / stepsize, z / stepsize] = new MarchingCube(densities, corners, device);
                    }
                    else
                        temp[x / stepsize, y / stepsize, z / stepsize] = new MarchingCube(densities, corners);
                }
            }
        }
    return temp;
 }

并且GetDensity方法如下所示:

private float GetDensity(Vector3 point) 
{
  return (float)terrain.GetValue(point));
}

我认为问题在于我没有正确使用噪音来获得行军立方体角落的密度,但到目前为止,我的谷歌搜索结果一直没有太大的帮助。 那么是否有人知道如何正确使用噪音来生成平滑的地形? 或者还有什么可能导致这个问题呢?

我在http://imgur.com/a/D1uMC上发布了屏幕截图,前两个使用行军立方体显示,最后一个是常规立方体。

编辑:因此,从图片中我发现行军立方体实际上是在如何处理它们所赋予的价值观,问题在于我的噪音以及我如何使用它。有谁知道任何好的资源为基于噪音的三维地形生成?


问题是我在读噪音的方式,默认情况下,我非常“缩小”,通过改变步长到浮点数,然后使用较小的增量,我可以得到想要的结果。 基本上“放大”噪音区域。

链接地址: http://www.djcxy.com/p/37243.html

上一篇: Using noise to generate marching cube terrain?

下一篇: How to speed up marching cubes?