1

我正在尝试为建筑物创建一个网格,为此我有一个基础点的坐标(底部)。底座最简单的形状是矩形,但也可以更复杂。但基地中的点总是有方向的,总是相连的。

这是我想要获得的 3d 形状的图像: 在此处输入图像描述

我可以填充顶点缓冲区——对于盒子,我首先将基点坐标用于点 0-4,然后将它们向上变换(在 Y 轴上)并再次将它们用作点 5-7。

我读过我必须逆时针定义三角形,并且能够(手动)填充矩形框的索引缓冲区。但我不喜欢为每个形状手动执行此操作的想法,因此肯定有(可能很简单)在代码中执行此操作的方法。

你能指出我正确的方向吗?

4

1 回答 1

1

我认为最简单的方法是使用一种方法,该方法需要 4 个点,例如在这种情况下为 0、4、5、1,并创建 2 个三角形来构成一个平面并返回一个包含 6 个索引的列表。然后你只需要遍历四个一组的所有点。

因此,在您的情况下:第一个输入是:0、4、5、1 这将创建输出索引:0、4、1、1、4、5。第二个输入是:1、5、6、2 这将创建输出索引: 1, 5, 2, 2, 5, 6. 等等等等

由于这些点是在一个系统中组织的,因此很容易实现循环遍历这些点。如果您跟踪底部有多少点,您可以轻松获得“高于”任何其他点的点。

例如,如果要循环遍历四个一组的所有点:

    for(i = 0; i < numberOfPointsInBottom; i++)
    {
         listOfIndices = getIndicesFromFourPoints(i,(i+numberOfPointsInBottom),i+1,(i+numberOfPointsInBottom+1))
    }

在此示例中,第一次迭代中函数的输入将是:0、4、1、5。

当我需要连接由任意数量的边定义的圆柱体的顶点时,我就是这样做的,我希望你能理解我的思路。

于 2012-10-15T13:32:16.957 回答