diff options
author | Gaia Clary <gaia.clary@machinimatrix.org> | 2016-06-14 14:08:42 +0300 |
---|---|---|
committer | Gaia Clary <gaia.clary@machinimatrix.org> | 2016-06-14 14:09:10 +0300 |
commit | a47937454c995c54edce8a11c65ae24272198eaa (patch) | |
tree | 637feb1e0ac28ee8eb5a206e504e1b9c5a537d7a /source | |
parent | 6d111a233cd65433564ffb106bb9e0c6f34939e8 (diff) |
fix T48602: Changed The Collada validator to treat faces with < 3 verts as Warning and let the Mesh Validator take care of the cleanup
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/collada/MeshImporter.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index 3adddddb8e7..6085b66a8b8 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -271,38 +271,41 @@ bool MeshImporter::is_nice_mesh(COLLADAFW::Mesh *mesh) // checks if mesh has su COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); const std::string &name = bc_get_dae_name(mesh); - int hole_count = 0; for (unsigned i = 0; i < prim_arr.getCount(); i++) { - + COLLADAFW::MeshPrimitive *mp = prim_arr[i]; COLLADAFW::MeshPrimitive::PrimitiveType type = mp->getPrimitiveType(); const char *type_str = bc_primTypeToStr(type); - + // OpenCollada passes POLYGONS type for <polylist> if (type == COLLADAFW::MeshPrimitive::POLYLIST || type == COLLADAFW::MeshPrimitive::POLYGONS) { COLLADAFW::Polygons *mpvc = (COLLADAFW::Polygons *)mp; COLLADAFW::Polygons::VertexCountArray& vca = mpvc->getGroupedVerticesVertexCountArray(); - + + int hole_count = 0; + int nonface_count = 0; + for (unsigned int j = 0; j < vca.getCount(); j++) { int count = vca[j]; if (abs(count) < 3) { - fprintf(stderr, "ERROR: Primitive %s in %s has at least one face with vertex count < 3\n", - type_str, name.c_str()); - return false; + nonface_count++; } - if (count < 0) - { + + if (count < 0) { hole_count ++; } } - if (hole_count > 0) - { + if (hole_count > 0) { fprintf(stderr, "WARNING: Primitive %s in %s: %d holes not imported (unsupported)\n", type_str, name.c_str(), hole_count); } + + if (nonface_count > 0) { + fprintf(stderr, "WARNING: Primitive %s in %s: %d faces with vertex count < 3 (rejected)\n", type_str, name.c_str(), nonface_count); + } } else if (type == COLLADAFW::MeshPrimitive::LINES) { |