diff --git a/ArchitectureColoredPainting/src/Renderer/Model.cpp b/ArchitectureColoredPainting/src/Renderer/Model.cpp index 6b0663a..ef56a08 100644 --- a/ArchitectureColoredPainting/src/Renderer/Model.cpp +++ b/ArchitectureColoredPainting/src/Renderer/Model.cpp @@ -135,10 +135,12 @@ std::unique_ptr Model::processMesh(aiMesh* mesh, const aiScene* scene, std::vector vertices; for (unsigned int i = 0; i < mesh->mNumVertices; i++) { - if (mesh->mNormals && mesh->mTextureCoords[0]) + if (mesh->mNormals) { auto pos = mesh->mVertices[i]; - vertices.push_back(Vertex(pos, mesh->mNormals[i], mesh->mTextureCoords[0][i])); + aiVector3D textureCoords; + if (mesh->mTextureCoords[0]) textureCoords = mesh->mTextureCoords[0][i]; + vertices.push_back(Vertex(pos, mesh->mNormals[i], textureCoords)); auto worldPos = model * pos; minPos = glm::min(minPos, glm::vec3(worldPos.x, worldPos.y, worldPos.z)); maxPos = glm::max(maxPos, glm::vec3(worldPos.x, worldPos.y, worldPos.z)); @@ -149,6 +151,9 @@ std::unique_ptr Model::processMesh(aiMesh* mesh, const aiScene* scene, for (auto face = mesh->mFaces; face < mesh->mFaces + mesh->mNumFaces; face++) indices.insert(indices.end(), face->mIndices, face->mIndices + face->mNumIndices); + if (vertices.empty() || indices.empty()) + return nullptr; + aiMaterial* material = scene->mMaterials[mesh->mMaterialIndex]; if (auto iter = paintingMap.find([&] {