【问题标题】:Setting the indices for a 3d mesh in libGDX在 libGDX 中设置 3d 网格的索引
【发布时间】:2015-01-21 00:20:25
【问题描述】:

我遇到了 libGDX 中的一个问题。我想用网格创建一个简单的无纹理 3d 模型。到目前为止,这是我创建四面体的代码:

Material material = new Material(new IntAttribute(IntAttribute.CullFace), ColorAttribute.createDiffuse(Color.GRAY));
ModelBuilder modelBuilder = new ModelBuilder();
Mesh mesh = new Mesh(true, 6, 20, new VertexAttribute(Usage.Position, 3, "test"));
mesh.setVertices(new float[] { -0.5f, -0.5f, 0,
                                0.5f, -0.5f, 0,
                                0, 0.5f, 0,
                                0, 0, 1});

mesh.setIndices(new short[] {0, 3, 0, 2, 0, 1, 1, 3, 1, 2, 2, 3});
modelBuilder.begin();
modelBuilder.part("test", mesh, GL20.GL_LINE_STRIP, material);
model = modelBuilder.end();

此代码工作正常,但我不知道如何为生成的顶点设置网格的索引。 我目前有一个顶点列表,每个顶点都有一个列表,其中包含与之相连的顶点。 我如何设置网格的索引来实现这种连接?

在此先感谢,并为我的英语不好感到抱歉。

【问题讨论】:

    标签: java 3d libgdx mesh


    【解决方案1】:

    假设您只想绘制边缘,而不是表面:

    我认为不可能使用线带来绘制四面体的所有边缘而不绘制至少一个边缘两次。形状不够复杂,不足以证明尝试使用线条来优化它是合理的。我认为很少有使用线带或三角形带的情况。

    所以将GL20.GL_LINE_STRIP 更改为GL20.GL_LINES。现在您的索引数组应该是定义线段的索引对列表。前两个索引定义第一段,第三和第四个索引定义第二段,依此类推。

    一个四面体有六个边,所以你应该列出点之间的所有连接。在四面体的情况下,它是所有可能的点组合。索引编号与您定义的顶点相对应。您定义了 12 个浮点数,每个顶点有 3 个浮点数,因此四个顶点的索引从 0 到 3。

    举个例子,虽然对的顺序无关紧要。

    {
     0,1, //Connect the 1st vertex (-0.5f, -0.5f, 0) to the 2nd vertex (0.5f, -0.5f, 0)
     0,2, //Connect the 1st vertex to the 3rd vertex (0, 0.5f, 0)
     0,3, //Connect the 1st vertex to the 4th vertex (0, 0, 1)
     1,2, //Connect the 2nd vertex to the 3rd vertex
     1,3, //Connect the 2nd vertex to the 4th vertex
     2,3  //Connect the 3rd vertex to the 4th vertex
    }
    

    这将绘制所有边缘。

    如果你想绘制实际的三角形表面,你应该使用 GL_TRIANGLES 代替,你的索引列表将需要每个三角形三个元素,总共 12 个元素。每三个元素将定义要绘制的三角形的三个角,但您还需要确保它们都以相同的方向缠绕(顺时针或逆时针,具体取决于您的剔除设置)。

    实际上,在简单四面体的情况下,您可以使用三角形条带,但如果您想为其添加光照则不能,因为由于法线不同,所有顶点都不能在面之间共享。

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 2013-03-07
      相关资源
      最近更新 更多