Създадох свой собствен клас на моделите, за да го открияпроцес на импортиране на модел в 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);
Отговори:
0 за отговор № 1Излиза, че трябваше да добавя флага:
aiProcess_JoinIdenticalVertices
Това идентифицира и се присъединява към идентични набори от върхови данни във всички импортирани отвори.