0

シンプルな 3D モデル cube.3ds を読み込もうとしていますが、次のエラーが発生します: ベクトルのインデックスを読み取ると、ベクトルに [0, 1, 2, 3, ...] が含まれています。正しくありません。私はほとんど同じトピックを見つけました: Assimp and D3D model loading: Mesh not being displayed in D3Dですが、答えが見つかりません。メッシュからインデックスをロードするためのアルゴリズムを詳細に説明できる人はいますか? どうもありがとう!

4

1 に答える 1

3

以下は、メッシュ インデックスへのアクセスに関する assimp サンプル コードから抜粋した例です。

for (; n < nd->mNumMeshes; ++n) 
{
    const struct aiMesh* mesh = scene->mMeshes[nd->mMeshes[n]];

    apply_material(sc->mMaterials[mesh->mMaterialIndex]);

    if(mesh->mNormals == NULL) {
        glDisable(GL_LIGHTING);
    } else {
        glEnable(GL_LIGHTING);
    }

    for (t = 0; t < mesh->mNumFaces; ++t) {
        const struct aiFace* face = &mesh->mFaces[t];
        GLenum face_mode;

        switch(face->mNumIndices) {
            case 1: face_mode = GL_POINTS; break;
            case 2: face_mode = GL_LINES; break;
            case 3: face_mode = GL_TRIANGLES; break;
            default: face_mode = GL_POLYGON; break;
        }

        glBegin(face_mode);

        for(i = 0; i < face->mNumIndices; i++) {
            int index = face->mIndices[i];
            if(mesh->mColors[0] != NULL)
                glColor4fv((GLfloat*)&mesh->mColors[0][index]);
            if(mesh->mNormals != NULL) 
                glNormal3fv(&mesh->mNormals[index].x);
            glVertex3fv(&mesh->mVertices[index].x);
        }

        glEnd();
    }
}
于 2013-07-23T20:22:32.120 に答える