繁体   English   中英

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

[英]Using noise to generate marching cube terrain?

我已经在C#XNA中成功创建了行进多维数据集类,并且正在使用Lib噪声生成3d Perlin噪声,但是当我尝试使用perlin噪声的值作为行进多维数据集的密度来生成地形时,它会生成很大的行进其中具有看似随机三角形的多维数据集。 我分离了行进的多维数据集,并给它分配了任意的3d密度数组,以便可以确保一切正常,并且看起来还不错,并且我让Terrain生成代码生成了正常的多维数据集,并且得到了具有正常外观的terrain,但是问题是是每个多维数据集的拐角从噪声中获取的值总是从负向正转换得如此之快,以至于行进的多维数据集看起来像是混乱的混乱。

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

 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));
}

我认为问题是我没有正确使用噪声来获取行进的多维数据集角的密度,但是到目前为止,我的Google搜索结果根本没有太大帮助。 那么,有谁知道如何正确使用噪声来生成平滑的地形? 还是其他原因导致此问题?

我在http://imgur.com/a/D1uMC上发布了屏幕截图,其中前两个是使用行进立方体显示的,最后一个是普通立方体。

编辑:因此,从图片中我发现行进的多维数据集实际上正在按照给定的值正常工作,问题出在我的噪音和我的使用方式上。有人知道任何好的资源吗?用于基于噪声的3d地形生成?

问题是我如何读取噪音,默认情况下,我被令人难以置信地“缩小”,因此通过将步长更改为浮点数,然后使用较小的增量,我可以获得所需的结果。 基本上“放大”了噪音区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM