【问题标题】:Assimp incorrectly imports OBJ indices?Assimp 错误地导入了 OBJ 索引?
【发布时间】:2018-05-26 10:09:27
【问题描述】:

我创建了自己的 Model 类来抽象在 Assimp 中导入模型的过程,并使添加模型变得容易。目前,我还没有让这个工作,也没有显示模型。我相信这是由于指数。

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

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

此外,出于某种原因,所有索引向量都只包含连续整数。例如:

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

【问题讨论】:

  • obj 包含什么?是否存在用于多个三角形的顶点?
  • 是的,有。 obj 文件包含危机模型资产 (nanosuit.obj)。三角形应该是相连的。

标签: c++ opengl indices assimp wavefront


【解决方案1】:

原来我必须添加标志:

aiProcess_JoinIdenticalVertices

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

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2014-11-19
    • 2018-03-28
    • 2018-05-10
    • 2021-12-24
    • 2014-04-18
    • 2015-12-15
    • 2013-04-24
    • 2013-04-14
    相关资源
    最近更新 更多