生成具有单独四边形的3D地形

时间:2013-05-01 07:26:57

标签: c# algorithm 3d vertex

我正在处理应生成如下三维地形的代码: Example

我之前创建了代码,然后生成具有共享顶点的地形,但由于我希望单独构建四边形,我需要为每个三角形设置4个顶点和6个索引四

我使用一维数组作为顶点,一个使用索引,但是我无法找出将顶点放在正确位置并计算三角形的正确索引的算法。

以下是我使用共享顶点的一些旧代码:

for (int x = 0; x < worldData.Width; x++)
            for (int y = 0; y < worldData.Height; y++)
            {
                vertices[x + (y * worldData.Width)] = new Vector3(x * TileDiameter, worldData.Elevation[x + (y * worldData.Width)] * HeightUnitValue, y * TileDiameter);
            }

    int t = 0;
    for (int x = 0; x < worldData.Width - 1; x++)
        for (int y = 0; y < worldData.Height - 1; y++)
        {
            int upperLeft = x + worldData.Width + (y * worldData.Width);
            int upperRight = x + worldData.Width + 1 + (y * worldData.Width);
            int lowerLeft = x + (y * worldData.Width);
            int lowerRight = x + 1 + (y * worldData.Width);

            triangles[t] = upperLeft;
            triangles[t + 1] = upperRight;
            triangles[t + 2] = lowerLeft;
            triangles[t + 3] = lowerLeft;
            triangles[t + 4] = upperRight;
            triangles[t + 5] = lowerRight;
            t += 6;
        }

0 个答案:

没有答案