Assimp错误地导入OBJ指数?

时间:2017-12-12 16:37:14

标签: c++ opengl indices assimp wavefront

我创建了自己的Model类来抽象在Assimp中导入模型的过程,并且可以轻松添加模型。目前,我没有这个工作,没有显示模型。我相信这是由于指数。

我在调试过程中注意到,与模型中的网格相关的索引向量总是与顶点向量具有相同数量的元素(尽管它应该更多)。 例如:

vertices.size() == indices.size() //<--- true

此外,由于某种原因,所有索引向量只包含连续的整数。 e.g:

std::vector<GLuint> indices; //<--- After processing contains: {0, 1, 2, 3, ...}

以下是我用来从Assimp中提取索引的代码:

//Process Indices
for (GLuint i = 0; i < mesh->mNumFaces; i++) {
    aiFace face = mesh->mFaces[i];
    for (GLuint j = 0; j < face.mNumIndices; j++) {
        GLuint index = face.mIndices[j];
        indices.push_back(index);
    }           
}

此外,这是我的导入标志(虽然我真的不知道这些会如何影响索引):

const aiScene *scene = import.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_GenNormals);

1 个答案:

答案 0 :(得分:0)

原来我必须添加标志:

aiProcess_JoinIdenticalVertices

这标识并连接所有导入的网格中的相同顶点数据集。