From 959a717d914c27d9b3f3030730bf4360ac3dcf1a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 2 May 2012 23:36:34 +0000 Subject: Fix #31250, #31248: wrong vertex normals after transform apply, collada import, sculpt shape key switch. All cases that called this function needed parameter only_face_normals set to false, so changed it now. Also fixed wrong user count for imported mesh from collada and simplified previous fix for tesselated faces to polygons conversion. --- source/blender/collada/MeshImporter.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'source/blender/collada/MeshImporter.cpp') diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index d6cc35deca7..3fbd33bdd0b 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -727,16 +727,6 @@ bool MeshImporter::flat_face(unsigned int *nind, COLLADAFW::MeshVertexData& nor, MeshImporter::MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce) : unitconverter(unitconv), scene(sce), armature_importer(arm) {} -void MeshImporter::bmeshConversion() -{ - for (std::map::iterator m = uid_mesh_map.begin(); - m != uid_mesh_map.end(); ++m) - { - if ((*m).second) BKE_mesh_convert_mfaces_to_mpolys((*m).second); - } -} - - Object *MeshImporter::get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid) { if (uid_object_map.find(geom_uid) != uid_object_map.end()) @@ -958,6 +948,7 @@ bool MeshImporter::write_geometry(const COLLADAFW::Geometry* geom) const std::string& str_geom_id = mesh->getName().size() ? mesh->getName() : mesh->getOriginalId(); Mesh *me = add_mesh((char*)str_geom_id.c_str()); + me->id.us--; // is already 1 here, but will be set later in set_mesh // store the Mesh pointer to link it later with an Object this->uid_mesh_map[mesh->getUniqueId()] = me; @@ -972,6 +963,9 @@ bool MeshImporter::write_geometry(const COLLADAFW::Geometry* geom) make_edges(me, 0); + BKE_mesh_convert_mfaces_to_mpolys(me); + BKE_mesh_tessface_clear(me); + mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL); return true; -- cgit v1.2.3