/ / Assimp неправилно внася индексите на OBJ? - c ++, opengl, индекси, assimp, wavefront

Assimp неправилно внася индексите на OBJ? - c ++, opengl, индекси, assimp, wavefront

Създадох свой собствен клас на моделите, за да го открияпроцес на импортиране на модел в 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

Това идентифицира и се присъединява към идентични набори от върхови данни във всички импортирани отвори.