Я использую текстурированный образец загрузки 3d-модели, предоставленный в образце кода ASSIMP . Тем не менее, для некоторых моделей, он, кажется, не имеет доступа к вершине модели и нормально к ней. Вот скриншот неправильно загруженной модели:
Пока модель должна быть похожа на следующий скриншот:
На первом изображении крыша здания размещена в центре верхней части вида спереди. Пол отсутствует. Я предполагаю, что эта проблема вызвана неправильным доступом к позициям вершин и нормалей (CMIIW). Ниже приведен фрагмент, используемый для доступа как к позиции вершины, так и к нормальной:
glBegin(face_mode);
for(i = 0; i < face->mNumIndices; i++){
int vertexIndex = face->mIndices[i]; // get group index for current index
if(mesh->mColors[0] != NULL)
Color4f(&mesh->mColors[0][vertexIndex]);
if(mesh->mNormals != NULL)
if(mesh->HasTextureCoords(0)){
glTexCoord2f(mesh->mTextureCoords[0][vertexIndex].x, mesh->mTextureCoords[0][vertexIndex].y);
}
glNormal3fv(&mesh->mNormals[vertexIndex].x);
glVertex3fv(&mesh->mVertices[vertexIndex].x);
}
glEnd();
Как мы можем правильно получить доступ к вершинам и нормам модели?